GNU/Linux >> Znalost Linux >  >> Linux

Jak spustit příkaz, jakmile se scrub ZFS *dokončí*?

Řešení 1:

Na ZFS Na Linuxu počínaje verzí 0.6.3 to lze celkem elegantně vyřešit pomocí ZFS Event Daemon (zed). Démon událostí může díky přímému monitorování událostí jádra reagovat téměř okamžitě na jakékoli události, které proběhnou, a nezávisí na neustálém dotazování a analýze výstupu nějakého jiného příkazu.

Vytvořte skript shellu s libovolným názvem souboru, který začíná 01 (například 19 ). Tento skript může provést jakoukoli vhodnou akci, jako je odeslání e-mailu, zapsání záznamu do protokolu nebo přimět systém, aby zpíval a tančil (OK, možná ne). Jsou uvedeny příklady, které mohou poskytnout výchozí bod.

Pokud vše, co chcete, je obdržet e-mail po dokončení čištění, zadáte 28 skript to udělá dobře. Jednoduše upravte /etc/zfs/zed.d/zed.rc, abyste uvedli, kam má být e-mail odeslán a zda by se měl e-mail odeslat i v případě, že fond nezaznamenává žádné problémy, ujistěte se, že něco s názvem 30 následuje cokoli v /etc/zfs/zed.d vede k tomu a ujistěte se, že je zed spuštěn při bootování.

Řešení 2:

Tento jednoduchý skript používám k čištění zpráv o stavu e-mailem.

  • zpadmin

Pokud potřebujete zjistit přechod z 4259 Zkontroloval bych 69 pole 76 výstup. Něco takového:

# start scrubbing 
zpool scrub ZPOOL

# wait till scrub is finished
while zpool status ZPOOL | grep 'scan:  *scrub in progress' > /dev/null; do
   echo -n '.'
   sleep 10
done

# send a report
zpool status | mail -s "zpool status: ZPOOL" RECIPIENT

Řešení 3:

I když je tato otázka specifická pro linux, je to první výsledek vyhledávání na Googlu při hledání „počkejte, až se scrub dokončí“ , proto bych rád přidal pár užitečných informací pro lidi, kteří používají OpenSolaris (testováno na OmniOS, ale SmartOS, illumos atd. by měly být podobné) místo Linuxu (normální Solaris by měl také fungovat, ale tam jsem to netestoval).

Můžete použít 84 k registraci událostí jádra. Kompletní seznam lze nalézt v 99 (stačí v tomto souboru vyhledat "ZFS"). Po přidání událostí je třeba službu restartovat, například:

syseventadm add -c EC_zfs -s ESC_ZFS_scrub_finish /path/to/script.sh \$pool_name
syseventadm restart

Tímto způsobem bude skript spuštěn, když skončí jakékoli čištění libovolného fondu - musíte ve skriptu zkontrolovat, zda 103 se rovná požadovanému názvu fondu. Přesto je to mnohem menší režie než průzkumy.

Řešení 4:

Se zfswatcher

jsem měl velký úspěch
Linux
  1. Jak spustit jeden příkaz na více vzdálených systémech najednou

  2. Jak spustit příkaz Vim z shellu?

  3. Jak správně spustit top příkaz přes SSH?

  1. Jak spustit příkaz jako správce systému (root)?

  2. Jak spustit příkaz uvnitř spuštěného kontejneru Systemd?

  3. Jak přejmenovat více souborů najednou v Linuxu

  1. Jak nastavit systém souborů ZFS v systému Linux pomocí příkladů příkazů zpool

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

  3. Jak mohu spustit příkaz po spuštění?