Shell
如何將“watch”作為後台作業執行?
當我執行時:
watch 'cmd >> output.txt' &
作業被系統暫停:
3569 已停止(tty 輸出)
有解決方法嗎?
的目的
watch
是全屏顯示命令的結果並不斷更新;如果您將輸出重定向到一個文件並將其設置為背景,那麼實際上沒有理由首先使用 watch 。如果您只想延遲(
watch
預設等待兩秒鐘)一遍又一遍地執行命令,您可以使用以下內容:while true; do cmd >> output.txt sleep 2 done
更新,感謝@SDK:
watch -n 1 'date | tee -a output.txt' &>/dev/null &
tee 非常有用,會將輸出推送到指定的文件。
上一個答案:
這裡有一個方法:
watch -n 1 'date' &>/dev/null &
由於您在後台處理該過程,因此我們可以假設您不需要終端顯示,並且可以很好地重定向到文件。如果你這樣做,你將能夠
watch
毫無問題地背景。
sleep
,正如 Michael Mrozek 所建議的那樣,會慢慢滯後,這可能是不可取的。除了監視系統時間並根據經過的時間執行命令的複雜 shell 腳本之外,它watch -p
可能是精確計時的好選擇。對於精確的時間:
watch -n 1 -p 'date' &>/dev/null &