abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
eParkomat, startup z ČR, postoupil mezi finalisty evropského akcelerátoru ChallengeUp!
Robot na pivo mu otevřel dveře k opravdovému byznysu
Internet věcí: Propojený svět? Už se to blíží...
dnes 11:44 | Zajímavý projekt

Na Indiegogo byla spuštěna kampaň na podporu herní mini konzole a multimediálního centra RetroEngine Sigma od Doyodo. Předobjednat ji lze již od 49 dolarů. Požadovaná částka 20 000 dolarů byla překonána již 6 krát. Majitelé mini konzole si budou moci zahrát hry pro Atari VCS 2600, Sega Genesis nebo NES. Předinstalováno bude multimediální centrum Kodi.

Ladislav Hagara | Komentářů: 0
dnes 00:10 | Nová verze

Byla vydána verze 4.7 redakčního systému WordPress. Kódové označením Vaughan bylo vybráno na počest americké jazzové zpěvačky Sarah "Sassy" Vaughan. Z novinek lze zmínit například novou výchozí šablonu Twenty Seventeen, náhledy pdf souborů nebo WordPress REST API.

Ladislav Hagara | Komentářů: 0
včera 12:00 | Zajímavý projekt

Projekt Termbox umožňuje vyzkoušet si linuxové distribuce Ubuntu, Debian, Fedora, CentOS a Arch Linux ve webovém prohlížeči. Řešení je postaveno na projektu HyperContainer. Podrobnosti v často kladených dotazech (FAQ). Zdrojové kódy jsou k dispozici na GitHubu [reddit].

Ladislav Hagara | Komentářů: 23
včera 11:00 | Bezpečnostní upozornění

Byly zveřejněny informace o bezpečnostní chybě CVE-2016-8655 v Linuxu zneužitelné k lokální eskalaci práv. Chyba se dostala do linuxového jádra v srpnu 2011. V upstreamu byla opravena minulý týden [Hacker News].

Ladislav Hagara | Komentářů: 2
5.12. 22:00 | Komunita

Přibližně před měsícem bylo oznámeno, že linuxová distribuce SUSE Linux Enterprise Server (SLES) běží nově také Raspberry Pi 3 (dokumentace). Obraz verze 12 SP2 pro Raspberry Pi 3 je ke stažení zdarma. Pro registrované jsou po dobu jednoho roku zdarma také aktualizace. Dnes bylo oznámeno, že pro Raspberry Pi 3 je k dispozici také nové openSUSE Leap 42.2 (zprávička). K dispozici je hned několik obrazů.

Ladislav Hagara | Komentářů: 6
5.12. 06:00 | Zajímavý software

OMG! Ubuntu! představuje emulátor terminálu Hyper (GitHub) postavený na webových technologiích (HTML, CSS a JavaScript). V diskusi k článku je zmíněn podobný emulátor terminálu Black Screen. Hyper i Black Screen používají framework Electron, stejně jako editor Atom nebo vývojové prostředí Visual Studio Code.

Ladislav Hagara | Komentářů: 50
5.12. 06:00 | Zajímavý článek

I letos vychází řada ajťáckých adventních kalendářů. QEMU Advent Calendar 2016 přináší každý den nový obraz disku pro QEMU. Programátoři se mohou potrápit při řešení úloh z kalendáře Advent of Code 2016. Kalendáře Perl Advent Calendar 2016 a Perl 6 Advent Calendar přinášejí každý den zajímavé informace o programovacím jazyce Perl. Stranou nezůstává ani programovací jazyk Go.

Ladislav Hagara | Komentářů: 10
3.12. 16:24 | Nová verze

Byla vydána Mageia 5.1. Jedná se o první opravné vydání verze 5, jež vyšla v červnu loňského roku (zprávička). Uživatelům verze 5 nepřináší opravné vydání nic nového, samozřejmě pokud pravidelně aktualizují. Vydání obsahuje všechny aktualizace za posledního téměř půldruhého roku. Mageia 5.1 obsahuje LibreOffice 4.4.7, Linux 4.4.32, KDE4 4.14.5 nebo GNOME 3.14.3.

Ladislav Hagara | Komentářů: 17
3.12. 13:42 | Pozvánky

V Praze probíhá konference Internet a Technologie 16.2, volné pokračování jarní konference sdružení CZ.NIC. Konferenci lze sledovat online na YouTube. K dispozici je také archiv předchozích konferencí.

