Як періодично запускати програму за допомогою команди Watch у Linux

Іноді вам потрібно кілька разів запускати команду або програму, щоб контролювати різні аспекти вашої системи, як-от поточні процеси, використання дискового простору або вхід користувачів. Команда Linux watch дозволяє автоматизувати ці завдання, не запускаючи їх знову і знову вручну.

За допомогою цієї команди ви можете відстежувати дії системи в режимі реального часу, такі як входи користувачів, стан мережі, використання пам’яті та ЦП, дисковий простір тощо. Давайте подивимося, як використовувати команду watch у Linux.

Що таке команда Watch?

Команда watch Linux запускає певну команду або програму повторно через регулярні проміжки часу та відображає її результат у терміналі. Це дає змогу спостерігати за змінами у виході в реальному часі. Він оновлює вивід кожного інтервалу, перезаписуючи попередній вивід команди. За замовчуванням команда повторюється кожні дві секунди, доки ви не зупините її вручну за допомогою Ctrl + C.

  Як організувати свої списки в Linux за допомогою Dynalist

Перегляньте синтаксис команд

Синтаксис команди watch такий:

 watch options <command> 

Існують різні параметри командного рядка, які можна використовувати з командою watch. Якщо ви запускаєте команду watch без будь-яких параметрів, вона запускатиме зазначену команду кожні дві секунди. Наприклад, нижче буде показано результат команди ls:

 watch ls -l ~/ 

Вихідні дані покажуть вам зміни в списку каталогу, якщо файл створено, видалено або зміниться в розмірі, оновлюючи вихідні дані кожні дві секунди.

Виконуйте команду кожні X секунд за допомогою годинника

Ви можете змінити інтервал оновлення команди watch. Це означає, що ви можете наказати команді watch чекати x секунд перед повторенням команди. Щоб змінити інтервал оновлення, скористайтеся параметром -n, а потім інтервалом часу в секундах.

 watch -n  

Наприклад, щоб запускати команду кожні 5 секунд, виконайте:

 watch -n 5 <command> 

Виділіть зміни між оновленнями

Команда watch перезаписує свій вихід при кожному оновленні. Використовуючи параметр -d, ви також можете виділити зміни між попереднім і оновленим результатом.

 watch -d 

Приховати заголовок у виводі команди watch

За замовчуванням команда watch відображає заголовок у верхній частині кожного виводу, який містить інтервал оновлення, назву команди та поточну дату й час системи. Ви можете видалити заголовок із виводу за допомогою параметра -t:

 watch -t <command> 

Грати в Beeps on Error

Коли процес Linux завершує роботу, він повертає код виходу. За домовленістю значення дорівнює 0 у разі успіху та відмінне від нуля для позначення помилки. Параметр -b команди watch відтворює звуковий сигнал, якщо команда повертає ненульовий вихід.

  10 найкращих програм для створення нотаток для Linux

Припустімо, ви хочете контролювати sshd.service і отримувати сповіщення, коли служба зупиняється; ви б використали:

 watch -b sudo systemctl status sshd.service 

Ця команда видасть звуковий сигнал, коли служба зупиниться. Звуковий сигнал припиниться, коли послуга відновиться. Щоб перевірити це, відкрийте інше вікно терміналу та зупиніть службу. Це видаватиме постійні звукові сигнали, доки ви знову не запустите службу. Однак, щоб скористатися цією функцією, у вашій системі має бути встановлений пакет звукових сигналів.

Вийдіть із команди годинника після зміни виводу

Ви також можете наказати команді watch припинити виконання та вийти, коли результат команди зміниться. Ви можете зробити це за допомогою параметра -g. Цей параметр дуже корисний у сценаріях, коли ви очікуєте певних змін у виводі.

  Як відфільтрувати синє світло на Linux за допомогою Redshift

Щойно вихідні дані зміняться, команда спостерігати припиниться. Ви можете поєднати це використання з командою echo для відображення повідомлення на екрані.

Наприклад, розглянемо сценарій, коли ви чекаєте на надходження файлу до вашого каталогу. Наступна команда відстежуватиме каталог для вказаного файлу. Щойно воно надійде, команда watch припинить виконання, а отриманий файл повідомлення відобразиться на терміналі.

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

Іншим корисним прикладом є сповіщення, коли певний користувач входить у вашу систему:

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

Ця команда контролюватиме вихід команди who, яка містить список користувачів, які ввійшли в систему. Після входу користувача команда watch зупиниться та відобразить повідомлення на терміналі.

Так само ви можете наказати команді watch зупиняти службу, коли у файлі вносяться деякі зміни. Майте на увазі, що під час використання конвеєрного ланцюжка команд вам потрібно взяти всю команду в лапки.

Переглядайте дії у вашій системі Linux

Якщо ви неодноразово виконуєте той самий процес, подумайте про використання команди watch для його автоматизації. Це позбавляє вас від частого введення команд, щоб побачити, що змінилося.

Ви також можете використовувати команду watch з іншими командами Linux для моніторингу системних ресурсів і дій, а також для відстеження змін у файлах або каталогах.