Portál AbcLinuxu, 4. května 2025 04:34
V rámci průběžného testování systému incron mám na počítači trvale spuštěn démon incrond
. Tabulka obsahuje pravidla, která monitorují přístup k souborům v adresářích /bin
, /sbin
, /usr/bin
a /usr/sbin
. Je zajímavé pozorovat, jaké programy se bezděčně spouští.
Unixovská filosofie, jak známo, říká, že by mělo být mnoho malých jednoúčelových programů. A realita v GNU/Linuxu skutečně vypadá tak, že si mnohé větší aplikace spouští pro své účely spoustu malých prográmků. Je to opravdu správná cesta?
Většinou se v takových případech objevují stále tytéž nástroje. Podívejme se, které programy patří k těm notoricky spouštěným:
file
- program ke zjištění (spíše "odhadu") typu souboruid
- zjišťuje reálné a efektivní UID a GIDiconv
- převod mezi různými druhy kódování texturm
- mazání souborůmktemp
- vytváření dočasných souborůgunzip
- rozbalování souborů komprimovaných pomocí GZIP
Podobně často se spouští ještě řada dalších programů. Například u programu file
to naprosto chápu - jeho význam je nezpochybnitelný (a nelze ho v podstatě nijak nahradit). Ale čemu nerozumím, je spouštění takových programů, které mají buď své obdoby ve formě knihovních funkcí (např. zmíněný gunzip
, iconv
apod.), nebo dokonce funkcí ve standardní knihovně GNU C (rm
, mktemp
a mnohé další). Zvláštní kapitolou jsou programy, které spouští (nebo otvírají ke čtení) samy sebe - některé jen několikrát (např. OpenOffice.org, KEdit), ale některé i mnohokrát (KWrite někdy i víc než 40x).
Nemohu si neklást otázku, proč to tvůrci různých programů (např. man
, Midnight Commander, Mozilla, Cinelerra a mnohých jiných) vlastně dělají. Jaké výhody přináší to, že se místo zavolání knihovní funkce spouští samostatný program? Rozumím tomu, když taková funkce neexistuje - pak není nic jednoduššího, než si spustit potřebný program. Chápu také případy, že je třeba knihovna pod licencí nekompatibilní s příslušným programem. Ale ve výše uvedených případech se o nic takového nejedná.
Je důležité o tomto začít hovořit, a to hlavně kvůli problematice výkonu/rychlosti. Spuštění malého prográmku je sice záležitost maximálně stovek milisekund. Jenže to jsou leckdy právě ta malá zpoždění, která dokáží uživatele pořádně otrávit a ten pak říká, jak je ten Linux pomalý. Proto si myslím, že je na čase přezkoumat často používané programy a odstranit z nich spouštění utilit ve všech případech, kdy je takové řešení zbytečné a lze nahradit prostým voláním funkcí. Odměnou za toto nepříliš velké úsilí by bylo celkové zrychlení systému a eliminace části stížností na nízký výkon (které jsou v tomto případě zcela oprávněné).
Tiskni
Sdílej:
file
má obdobu ve formě funkce, nebo ne (libmagic)?
file
nedělá o něco víc než jen analýzu podle souboru magic
.
file
is
now split (thanks to upstream changes) into libmagic and file
(as a tiny
wrapper executable around the library)"
Príklad: web-browser. Môže fungovať aj bez prítomnosti napr gunzip či libz.
Hranica či áno alebo nie, tá je iná ako 1/0.
This program is the "inotify cron" system. It consist of a daemon and a table manipulator. You can use it a similar way as the regular cron. The difference is that the inotify cron handles filesystem events rather than time periods.LOL. Bezvadně zvolené jméno
Dobré jitro!Přesně to jsem měl namysli. Ostatně nejdůležitější je, že jste s ním spokojen vy
kwrite
je mi pořádnou záhadou. Tím spíš, že se to stane jen někdy.
kdyz aplikace spousti sebe sama tak to nebude zase tak hruza, protoze uz jednou v pameti je takze vetsina veci se nebude nacitat a bude bezet v rezimu copyonwrite.To sice ano, ale mě to zajímá čistě z principu, proč se tak děje.
use Class::Date qw(date); my $o_den_pozdeji = date ('2006-11-08 12:03:00') + '1D'; print $o_den_pozdeji, "\n";
SIGCHLD
, ale SIGCLD
lze použít též.
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.