[英]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.