【发布时间】:2018-04-20 19:26:30
【问题描述】:
我想做一些类似正在运行的进程的日志分析器。假设我运行一个服务器,stdout 通过管道传递到 bash 脚本,IF 语句在哪里。如果输出中出现字符串“somethings”,则脚本会终止服务器。如果不是,那么它通常会打印 stdout 并且仍在运行。
例子:
./server | if.bash
if.bash 的内容:
if grep 'somethings'; then
kill app
else
echo server output
fi
以上代码成功运行测试,但不打印原始标准输出。如何确保内容仍然打印?
【问题讨论】:
-
“杀死服务器”是什么意思?如果您的意思是 bash 脚本关闭其管道末端,以便服务器在写入数据时获得 SIGPIPE,那么您想要的相对容易。如果您希望脚本对进程组进行一些自省并找出服务器的 pid 并向其发送信号,那将更加困难。