Как я могу заставить часы GNU работать в фоновом режиме?

Если я начну watch Команда в фоновом режиме, это останавливается. Если перенести задание на передний план, оно снова запустится, но я хочу, чтобы оно работало в фоновом режиме.

$ watch ./do-something.sh &
[1] 97673
[1]+  Stopped                 watch ./do-something.sh

Я ожидаю, что эта работа будет выполняться в фоновом режиме, но это не так

$ bg 1
[1]+ watch ./hello.sh &
[1]+  Stopped                 watch ./hello.sh

Это тоже ничего не делает. Запуск задания на переднем плане и перемещение в фоновом режиме с помощью Ctrl-Z и "запуск" с bg 1 тоже не работает.

Это "особенность" часов? Я просто хочу периодически что-то запускать, каждые несколько секунд, и меня не особо волнует вывод. (Cron не подходит для этого, fwiw).

1 ответ

Решение

Я просто хочу периодически что-то запускать, каждые несколько секунд, и меня не особо волнует вывод. (Cron не подходит для этого, fwiw).

И ни один не watch, Он предназначен для интерактивного мониторинга вывода какой-либо команды - он откажется работать в фоновом режиме, если не может управлять терминалом, как любая другая интерактивная программа.

Попробуйте что-нибудь попроще:

while sleep 2; do ./do-something.sh; done &

Да, и Cron будет правильным инструментом для этого - в конце концов, это его единственная работа. Есть только ограничение невозможности указать задания со второй точностью.

Другие вопросы по тегам