仅当特定进程终止时才返回的命令

仅当特定进程终止时才返回的命令

我想要的是有一个命令,当程序关闭时它会返回。例如,假设我使用窗口管理器或其他控制台窗口打开了 chromium-browser,我希望有一个命令,它只在 chromium-browser 关闭时返回,这样我就可以采取适当的措施。

有任何想法吗?

答案1

我在我的家庭服务器上做了类似的事情,我想要一个快速而简单的量子化学计算排队系统。以下是我的排队脚本的中间部分:

# If second argument passed, treat as PID to check for
#  completion before proceeding
if [ -n "$2" ]
then
  while [ `ps aux | grep orca | sed -r 's/[a-z0-9]+[ ]+([0-9]+).*/\1/' | grep "^$2\$" | wc -l` -gt 0 ]
  do
    sleep 1m
  done
fi

反引号内的命令执行以下操作:

  1. 调用ps aux获取进程列表
  2. grep可执行文件的名称(orca此处为“ ”),以防止出现罕见的情况,即感兴趣的进程运行的时间太长,导致 PID 使用回绕,并将感兴趣的 PID 分配给不相关的进程
  3. sed使用扩展的正则表达式列出剩余的每个进程,每行只留下 PID 号
  4. grep检查找到的任何 PID 是否与目标 PID 匹配
  5. wc -l提供一种简单的方法来计算匹配的 PID 的数量(计数应该永远只有一或零,但实现-gt 0应该能够抵御异常情况)

然后,脚本休眠一分钟(可轻松自定义)并重复 PID 检查。只要不再找到感兴趣的 PID,脚本就会继续运行。就我而言,下游命令会执行适当的计算;您可以调整以执行您想要的任何操作。

相关内容