Portál AbcLinuxu, 2. května 2025 10:39
incron
má ovládání velice podobné cronu
, což je sice výhoda, ale někomu se může silně zajídat. I mně se to zajídá, některé věci si raději naklikám. Proto jsem k incronu vytvořil i jednoduchý grafický front-end, který je již pár dní k dispozici pod GPL. Ale pozor - odpůrci Javy mají smůlu.
Kdo četl mé dřívější zápisy (třeba tento, tento a tento), bude už incron znát. Ve stručnosti je to systém podobný cronu, který prostřednictvím technologie inotify
umožňuje čekat na události v souborovém systému a spouštět podle nich různé programy.
incron jsem navrhl tak, aby se jeho vlastnosti hodně blížily cronu, a aby tedy bylo podobné i ovládání. Pravidla jsou uložena v tabulkách pro jednotlivé uživatele (včetně "systémový účtů", tedy uživatelů bez normálního domovského adresáře - např. postfix
nebo apache
). S tabulkami se manipuluje pomocí konzolové utility incrontab, která umožňuje mj. vypsat tabulku, editovat ji ve vim
u nebo jiném editoru, nebo ji načíst ze souboru. V každém případě se jedná o ruční práci, vyžadující vypisování všeho potřebného a v neposlední řadě také znalost přesných názvů jednotlivých symbolů.
incrontab funguje tak, že tabulku poskytnutou uživatelem parsuje, a co se mu nelíbí (např. špatný formát pravidla), zahodí. Do systému se tedy uloží již čistá, bezchybná tabulka. To ale samozřejmě může být frustrující, protože při takové chybě uživatel o pravidlo přijde. Právě toto a také obecná lenost editovat tabulky mě vedla k tomu, abych si to nějak zjednodušil.
Vznikl tedy program jIncron
. Je to velice primitivní grafický front-end, napsaný, jak již název napovídá, v Javě. Využívá GUI Swing a pro svoji funkci potřebuje Javu verze alespoň 5.0 (JDK 1.5.0). Javu jsem zvolil proto, že to bylo z mého pohledu nejrychlejší, a to i přes ryze ruční tvobu GUI (žádný grafický návrhář).
Program po spuštění načte (pomocí utility incrontab
) tabulku aktuálního uživatele (lze ji též naimportovat ze souboru), umožňuje ji snadno upravovat, pak uložit zpět nebo vyexportovat do souboru. Hlavní okno zobrazuje tabulku zhruba v podobě, v jaké je vidět v editoru.
Hlavní síla spočívá v dialogu vlastností pravidla. Tam si lze naklikat cestu k souboru (přes souborový dialog), jednotlivé sledované události (v checkboxech) a příkaz ke spuštění (jsou tu tlačítka pro speciální symboly). Celé by to mělo být relativně blbuvzdorné. Konfigurace programu (v tuto chvíli jen pozice a velikost hlavního okna) se ukládá do XML souboru v domovském adresáři.
Program zatím trpí několika vadami. Největší je ta, že nerozlišuje, které události systém podporuje. Tváří se tedy, že podporuje všechny, což je pravda třeba na FC 6, ale na starších distribucích nastane problém (vyústící ve změnu některých pravidel). Další vadou je, že je to všechno šité pořádně horkou jehlou a leccos je implementováno těžkopádně. A konečně třetí chyba, kód není vůbec okomentovaný a k programu neexistuje ani sebemenší dokumentace.
Proto tedy, kdo chce, ať používá, kdo nechce, nemusí. A kdo by si chtěl napsat GUI třeba v GTK+ nebo Qt, má aspoň inspiraci.
Aktuální verze je 0.3.4, postavená na inotify-cxx
0.6.2. Předchozí verze 0.3.3 měla opravit bezpečnostní chybu ohledně práv skupiny - při tom ovšem došlo k tomu, že incrond přestal úplně fungovat. Kdo má tuto verzi, nechť si stáhne tu nejnovější. Totéž ať učiní i ten, kdo si nejnovější verzi stáhl již včera - do balíků se zatoulal soubor, který byl určen k testování a měl vypnutou démonizaci incrond. Za chybu se omlouvám.
Součástí dokumentace incronu jsou už nějakou dobu také man
stránky, zatím pouze v angličtině. Všechny projekty související s inotify dostanou (snad brzy) nový web, kde budou též informace o samotné technologii inotify. Pro blízkou budoucnost je hlavní prioritou zavedení rekurzivního monitoringu (sledování celých podstromů), které není na úrovni inotify podporováno.
inotify-cxx
od verze 0.6.0 obsahuje statické metody pro zjišťování a nastavování parametrů inotify v jádře. Není tedy nutno je zjišťovat/nastavovat krkolomně přes procfs, stačí volat tyto metody.
Tiskni
Sdílej:
/proc
(např. meminfo, devices...) se chovají tak, jak mají, pro adresáře procesů to neplatí. Takže vytvoření/zrušení procesu se tak sledovat nedá.
Je jen otázka, jestli je to chyba nebo vlastnost. Ale tak jako tak to nejspíš ohlásím.
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.