GNU/Linux >> Znalost Linux >  >> Linux

Spustit skript/program při změně souboru

jednou z vašich možností je subsystém inotify linuxového jádra:

inotify je linuxový kernelový subsystém, který rozšiřuje souborové systémy tak, aby zaznamenaly změny v souborovém systému a hlásily tyto změny aplikacím

ale od inotify je kernel-land, potřebujete něco v uživatelském prostoru, abyste jej mohli skutečně používat:

  • Inchron:

Démon inotify cron (incrond) je démon, který monitoruje události souborového systému a provádí příkazy definované v systémových a uživatelských tabulkách. Jeho použití je obecně podobné cron(8).

  • hra:

Gamin je monitorovací systém pro soubory a adresáře, který nezávisle implementuje podmnožinu FAM, File Alteration Monitor. Funguje jako služba a umožňuje zjišťovat změny v souboru nebo adresáři. gam_server funguje jako démon pro Gamin.

  • 'inoticcoming':

inoticoming – spustí akce, když soubory narazí na příchozí adresář

na askubuntu byla odpověď na podobnou otázku:

https://askubuntu.com/a/43848/1223


Další rychlý a špinavý způsob, jak toho dosáhnout, je použít inotifywait z balíčku inotify-tools (na fedoře).

Líbí se mi tato metoda lépe, protože to vše můžete udělat z jediného příkazového řádku bash. Často to používám, když píšu malé programy, abych viděl výsledky toho, co jsem právě uložil.

while [[ 1 ]]; do inotifywait -e modify <filename>; make && ./helloworld; done

Linux
  1. Jak mohu zkontrolovat, zda soubor existuje, a provést příkaz, pokud ne?

  2. sledování změn souborů c++ linux

  3. Jak spustit soubor bez přípony .sh v shellu

  1. Jak provést příkaz při každé změně souboru?

  2. Jak spustit shellscript, když připojím USB zařízení

  3. shebang nebo ne shebang

  1. Je možné zjistit, jaký program nebo skript vytvořil daný soubor?

  2. Proč se hodnota Inode mění, když provádíme úpravy v editoru „vi“?

  3. Jak automaticky spustit skript, když se v Linuxu změní obsah adresáře?