Prosíme přihlašte se nebo zaregistrujte.

Přihlašte se svým uživatelským jménem a heslem.
Vaše pomoc je stále potřeba!

Autor Téma: [bash][deamon/cron] jak monitorovat zmenu souboru  (Přečteno 2063 krát)

ge0rge

  • Návštěvník
  • Příspěvků: 12
[bash][deamon/cron] jak monitorovat zmenu souboru
« kdy: 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

ntz_reloaded

  • Lokaj
  • Závislák
  • ***
  • Příspěvků: 3735
  • skill :: ur home erly
Re:[bash][deamon/cron] jak monitorovat zmenu souboru
« Odpověď #1 kdy: 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
tikejte mi, taky Vam tikam ...
song of the day - openSUSE, openindiana, DuckDuckGo
The noise ain't noise anymore, who's to blame, WHO'S TO BLAME ??

ge0rge

  • Návštěvník
  • Příspěvků: 12
Re:[bash][deamon/cron] jak monitorovat zmenu souboru
« Odpověď #2 kdy: 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.

daysleeper

  • Stálý člen
  • **
  • Příspěvků: 1206
Re:[bash][deamon/cron] jak monitorovat zmenu souboru
« Odpověď #3 kdy: 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

ge0rge

  • Návštěvník
  • Příspěvků: 12
Re:[bash][deamon/cron] jak monitorovat zmenu souboru
« Odpověď #4 kdy: 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.

ntz_reloaded

  • Lokaj
  • Závislák
  • ***
  • Příspěvků: 3735
  • skill :: ur home erly
« Poslední změna: 29 Listopadu 2011, 10:24:28 od ntz_reloaded »
tikejte mi, taky Vam tikam ...
song of the day - openSUSE, openindiana, DuckDuckGo
The noise ain't noise anymore, who's to blame, WHO'S TO BLAME ??

ge0rge

  • Návštěvník
  • Příspěvků: 12
Re:[bash][deamon/cron] jak monitorovat zmenu souboru
« Odpověď #6 kdy: 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

ntz_reloaded

  • Lokaj
  • Závislák
  • ***
  • Příspěvků: 3735
  • skill :: ur home erly
Re:[bash][deamon/cron] jak monitorovat zmenu souboru
« Odpověď #7 kdy: 29 Listopadu 2011, 11:29:39 »
take na rootu a abclinuxu jsou nejake pekne a kompetentni clanky v cestine ..
tikejte mi, taky Vam tikam ...
song of the day - openSUSE, openindiana, DuckDuckGo
The noise ain't noise anymore, who's to blame, WHO'S TO BLAME ??

daysleeper

  • Stálý člen
  • **
  • Příspěvků: 1206
Re:[bash][deamon/cron] jak monitorovat zmenu souboru
« Odpověď #8 kdy: 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.

 

Provoz zaštiťuje spolek OpenAlt.