bash – 当在标准错误中看到特定字符串时,如何杀死一个进程?
我需要开始一个过程,让我们说foo.我想看到stdout / stderr正常,但grep stderr的字符串栏.一旦找到酒吧
stderr foo应该被杀死. 这可能吗?
我最初写了一个这样做的方法,涉及到流动,但它不是很好.一些评论与该版本有关.检查历史,如果你好奇
这是一种方法: (PIDFILE=$(mktemp /tmp/foo.XXXXXX) && trap "rm $PIDFILE" 0 && { foo 2> >(tee >(grep -q bar && kill $(cat $PIDFILE)) >&2) & PID=$! && echo $PID >$PIDFILE ; wait $PID || true; }) 好老式的噩梦燃料.这里发生了什么 >最外面的括号把整个东西放在一个子壳中;这限制了变量的范围,用于hygeine的目的 进程替换中的代码工作如下: >首先,输入(foo的标准错误),将三通的标准输出重定向到标准错误,以便foo的标准错误确实出现在标准错误 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |