我有以下 bash 脚本,我们可以将其命名为 script1.sh
:
#!/bin/bash
exec ./script2.sh &
sleep 5
if job1 is alive then #<--- this line is pseudo-code!
exec ./script3.sh &
wait
fi
可以看出,脚本将 script2.sh
作为后台作业执行,然后等待 5 秒(因此 script2.sh
可以执行一些初始化操作)。如果初始化成功,script2.sh
作业仍然存在,那么我也想同时启动script3.sh
;如果没有,我只想退出。
但是,我不知道如何检查第一份工作是否还活着,因此伪代码行。那么,应该用什么代替它呢?
最佳答案
您可以使用 $!
获取最近后台作业的 PID。然后您可以检查 ps 的退出状态以确定该特定 PID 是否仍在进程列表中。例如:
sleep 30 &
if ps -p $! >&-; then
wait $!
else
jobs
fi
关于bash - 如何检查后台作业是否存在? ( bash ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11239466/