Jul*_*usz 21 command-line shell tty watch background-process
当我运行时:
watch 'cmd >> output.txt' &
Run Code Online (Sandbox Code Playgroud)
作业被系统暂停:
3569 停止(tty 输出)
有解决方法吗?
Mic*_*zek 25
目的watch是全屏显示命令的结果并不断更新;如果您将输出重定向到一个文件并将其作为背景,那么首先真的没有理由使用 watch。
如果您只想在延迟watch的情况下一遍又一遍地运行命令(默认情况下等待两秒钟),您可以使用以下内容:
while true; do
cmd >> output.txt
sleep 2
done
Run Code Online (Sandbox Code Playgroud)
mik*_*elo 17
更新,感谢@SDK:
watch -n 1 'date | tee -a output.txt' &>/dev/null &
Run Code Online (Sandbox Code Playgroud)
tee 非常有用,可以将输出推送到指定的文件。
上一个答案:
这里有一个方法:
watch -n 1 'date' &>/dev/null &
Run Code Online (Sandbox Code Playgroud)
由于您对进程进行了后台处理,我们可以假设您不需要终端显示并且您可以重定向到文件。如果你这样做,你将能够watch毫无问题地背景。
sleep,正如 Michael Mrozek 所建议的那样,会慢慢滞后,这可能是不可取的。除了监视系统时间并根据经过的时间执行命令的复杂 shell 脚本之外,watch -p它也是精确计时的好选择。
精确计时:
watch -n 1 -p 'date' &>/dev/null &
Run Code Online (Sandbox Code Playgroud)
Sté*_*nez 11
我不确定你的动机,但这也许就足够了?
while true; do sleep 2; cmd >>output.txt; done &
Run Code Online (Sandbox Code Playgroud)
否则,请解释您为什么真正需要watch.