
Как я могуповторитькоманду каждый интервал времени, так что это позволит мне запускать команды дляпроверка илимониторинг каталоги ?
Мне не нужен скрипт, мне нужна простая команда, которую можно выполнить в терминале.
решение1
Вы можете использовать watch
команду,смотретьиспользуется для запуска любой назначенной команды через регулярные интервалы времени.
Откройте Терминал и введите:
watch -n x <your command>
изменятьИксчтобы указать желаемое время в секундах.
Для получения дополнительной помощи по использованию watch
команды и ее параметров выполните man watch
или посетите этот сайт.Связь.
Например :ниже будет перечислен каждый60-ена том же Терминале содержимое каталога Desktop, чтобы вы могли узнать, произошли ли какие-либо изменения:
watch -n 60 ls -l ~/Desktop
решение2
Эту команду можно также использовать в терминале, помимоответ nux:
while true; do <your_command>; sleep <interval_in_seconds>; done
Пример:
while true; do ls; sleep 2; done
Эта команда выведет вывод ls
с интервалом в 2 секунды.
Используйте Ctrl+ C, чтобы остановить процесс.
Есть несколько недостатков watch
:
- Он не может использовать псевдонимы команд.
- Если вывод какой-либо команды слишком длинный, прокрутка не будет работать должным образом.
- Есть некоторые проблемы с установкоймаксимальный временной интервалсверх определенного значения.
watch
будет интерпретировать последовательности цветов ANSI, передавая escape-символы с помощью параметра-c
или--color
. Например, выводpygmentize
будет работать, но не будет работать дляls --color=auto
.
В вышеуказанных обстоятельствах это может показаться лучшим вариантом.
решение3
Просто хотел внести свой вклад.сурав c.'песокнуксответы:
Хотя
watch
это будет работать отлично на Ubuntu, вы можете этого избежать, если хотите, чтобы ваш "Unix-fu" был чистым. Например, на FreeBSDwatch
есть команда "snoop on another tty line".while true; do command; sleep SECONDS; done
также есть предостережение: вашу команду может быть сложнее убить с помощью Ctrl+ C. Вы можете предпочесть:while sleep SECONDS; do command; done
Это не только короче, но и легче прерывается. Проблема в том, что сначала он будет спать, а затем выполнит вашу команду, поэтому вам придется немного подождать,
SECONDS
прежде чем произойдет первое появление команды.
решение4
вы можете использовать crontab. запустите команду crontab -e
и откройте ее в предпочитаемом вами текстовом редакторе, затем добавьте эту строку
*/10 * * * * /path-to-your-command
Это будет запускать вашу команду каждые 10 минут.
* */4 * * * /path-to-your-command
Это будет запускать вашу команду каждые 4 часа.
Другое возможное решение
$ ..some command...; for i in $(seq X); do $cmd; sleep Y; done
Иксколичество повторений.
Ивремя подождать, чтобы повторить.
Пример :
$ echo; for i in $(seq 5); do $cmd "This is echo number: $i"; sleep 1;done