Jak okresowo uruchamiać program za pomocą polecenia Watch w systemie Linux
Czasami trzeba wielokrotnie uruchamiać polecenie lub program do monitorowania różnych aspektów systemu, takich jak trwające procesy, wykorzystanie miejsca na dysku lub logowania użytkowników. Polecenie Linux watch pozwala zautomatyzować te zadania bez konieczności ich ręcznego uruchamiania.
Wykorzystanie tego polecenia umożliwia ciągłą obserwację różnych zdarzeń systemowych, w tym między innymi aktywności logowania użytkownika, warunków sieciowych, wykorzystania procesora i pamięci, dostępnej pojemności pamięci. Poznaj kroki wymagane do zastosowania polecenia “watch” w systemie operacyjnym Linux w celu uzyskania wszechstronnych możliwości monitorowania.
Co to jest polecenie watch?
Polecenie “watch” w systemie Linux pozwala na cykliczne wykonywanie wyznaczonego polecenia lub programu, a dane wyjściowe są wyświetlane w terminalu. Umożliwia to monitorowanie wszelkich modyfikacji danych wyjściowych w czasie rzeczywistym, ponieważ są one stale aktualizowane, zastępując poprzednie dane wyjściowe przy każdej iteracji. Domyślnie polecenie będzie wykonywane co dwie sekundy, chyba że zostanie zakończone przez naciśnięcie przycisku
Składnia polecenia watch
Składnia polecenia watch jest następująca:
watch options <command>
Użycie polecenia “watch” zapewnia wiele możliwości konfiguracji za pomocą parametrów wiersza poleceń. Po wykonaniu bez żadnych specyfikacji, polecenie “watch” będzie wykonywało wskazaną operację co dwie sekundy, jako ilustracja, kolejne wyświetlenie pokaże wyniki emitowane przez polecenie “ls”:
watch ls -l ~/
Wyświetlacz prezentacyjny pokaże modyfikacje list katalogów w przypadku wygenerowania, usunięcia lub zmiany wymiarów pliku, aktualizując wizualizację w odstępach co dwie sekundy.
Run a Command Every X Seconds Using watch
Istnieje możliwość modyfikacji cyklu odświeżania polecenia watch
. Jest to równoznaczne z określeniem czasu, przez jaki polecenie watch
ma pozostawać w stanie uśpienia przed ponownym wykonaniem swojej dyrektywy. Aby dostosować interwał odświeżania, należy użyć opcji -n
wraz z okresem czasu w sekundach jako parametrem.
watch -n
Aby wykonywać polecenie wielokrotnie co pięć sekund, można zastosować następujące podejście:
watch -n 5 <command>
Highlight Changes Between Updates
Polecenie watch
w skryptach powłoki modyfikuje swoje wyświetlanie przy każdym wykonaniu.Korzystając z opcji -d
, można również zaakcentować rozbieżności między bieżącym i poprzednim wynikiem.
watch -d
Ukryj nagłówek na wyjściu polecenia watch
Domyślnym zachowaniem polecenia “watch” jest wyświetlanie nagłówka na każdym wyjściu, który zawiera informacje o interwale aktualizacji, nazwie polecenia oraz bieżącej dacie i godzinie systemu. Aby pominąć ten nagłówek, można użyć opcji “-t”.
watch -t <command>
Play Beeps on Error
Po zakończeniu procesu Linux zazwyczaj zwraca status wyjścia, który jest często uważany za miarę sukcesu lub porażki. Konwencjonalna praktyka dyktuje, że wartość zero oznacza pomyślne wykonanie, podczas gdy każda inna wartość służy jako wskaźnik błędu. W kontekście opcji -b
polecenia watch, ten status wyjścia jest wykorzystywany do wyzwalania emisji sygnału dźwiękowego w postaci sygnału dźwiękowego, gdy zwracana jest wartość niezerowa, ostrzegając w ten sposób użytkowników o potencjalnych problemach w ich skryptowych poleceniach.
Jednym z możliwych podejść do monitorowania stanu usługi sshd.service przy użyciu systemd i otrzymywania powiadomień w przypadku przerwania usługi jest użycie następującego polecenia:
watch -b sudo systemctl status sshd.service
Aby zaimplementować mechanizm powiadamiania za pomocą alertów dźwiękowych w postaci sygnałów dźwiękowych za pośrednictwem pakietu “beep” dla usług, które przestały działać, można skorzystać z następującej procedury. Po wykonaniu tego polecenia z głośników będzie emitowana seria ciągłych sygnałów dźwiękowych za każdym razem, gdy określona usługa przestanie działać. I odwrotnie, po przywróceniu usługi sygnał dźwiękowy przestanie być emitowany. Należy zauważyć, że ta funkcja jest uzależniona od obecności wyżej wymienionego pakietu “beep” w systemie użytkownika.
Zakończ polecenie watch po zmianie danych wyjściowych
Flaga -g
pozwala na zatrzymanie wykonywania polecenia watch i zakończenie jego działania po wykryciu jakiejkolwiek zmiany w wynikowych danych wyjściowych, co czyni ją szczególnie przydatną w sytuacjach, w których monitorowanie modyfikacji danych wyjściowych ma kluczowe znaczenie.
Po modyfikacji danych wyjściowych, wykonanie polecenia watch zostanie przerwane. Ta operacja może być skutecznie połączona z wykorzystaniem komendy
echo do prezentacji treści wizualnej na powierzchni wyświetlacza.
Załóżmy, że oczekujesz na pojawienie się określonego pliku w jednym z katalogów. W takim przypadku wykonanie podanego polecenia umożliwi ciągłe monitorowanie wspomnianego katalogu pod kątem obecności określonego pliku.Po wykryciu, wykonywanie polecenia watch zostanie przerwane, a na interfejsie terminala zostanie wyświetlone powiadomienie wskazujące na nadejście pliku.
watch -g "ls -l | grep filename" && echo "file arrived"
Inny przykładowy przypadek obejmuje otrzymanie powiadomienia o wystąpieniu określonej osoby uzyskującej dostęp do sieci:
watch -g "who | grep username" && echo "username logged in"
Niniejsze polecenie nadzoruje dane wyjściowe generowane przez polecenie “who”, które wylicza osoby aktualnie podłączone do systemu. W przypadku zalogowania się użytkownika, funkcja polecenia “watch” przestanie działać i wyświetli powiadomienie w interfejsie terminala.
W podobny sposób możliwe jest poinstruowanie polecenia “watch”, aby zatrzymywało wykonywanie określonej usługi za każdym razem, gdy dokonywane są modyfikacje określonego pliku. Jednakże, stosując potok połączonych ze sobą poleceń, konieczne jest ujęcie całej instrukcji w cudzysłów.
Obserwowanie aktywności w systemie Linux
Użycie polecenia “watch” może być praktycznym rozwiązaniem, jeśli często wykonujesz identyczne zadania sekwencyjnie. Stosując to polecenie, można wyeliminować potrzebę ciągłego wprowadzania poleceń w celu wykrycia wszelkich dokonanych modyfikacji.
Można wykorzystać polecenie “watch” wraz z różnymi poleceniami Linuksa do nadzorowania zasobów systemowych i zadań oraz monitorowania zmian w plikach lub katalogach.