监视/监视某个关键字的后台作业

在一个bash脚本中,我想用下面的方式来监视/监视后台进程/作业:

  • 在后台运行一个命令(在我的情况下,nodeJS)
  • 监视它的输出,但不显示它
  • 只要输出包含“错误”一词或作业退出/停止:
    • 显示最后一个输出(即完整的错误信息)
    • 退出脚本

我怎么做?

你可以用strace来做:

在最简单的情况下, strace运行指定的命令,直到它退出。 它拦截并logging进程调用的系统调用和进程接收到的信号。 每个系统调用的名称,参数及其返回值将打印在标准错误或由-o选项指定的文件上。

如:

 strace -o /path/to/file.txt process_to_monitor 

然后你可以使用tail来提取文件的最后部分(默认最后10行)。

 tail /path/to/file.txt -n100 

如果你想复制最后100行。

然后你grep从你想要的任何string。