Ladislav Hagara | Komentářů: 0
2.12. 22:44 | Komunita

Joinup informuje, že Mnichov používá open source groupware Kolab. V srpnu byl dokončen dvouletý přechod na toto řešení. V provozu je asi 60 000 poštovních schránek. Nejenom Kolabu se věnoval Georg Greve ve své přednášce Open Source: the future for the European institutions (SlideShare) na konferenci DIGITEC 2016, jež proběhla v úterý 29. listopadu v Bruselu. Videozáznam přednášek z hlavního sálu je ke zhlédnutí na Livestreamu.

Ladislav Hagara | Komentářů: 26
Kolik máte dat ve svém domovském adresáři na svém primárním osobním počítači?
 (32%)
 (24%)
 (29%)
 (8%)
 (5%)
 (3%)
Celkem 781 hlasů
 Komentářů: 50, poslední 29.11. 15:50
Rozcestník
Reklama

Dotaz: skript pro praci s davkou mnoha malych souboru

12.2.2008 23:15 Tomáš Skočdopole | skóre: 13
skript pro praci s davkou mnoha malych souboru
Přečteno: 417×
Ahoj,

tvořím skritp pro zpracování mnoha (500 000) malých souborů, které jsou uloženy v různých sub-adresářích na disku. Celkem zabírají cca 30MB. Skript provádí operace cat, sed, tail, mv, rm, grep... Trvá celkem dlouho, než skript přechroustá všechny soubory.

Napadlo mě vytvořit RAM disk, do kterého by se zkopírovaly vstupní soubory a pak by se všechny operace prováděly nad těmi soubory z RAM disku. Výsledné soubory by se pak pouze nakopírovaly na HDD a RAM disk by se zrušil.

Chci se poradit jestli to tak je možné udělat, případně jakým způsobem se toto řeší.

Děkuji za rady!

Odpovědi

12.2.2008 23:30 Zdeněk Burda | skóre: 61 | blog: Zdendův blog | Praha
Rozbalit Rozbalit vše Re: skript pro praci s davkou mnoha malych souboru
Vyprdni se na cat, sed, tail, mv, rm, grep... a naprogramuj to například v perlu nebo pythonu, pak se ti nebude spouštět tolik programů (předpokládám že na zpracování jednoho souboru si spustíš i několik programů najednou) a tím se to velmi znatelně zrychlí.
-- Nezdar není hanbou, hanbou je strach z pokusu.
12.2.2008 23:43 Tomáš Skočdopole | skóre: 13
Rozbalit Rozbalit vše Re: skript pro praci s davkou mnoha malych souboru
Ja jsem ten skript potreboval udelat behem kratke doby. Ted mam sice vice casu,tak ho chci vylepsit, doladit drobnosti a tak... Bohuzel nemam tolik casu na to, abych se ucil perl nebo python...
13.2.2008 00:03 cronin | skóre: 48
Rozbalit Rozbalit vše Re: skript pro praci s davkou mnoha malych souboru
Vyprdni se na cat, sed, tail, mv, rm, grep... a naprogramuj to například v perlu nebo pythonu,
No ono sa to celkom lahko povie, ked ten perl/python/whatever ovladas. Sam robim s unixovskymi os uz dost dlho, ale nikdy som sa ziadny skriptovaci jazyk okrem shell-u nenaucil, pretoze som to jednoducho nepotreboval. Zaklady perlu, ktore mam, su tak male, ze by som sa ani jednoduchu ulohu nepustil riesit v perle. Naproti tomu, v shelli som uz naskriptoval toho vela, vcetne netrivialneho continuous integration systemu, samorozbalovacich instalatorov a pod.

Ako sa vravi: ked mas len kladivo, vsetko vyzera ako klinec. :-)
12.2.2008 23:55 cronin | skóre: 48
Rozbalit Rozbalit vše Re: skript pro praci s davkou mnoha malych souboru
Ahoj,

riesit performance problemy vzdy vyzaduje specificky pristup. Presne podmienky poznas len Ty a asi jedine Ty si schopny najst riesenie.

