前端之家收集整理的这篇文章主要介绍了
bash – 等待后台进程在退出脚本之前完成,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
如何在
退出我的脚本(TCL / Bash)之前确保所有
后台进程都已完成执行。
我正在想把所有我的后台进程pids写到一个pidfile。然后在结束pgrep pidfile,看看是否有任何进程在我退出之前仍然运行。
有没有一些更简单的方法来做到这一点?和有没有一个TCL具体的方法来做到这一点?
如果您想等待作业完成,请使用wait。这将使shell等待,直到所有
后台作业完成。但是,如果你的任何作业守护进程自己,他们不再是shell的子元素,等待将没有
效果(就shell而言,子进程已经完成了。事实上,当进程守护进程时,它会这么做通过终止和产生继承其角色的新进程)。
#!/bin/sh
{ sleep 5; echo waking up after 5 seconds; } &
{ sleep 1; echo waking up after 1 second; } &
wait
echo all jobs are done!