Otázka: Někdy chci často opakovat příkaz (nebo skript shellu) (každých několik sekund). Existuje lepší způsob, jak spustit unixový příkaz každých n sekund (místo ručního psaní stejného příkazu)?
Odpověď: Pomocí příkazu watch můžete provést příkaz a každých několik sekund zobrazit jeho výstup. To je velmi užitečné při sledování využití paměti, využití disku atd.,
Pomocí příkazu watch můžete spustit libovolný unixový příkaz. Příkaz Watch bude prováděn, dokud jej neukončíte buď pomocí CTRL+C, nebo neukončíte proces.
Příklad 1:Sledování vytvoření souboru pomocí watch ls
Když očekáváte, že soubor bude vytvořen procesem na pozadí, nebo když očekáváte, že velikost souboru protokolu bude neustále narůstat, můžete skončit prováděním příkazu ls několikrát. Místo toho můžete použít příkaz watch, který provede příkaz ls každé 2 sekundy, jak je uvedeno níže.
$ watch ls Every 2.0s: ls Thu Apr 15 16:11:58 2010 flash-plugin-10.0.45.2-release.i386.rpm install_flash_player_10_linux.deb
První řádek výstupu příkazu watch obsahuje následující informace záhlaví:
- Každé 2,0 s:Časový interval. tj. ls se bude provádět každé 2 sekundy.
- ls :Unixový příkaz, který se provádí každé 2 sekundy.
- Čt 15. dubna 16:11:58 2010 :aktuální datum a čas.
Zbývající řádky jsou výstupem příkazu, který watch provádí. V tomto příkladu zobrazuje výstup příkazu ls.
Příklad 2:Zobrazení podrobností o použité a volné paměti (se zvýrazněnými rozdíly)
Volba -d zdůrazňuje rozdíl mezi po sobě jdoucími aktualizacemi.
$ watch -d free -om Every 2.0s: free -om Thu Apr 15 16:11:59 2010 total used free shared buffers cached Mem: 992 878
114
0 135 379
Swap: 4095 8 4087
Pokud se výstup paměti ve vašem systému nezmění, vyzkoušejte volbu -d s příkazem date, abyste viděli, jak to funguje.
$ watch -d date
Poznámka :Věděli jste, že můžete zvýraznit změny v horním výstupu příkazu?
Příklad 3:Zobrazení dostupného místa na disku (opakujte každých 10 sekund)
Ve výchozím nastavení používá příkaz watch 2 sekundový interval, můžete jej změnit pomocí volby -n. Následující příklad spustí příkaz df -h každých 10 sekund.
$ watch -n 10 df -h Every 10.0s: df -h Thu Apr 15 16:12:26 2010 Filesystem Size Used Avail Use% Mounted on /dev/sda7 30G 8.6G 20G 31% / tmpfs 497M 964K 496M 1% /dev/shm /dev/sda6 194M 22M 163M 12% /boot
Příklad 4:Potlačení záhlaví sledování ve výstupu
1. řádek výstupu příkazu watch můžete potlačit pomocí volby -t, jak je ukázáno níže.
$ watch -t ls flash-plugin-10.0.45.2-release.i386.rpm install_flash_player_10_linux.deb