Najprv odpoved na Tvoju otazku: ano, je to mozne, a ak je problemom pomaly pristup k suborom na disku pocas vykonavania skriptu a ak zrychlenie, ktore prinesie umiestnenie suborov na ramdisk, vyvazi potrebu ich kopirovania tam a nazad. Niekto by mohol argumentovat, ze aj bez pouzitia ramdisku sa pouziva diskova cache, ale ultimativnu odpoved ziskas, len ak to skusis. Ja som nieco podobne robil pre kompilovanie jedneho projektu. Namiesto pouzitia normalneho perzistentneho adresara sa urobil adresar v adresari /tmp a pouzil sa symlink na tento adresar. Bolo to pod Solarisom, kde /tmp je swap-backed fs, takze subory sa drzia v pamati, kym nejaka je, inak idu do swapu (no a kedze tam bolo 16GB RAM, tak pamate zvycajne bolo dost). Trochu to komplikovalo buildovacie skripty, ale zrychlenie bolo tak vyznamne, ze za to jednoznacne stalo. Rozdiel oproti Tvojmu pripadu je ten, ze v mojom pripade sa ziadne subory na disk nikdy nedostali (ibazeby sa pouzil swap backend toho /tmp); jednoducho sa checkoutli z VCS do RAM, tam sa zbuildovali, maximalne sa niekde perzistente umiestnil vysledok.

Akokolvek, najprv by bolo dobre zistit, co sposobuje tak pomaly beh Tvojho skriptu. Mozno je to - ako predpokladas - pristup na disk, mozno je to spustanie velkeho mnozstva procesov (v skripte celkom bezne). Aj tu mozem ponuknut priklad: raz davno som potreboval zistit, ci sa v priblizne 200-300 riadkovom subore nejaky riadok neopakuje. Vtedy som nepoznal prikaz uniq(1) ani -u prepinac pre sort(1), tak som si urobil skript, ktory bral riadok po riadku zo suboru (a urcite to nerobil pomocou read, ale asi pomocou tail a head), a pre kazdy riadok presiel vsetky riadky za nim nasledujuce a zistoval, ci sa nerovnaju aktualnemu riadku. Tych 200-300 riadkov skontroloval za cca 30 sekund. S pouzitim sort -u je to samozrejme za "nemeratelne" kratky cas. Skus prepisat skript tak, aby sa spustalo menej procesov. Napr. namiesto pouzitia -exec v prikaze find sa da casto pouzit xargs, spracovavaj subory/zaznamy davkovo, kde je to mozne. Prestuduj si manualy pouzivanych nastrojov ako napr. grep, mozno objavis nieco uzitocne.

Kazdopadne, akykolvek performance problem treba riesit identifikovanim najpomalsieho miesta.
13.2.2008 10:07 Ash | skóre: 53
Rozbalit Rozbalit vše Re: skript pro praci s davkou mnoha malych souboru
... sloučit víc procesů které (možná) jsou za sebou v pipeline, to je asi nejčastější "prohřešek", cat je potřeba velmi velmi zřídka, grep před sedem asi nikdy, uniq za sort jen ojediněle a pod. Co nejvíc využívat možnosti bashe foo=$(<file) foo=${boo%% *} atd.
13.2.2008 10:09 Ash | skóre: 53
Rozbalit Rozbalit vše Re: skript pro praci s davkou mnoha malych souboru
A dosti podstatné -- pokud se hodně zpracovává text v ne-multibyte kódování, tak používat globálně nebo před příkazy LANG=C, ony ty mb_* rutiny mají takový háček takže je to s nimi často řádově pomalejší.
13.2.2008 13:56 Tomáš Skočdopole | skóre: 13
Rozbalit Rozbalit vše Re: skript pro praci s davkou mnoha malych souboru
dekuji za odpoved, zase jsem o neco chytrejsi :)

Tak ja to zkusim zatim s tim RAM diskem a uvidim...
13.2.2008 11:52 Baba Jaga
Rozbalit Rozbalit vše Re: skript pro praci s davkou mnoha malych souboru
Hmmm, Linux Ramdisk mini-HOWTO je na http://www.vanemery.com/Linux/Ramdisk/ramdisk.html .

Na openSUSE 10.2 /dev/ram* mam:
> uname -r
2.6.18.8-0.9-xen
> dmesg | grep RAMDISK
RAMDISK driver initialized: 16 RAM disks of 128000K size 1024 blocksize
ale na openSUSE 10.3 s jadrem 2.6.22.17-0.1-default uz ne. Vi nekdo, jak se tam pracuje s ramdiskem?
13.2.2008 15:06 happy barney | skóre: 34 | blog: dont_worry_be_happy
Rozbalit Rozbalit vše Re: skript pro praci s davkou mnoha malych souboru
použi /dev/shm
13.2.2008 15:51 Baba Jaga
Rozbalit Rozbalit vše Re: skript pro praci s davkou mnoha malych souboru
Jak? V /dev/shm je na openSUSE spousta veci:
> ls -laR /dev/shm
/dev/shm:
total 0
drwxrwxrwt  3 root root   60 2008-02-13 09:05 .
drwxr-xr-x 11 root root 7200 2008-02-13 09:05 ..
drwxr-xr-x  3 root root  360 2008-02-13 09:05 sysconfig

