我怎样才能让 gnu watch 在后台运行?

我怎样才能让 gnu watch 在后台运行?

如果我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是完成这项工作的合适工具——毕竟,这是它唯一的工作。唯一的限制是不能以秒级精度指定作业。

相关内容