Shell

如何將“watch”作為後台作業執行?

  • November 2, 2020

當我執行時:

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 &

引用自:https://unix.stackexchange.com/questions/17999