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

1118
tobym

Если я запускаю 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

1 ответ на вопрос

2
grawity

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

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

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

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

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

Спасибо за чаевые; это хороший ответ. Я также передал stdout и stderr в / dev / null, так как меня не интересовал вывод. tobym 12 лет назад 0