如果我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
也不起作用。
这是 watch 的“功能”吗?我只想每隔几秒定期运行某些操作,而且我并不特别关心输出。(cron 不是适合此目的的工具,仅供参考)。
答案1
我只是想每隔几秒定期运行某些操作,并且我并不特别关心输出。(cron 不是适合此目的的正确工具,仅供参考)。
也不是watch
。它是为互动地监控某些命令的输出——如果它无法控制终端,它将拒绝在后台运行,就像任何其他交互式程序一样。
尝试一些更简单的事情:
while sleep 2; do ./do-something.sh; done &
哦,还有 cron会是完成这项工作的合适工具——毕竟,这是它唯一的工作。唯一的限制是不能以秒级精度指定作业。