我想编写一个在后台运行的 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 上。