簡體   English   中英

如果 STDOUT 更改為我要查找的內容,則終止命令行進程並重新啟動?

[英]Kill command line process and restart if STDOUT changes to what I'm looking for?

我有一個問題 - 我正在從命令行運行一個有問題的進程,每隔幾個小時左右就會出現一次。 在我研究這個問題時,我想從監視 STOUT 的某些字符串/正則表達式的東西中生成該進程,如果它輸出表明它已損壞的內容,則終止並重新啟動該進程。

我知道我可以通過滾動我自己的 Python/Ruby 腳本來以普通的方式做到這一點,但我想知道是否有任何漂亮的工具可以用來讓它更干凈一點? 這是在 Windows 上,但我有 cygwin,以防答案涉及 unix 命令行過程。

程序 | grep CRASH_STRING | xargs -l 1 sh -c 'killall 程序 && 程序'

好吧,那會做一次。 我不確定如何讓它循環工作。 我想了更多,可能可以通過將標准輸出重定向到名為 pipe 來完成。 但是 shell 腳本最終可能會比用腳本語言編寫看門狗更笨拙。

但是 pipe 的想法是這樣的:

mkfifo /tmp/fifo
program > /tmp/fifo&
while :
do
grep "CRASH_STRING" /tmp/fifo | xargs -l 1 sh -c 'killall program && program > /tmp/fifo&'
done

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM