GNU/Linux >> Znalost Linux >  >> Linux

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

Řešení 1:

Pokud máte to štěstí, že používáte distribuci založenou na debianu, apt-get install dnotify . Ostatní distribuce mají pravděpodobně něco podobného - hledejte dnotify jméno.

dnotify je jednoduchý program založený na linuxovém jádře 2.4.19+ s dnotify API.dnotify může provést zadaný příkaz pokaždé, když se změní obsah konkrétního adresáře. Spouští se z příkazové řádky a má dva argumenty:jeden nebo více adresářů ke sledování a příkaz, který se má provést při každé změně adresáře. Možnosti určují, jaké události se mají spouštět:když byl soubor v adresáři načten, kdy byl vytvořen, smazán atd.

Pokud to chcete zvládnout v rámci svého vlastního programu, dnotify je také API, které chcete použít.

Řešení 2:

Můžete spustit skript pomocí inotify-tools, něco takového. Bude v adresáři sledovat změny v upravených souborech, nových souborech a smazaných souborech a poté skript spustí.

#!/bin/sh
while inotifywait -e modify -e create -e delete /home/me/code; do
    rsync [options] /home/me/code/ /media/nfs/code/ 
done

Řešení 3:

incron je v podstatě to, co chcete, myslím. Používá inotify jako oznamovací mechanismus (který, jak jiní zdůraznili, nahrazuje dnotify), ale nevyžaduje skript, který by se neustále spouštěl pomocí inotifywait nebo podobně (ačkoli démon incron samozřejmě běží neustále). Systémové 'crontabs' a uživatelské 'crontabs' jsou podporovány podobným způsobem jako standardní cron, ale místo zadávání časů jako spouštěčů se používají události inotify a názvy souborů/adresářů.

incron je zabalen pro mnoho distribucí, včetně Ubuntu a Debianu, věřím.


Linux
  1. Jak spustit skript shellu, když se změní soubor nebo adresář?

  2. Jak spustit python skript na terminálu (ubuntu)?

  3. Jak spustit skript na pozadí (linux openwrt)?

  1. Jak najít nejstarší soubor ve stromu adresářů v Linuxu

  2. Jak spustit příkaz, když se aktualizuje obsah adresáře?

  3. Linux – Jak spustit skript na obrazovce uzamčení/odemknutí?

  1. Jak spustit příkazy bash Linuxu ve skriptu PERL?

  2. Linux – Jak lze zkontrolovat informace o struktuře adresářů souboru Unix/linux?

  3. linux:jak spustit příkaz v daném adresáři