Fórum Ubuntu CZ/SK

Ubuntu pro osobní počítače => Software => Příkazový řádek a programování pro GNU/Linux => Téma založeno: ge0rge 28 Listopadu 2011, 12:53:03

Název: [bash][deamon/cron] jak monitorovat zmenu souboru
Přispěvatel: ge0rge 28 Listopadu 2011, 12:53:03
 do souboru mi vstupují ruzná data, potřebuji monitorovat změnu obsahu souboru, a kdykoliv se obsah změní (nejlépe podle md5 obsahu souboru, ale stačí i podle časové značky poslední úpravy) potřebuji spustit svůj program

jak toto průběžné sledování obsahu souboru mohu zprovoznit. Lze to provést jen s pomocí BASH a neustale beziciho skriptu ?

poradte prosim postup jak na to, dekuji vam
Název: Re:[bash][deamon/cron] jak monitorovat zmenu souboru
Přispěvatel: ntz_reloaded 28 Listopadu 2011, 13:04:09
to se dela pomoci **inotify .. balik se iirc jmenuje inotify-tools

jinak pomoci bashe to je jednoduchy:

Kód: [Vybrat]
while sleep $n; do
    $neco;
done

ale to je hloupej zpusob tohle pollovani
Název: Re:[bash][deamon/cron] jak monitorovat zmenu souboru
Přispěvatel: ge0rge 28 Listopadu 2011, 14:32:02
je mozne inotify s uspechem pouzit k monitorovani zmen souboru ktere plni zarizeni pripojene na seriovy port ? jedna se mi tedy o soubory /dev/ttyS#

zarizeni tam ulozi data a aplikace by je mela nejak zpracovat. Je pouziti inotify pro tento ucel vhodna cesta ?
Jeste jednou dekuji.
Název: Re:[bash][deamon/cron] jak monitorovat zmenu souboru
Přispěvatel: daysleeper 28 Listopadu 2011, 15:20:53
Pokud je vstup textový (tj. obsahující řádky končící znakem pro konec řádku '\n'), mohlo by stačit (vypisuje vstup po řádcích)
Kód: [Vybrat]
while read -u 3 line; do
  echo "$line"
done 3< /dev/ttyS0
Název: Re:[bash][deamon/cron] jak monitorovat zmenu souboru
Přispěvatel: ge0rge 29 Listopadu 2011, 10:00:30
velice dekuji za uzitecne odpovedi, presto v tom stale nemam zcela jasno.

mohu vlastni udalost navazanou na zmenu ve file systemu (**inotify) definovat v bashi nebo je k tomu nutne kompilovat program v jazyce c ?

potreboval bych spustit nejaky program, kdykoliv se soubor zmeni, mohu toto primo definovat v bash ?

Rad bych se vyhnul cyklum while, ktere jsou nejspis daleko narocnejsi na systemove prostredky nez zminene volani pres **inotify.
Název: Re:[bash][deamon/cron] jak monitorovat zmenu souboru
Přispěvatel: ntz_reloaded 29 Listopadu 2011, 10:22:51
http://www.ibm.com/developerworks/linux/library/l-ubuntu-inotify/
http://www.thegeekstuff.com/2010/04/inotify-c-program-example/
Název: Re:[bash][deamon/cron] jak monitorovat zmenu souboru
Přispěvatel: ge0rge 29 Listopadu 2011, 11:28:51
děkuji, našel jsem ještě tento zajímavý link který by mohl zajímat ty, kteří budou časem řešit podobný problém
http://inotify.aiken.cz/?section=incron&page=why&lang=cs
Název: Re:[bash][deamon/cron] jak monitorovat zmenu souboru
Přispěvatel: ntz_reloaded 29 Listopadu 2011, 11:29:39
take na rootu a abclinuxu jsou nejake pekne a kompetentni clanky v cestine ..
Název: Re:[bash][deamon/cron] jak monitorovat zmenu souboru
Přispěvatel: daysleeper 29 Listopadu 2011, 12:29:00
...
Rad bych se vyhnul cyklum while, ktere jsou nejspis daleko narocnejsi na systemove prostredky nez zminene volani pres **inotify.
inotify na úrovni kernelu má určitě menší režii než bash skript.

Na druhou stranu pokud přesměrováváš vstup do souboru, a používáš k tomu skript, takže ten už jednou běží, pak while není problém, protože to čeká na vstup pomocí read bash builtinu, což zase není nic jiného než systémové volání read, takže víceméně žádná extra režie navíc.