/dev/shm/sysconfig:
total 48
drwxr-xr-x 3 root root 360 2008-02-13 09:05 .
drwxrwxrwt 3 root root  60 2008-02-13 09:05 ..
-rw-r--r-- 1 root root   5 2008-02-13 09:05 config-eth0
-rw-r--r-- 1 root root   5 2008-02-13 09:05 config-eth1
-rw-r--r-- 1 root root   3 2008-02-13 09:05 config-lo
-rw-r--r-- 1 root root  29 2008-02-13 09:05 if-eth0
-rw-r--r-- 1 root root  29 2008-02-13 09:05 if-eth1
-rw-r--r-- 1 root root  27 2008-02-13 09:05 if-lo
-rw-r--r-- 1 root root   7 2008-02-13 09:05 ifup-eth0
-rw-r--r-- 1 root root   7 2008-02-13 09:05 ifup-eth1
-rw-r--r-- 1 root root   7 2008-02-13 09:05 ifup-lo
-rw-r--r-- 1 root root  11 2008-02-13 09:05 network
-rw-r--r-- 1 root root   8 2008-02-13 09:05 new-stamp-2
-rw-r--r-- 1 root root   8 2008-02-13 09:05 new-stamp-3
-rw-r--r-- 1 root root   0 2008-02-13 09:05 ready-eth0
-rw-r--r-- 1 root root   0 2008-02-13 09:05 ready-eth1
-rw-r--r-- 1 root root   0 2008-02-13 09:05 ready-lo
drwxr-xr-x 2 root root  60 2008-02-13 09:05 tmp

/dev/shm/sysconfig/tmp:
total 0
drwxr-xr-x 2 root root  60 2008-02-13 09:05 .
drwxr-xr-x 3 root root 360 2008-02-13 09:05 ..
-rw-r--r-- 1 root root   0 2008-02-13 09:05 test
13.2.2008 16:11 happy barney | skóre: 34 | blog: dont_worry_be_happy
Rozbalit Rozbalit vše Re: skript pro praci s davkou mnoha malych souboru
napr: mkdir /dev/shm/cache$$

viac info: google

13.2.2008 15:17 Tomáš Skočdopole | skóre: 13
Rozbalit Rozbalit vše Re: skript pro praci s davkou mnoha malych souboru
No tak jsem to zkousel to mini-HOWTO... Na mém ubuntu se vytvoří ramdisk o velikosti cca 60 MB. Což pro mých 30MB souborů stačí.

Chtěl jsem se zeptat, jakým způsobem lze specifikovat vlastní velikost ramdisku. Pokud bych někdy potřeboval větší prostor... Tam to bylo řešené pomocí parametru jádra v grubu + restart systému.

Jiná možnost není?
23.2.2008 13:00 jazz | skóre: 8 | blog: prostě... tak | třeba Praha
Rozbalit Rozbalit vše Re: skript pro praci s davkou mnoha malych souboru
Ja treba po vzoru Solarisu pozivam prostor /tmp jako souborovy system tmpfs (viz /dev/shm).

V /etc/fstab mam:
# fs   mountpoint  type   opts                     dump/pass
tmpfs  /tmp        tmpfs  defaults,size=1G,noatime     0 0
Samozrejme zmenou mountpointu muzete vytvorit jiny svazek. Vyhoda reseni je, ze pristup je rychly (v mem pripade /tmp je pouzivan pouze scripty pro zpracovani vetsiho mnozstvi dat - ulozeni opravdu docasnych souboru, ulozeni socketu), nepouziva se diskova cache a definovana velikost neni rezervace (v pameti zabira tolik mista, kolik je ulozeno dat). Jak jiz bylo napsano, pokud nemate dost pameti, bude se swapovat.
To, že jsem paranoidní ještě neznamená, ze po mně nikdo nejde...

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267   www.czech-server.cz
© 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.