等待 Bash 中生成具有名称的进程

等待 Bash 中生成具有名称的进程

我想编写一个在后台运行的 Bash 脚本,等待命令生成。

假设我运行了等待的 script.sh ls。运行后ls,它应该触发操作吗?

答案1

您可以使用pgrep创建一个像这样的 while 循环:

#!/bin/bash

# Wait for particular process to run
while ! pgrep "process-name " > /dev/null; do

    # Set optional delay
    sleep .1

done

# Do something when the process has started
your-commands-here

您需要调整延迟,以便它“捕获”您运行的进程。如果它检测到的服务不会再次停止,这当然会发挥最佳作用,但这适用于任何花费比您设置的延迟更长的时间才能完成的命令(这ls是一个不好的例子,因为它只需要几毫秒就可以完成该进程)。

另请参阅这个帖子在 Unix 和 Linux 上。

相关内容