Jak okresowo uruchamiać program za pomocą polecenia Watch w systemie Linux

Czasami trzeba wielokrotnie uruchamiać polecenie lub program, aby monitorować różne aspekty systemu, takie jak trwające procesy, wykorzystanie miejsca na dysku lub logowanie użytkowników. Polecenie watch w systemie Linux pozwala zautomatyzować te zadania bez konieczności ręcznego uruchamiania ich wielokrotnie.

Za pomocą tego polecenia możesz monitorować w czasie rzeczywistym działania systemowe, takie jak logowania użytkowników, stan sieci, użycie pamięci i procesora, miejsce na dysku itp. Zobaczmy, jak używać polecenia watch w systemie Linux.

Co to jest polecenie zegarka?

Polecenie watch Linux wielokrotnie uruchamia określone polecenie lub program w regularnych odstępach czasu i wyświetla jego wynik w terminalu. Dzięki temu możesz obserwować zmiany na wyjściu w czasie rzeczywistym. Odświeża dane wyjściowe w każdym odstępie czasu, zastępując poprzednie dane wyjściowe polecenia. Domyślnie polecenie jest powtarzane co dwie sekundy i trwa do momentu ręcznego zatrzymania go za pomocą Ctrl + C.

Obejrzyj Składnia poleceń

Składnia polecenia watch jest następująca:

 watch options <command> 

W przypadku polecenia watch dostępne są różne opcje wiersza poleceń. Jeśli uruchomisz polecenie watch bez żadnych opcji, określone polecenie będzie uruchamiane co dwie sekundy. Na przykład poniższy wynik pokaże wynik polecenia ls:

 watch ls -l ~/ 

Dane wyjściowe pokażą zmiany na liście katalogów, jeśli plik zostanie utworzony, usunięty lub zmieni się jego rozmiar, jednocześnie odświeżając dane wyjściowe co dwie sekundy.

Uruchamiaj polecenie co X sekund za pomocą zegarka

Możesz zmienić interwał aktualizacji polecenia watch. Oznacza to, że możesz nakazać poleceniu watch, aby odczekało x sekund przed powtórzeniem polecenia. Aby zmienić interwał aktualizacji, użyj opcji -n, a następnie odstępu czasu w sekundach.

 watch -n  

Na przykład, aby uruchomić polecenie co 5 sekund, uruchom:

 watch -n 5 <command> 

Podświetl zmiany pomiędzy aktualizacjami

Polecenie watch nadpisuje swoje dane wyjściowe przy każdym odświeżeniu. Używając opcji -d, możesz także podświetlić zmiany pomiędzy poprzednim i zaktualizowanym wyjściem.

 watch -d 

Ukryj nagłówek w wynikach polecenia watch

Domyślnie polecenie watch wyświetla na górze każdego wyniku nagłówek zawierający interwał aktualizacji, nazwę polecenia oraz bieżącą datę i godzinę systemu. Możesz usunąć nagłówek z wyjścia, używając opcji -t:

 watch -t <command> 

Odtwórz sygnały dźwiękowe w przypadku błędu

Kiedy proces Linuksa zakończy działanie, zwraca kod zakończenia. Zgodnie z konwencją, wartość wynosi 0 w przypadku powodzenia i różna od zera w przypadku błędu. Opcja -b polecenia watch odtwarza sygnał dźwiękowy, jeśli polecenie zwróci niezerowe wyjście.

Załóżmy, że chcesz monitorować sshd.service i otrzymywać powiadomienia, gdy usługa się zatrzyma; użyłbyś:

 watch -b sudo systemctl status sshd.service 

To polecenie wyda sygnał dźwiękowy po zatrzymaniu usługi. Sygnał dźwiękowy ustanie, gdy usługa zostanie wznowiona. Aby to przetestować, otwórz kolejne okno terminala i zatrzymaj usługę. Będzie to powodować ciągłe sygnały dźwiękowe do momentu ponownego uruchomienia usługi. Aby jednak móc korzystać z tej funkcji, musisz mieć zainstalowany w swoim systemie pakiet beep.

Wyjdź z polecenia watch po zmianie wyjścia

Możesz także nakazać poleceniu watch, aby przestało działać i zakończyło działanie, gdy zmienią się dane wyjściowe polecenia. Można to zrobić za pomocą opcji -g. Ta opcja jest bardzo przydatna w scenariuszach, w których oczekujesz na pewne zmiany w wynikach.

Po zmianie sygnału wyjściowego polecenie watch zostanie zatrzymane. Możesz połączyć to użycie z poleceniem echo, aby wyświetlić komunikat na ekranie.

Rozważmy na przykład scenariusz, w którym czekasz na przybycie pliku do katalogu. Następujące polecenie będzie monitorować katalog dla określonego pliku. Gdy tylko dotrze, polecenie watch przestanie działać, a otrzymany plik wiadomości pojawi się na terminalu.

 watch -g "ls -l | grep filename" && echo "file arrived" 

Innym przydatnym przykładem jest powiadomienie, gdy konkretny użytkownik loguje się do Twojego systemu:

 watch -g "who | grep username" && echo "username logged in" 

To polecenie będzie monitorować dane wyjściowe polecenia who, które wyświetla listę zalogowanych użytkowników. Gdy użytkownik się zaloguje, polecenie watch zatrzyma się i wyświetli komunikat na terminalu.

Podobnie możesz nakazać poleceniu watch zatrzymanie usługi, gdy w pliku zostaną wprowadzone pewne zmiany. Należy pamiętać, że podczas korzystania z łańcucha poleceń potokowego należy ująć całe polecenie w cudzysłów.

Obejrzyj działania w swoim systemie Linux

Jeśli często powtarzasz ten sam proces, rozważ użycie polecenia watch, aby go zautomatyzować. Oszczędza to konieczności częstego wpisywania poleceń w celu sprawdzenia, co się zmieniło.

Możesz także użyć polecenia watch z innymi poleceniami systemu Linux, aby monitorować zasoby i działania systemu oraz śledzić zmiany w plikach lub katalogach.