假设我在一个 shell 会话中运行一个命令,例如bash -c 'apt-get update && apt-get upgrade'
. 5 分钟后,我决定出去吃点心,发现我忘记添加某种形式的退出是成功还是失败的通知机制。
好吧,我现在该怎么办?如果我可以从另一个终端查询那个其他命令(或者特别是那个 PID)的退出状态,也许我毕竟可以显示某种弹出窗口。所以问题是:如何从另一个终端查询已经运行的进程的退出状态?
换句话说,
鉴于我在终端 A 有一个正在运行的进程并且它的 PID 是已知的
当我在终端 B 中执行某些命令时
那么我应该能够知道终端 A 中的进程是否以退出状态 0 或退出状态 >1 结束。
使用
strace
如下:系统调用和信号在这里都不重要,所以我们告诉
strace
用-e
表达式忽略它们并用 . 抑制状态消息-q
。strace
使用 PID 附加到进程$PID
,等待它正常退出并输出其退出状态,如下所示:调用任何类型通知的简单
if
表达式可以是:示例运行
大部分功劳都归功于U&L 上的这个答案,如果你觉得这很有用,请在那里留下一个赞成票。