Действительно ли возможно использовать команду часов, чтобы видеть, существует ли файл, и если это действительно затем останавливает сервис? Или возможно, как обходное решение, проверяют содержание файла и затем останавливают сервис?
Я смотрел на команду часов, чтобы сделать это:
watch -d -g -t ls -l /home/username/twitter-failed.log && service cups stop
Проблема для меня состоит в том, что я не понимаю эту команду полностью. Я думаю, что это проверяет вывод "ls" здесь, но на что это проверяет "ls"? Мне нужна команда для проверки "twitter-failed.log" на любой вид содержания. Файл является пробелом, когда нет никаких ошибок, но генерирует целый набор текста, когда существует ошибка. Таким образом, команда часов только должна проверить файл на любой вид вывода, затем остановить сервис.
Можно использовать inotifywait
:
Поместите следующее в сценарий удара и сделайте его исполняемым файлом.
#!/bin/bash
set -e # make script exit on error
FILE_TO_WATCH="/home/username/twitter-failed.log"
# Truncate / Create empty file
> "$FILE_TO_WATCH"
# Wait for File was modified
inotifywait -e modify "$FILE_TO_WATCH"
# Do something after modified
service cups stop
send_yourself_a_notification
С другой стороны, Вы могли также использовать некоторый цикл как это, но я думаю, что лучше использовать специализированный инструмент как inotifywait
сделать это:
until [ -s "$FILE_TO_WATCH" ]; do sleep 2; done && service cups stop