【发布时间】:2021-08-12 22:30:55
【问题描述】:
假设我在 bash 脚本中启动了一个后台进程,在本例中为 http-server,我想在脚本退出时终止它。我可能会这样做:
# launch http-server in the background
http-server -p8080 &
# capture PID of background process
HTTP_PID=$!
trap "kill $HTTP_PID" EXIT
# ... more stuff
这似乎是捕获后台进程的PID的推荐方式,但是有一个问题:如果进程无法启动或稍后在任何时候失败,PID可能会被另一个进程回收并使用,其中如果我的kill 会杀死系统上的一些随机进程。
我怎样才能安全地仅杀死在此脚本中启动的进程,如果该进程已经死亡则什么都不做?
【问题讨论】: