首先,我在后台执行bash-shell。并将 stdout 和 stderr 写入日志文件./out
。
(bash ./myshell.sh > ./out 2>&1)&
在shell中将依次运行多个程序,如 Node.js 。
node program.js --number 1
node program.js --number 2
node program.js --number 3
...
我可以通过ps
检查进度状态,下面是一个示例:
$ ps ux | grep shell
user 10001 (skipped...) bash ./myshell.sh
$ ps ux | grep node
user 10002 (skipped...) node program.js --number 1
然后,可能正在运行第二个程序,这两个进程都将被终止(或终止)。
我们可以推测第3个程序将会启动,因为第2个程序已停止。事实上, bash-shell 和第二个程序都因未知原因而终止。
我通过(... > ./out 2>&1)&
离开了 stderr 。但我无法从日志文件中获取任何消息。我知道第二个程序暂时停止了。
我想找到一个工具,可以通过特定的进程ID 或其他类似的解决方案来监控我的流程。
答案 0 :(得分:1)
如果要使用其ID检查进程是否仍然存在,则可以使用以下内容:
kill -0 $pid
-0
这里将取消kill命令,而是输出。
或者,如果您确实想要对退出代码执行操作,忽略kill
输出,则可以执行更具编程性的操作:
if ! kill $pid > /dev/null 2>&1; then
echo "Could not send SIGTERM to process $pid" >&2
fi