![等待 Bash 中生成具有名称的进程](https://linux22.com/image/1189884/%E7%AD%89%E5%BE%85%20Bash%20%E4%B8%AD%E7%94%9F%E6%88%90%E5%85%B7%E6%9C%89%E5%90%8D%E7%A7%B0%E7%9A%84%E8%BF%9B%E7%A8%8B.png)
我想编写一个在后台运行的 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 上。