Может быть, что «часы» не то, что вы хотите. Вы, вероятно, хотите обратиться за помощью в решении вашей проблемы, а не в реализации вашего решения! :)
Если вашей реальной целью является запуск действий на основе того, что видно из tail
команды , то вы можете сделать это как часть самого хвоста. Вместо того, чтобы запускать «периодически», что и watch
происходит, вы можете запускать свой код по требованию .
#!/bin/sh
tail -F /var/log/somelogfile | while read line; do
if echo "$line" | grep -q '[Ss]ome.regex'; then
# do your stuff
fi
done
Обратите внимание, что он tail -F
будет продолжать следовать за файлом журнала, даже если он будет повернут новостным журналом или logrotate. Вы хотите использовать это вместо строчных tail -f
. Проверьте man tail
детали.
Тем не менее, если вы действительно хотите периодически запускать команду, другие предоставленные ответы можно превратить в короткий сценарий оболочки:
#!/bin/sh
if [ -z "$2" ]; then
echo "Usage: $0 SECONDS COMMAND" >&2
exit 1
fi
SECONDS=$1
shift 1
while sleep $SECONDS; do
clear
$*
done