用于生成进程、在 SIGTERM 上终止子进程的 shell 脚本
-
13-09-2019 - |
题
我想编写一个 shell 脚本,在后台生成几个长时间运行的进程,然后挂起。收到 SIGTERM 后,我希望所有子进程也终止。
基本上,我想要一个“主流程”。
这是我到目前为止得到的:
#!/bin/sh
sleep 600 &
PID1="$!"
sleep 600 &
PID2="$!"
# supposedly this should kill the child processes on SIGTERM.
trap "kill $PID1 $PID2" SIGTERM
wait
上面的脚本失败并显示 trap: 10: SIGTERM: bad trap
.
编辑:我使用的是Ubuntu 9.04
解决方案 2
乔的回答让我在正确的轨道上。 我还发现我应该陷阱多个信号,以覆盖我的碱基。
最终脚本看起来像这样:
#!/bin/sh
sleep 600 &
PID1="$!"
sleep 600 &
PID2="$!"
trap "kill $PID1 $PID2" exit INT TERM
wait
其他提示
我怀疑你的/ bin / sh的是不是一个Bash的(虽然你标记了一个问题, '猛砸')。
从消息我想这是一个DASH。检查它的手册或刚修好你的家当,如果你需要编写代码猛砸
该脚本看起来是正确的和预期为我的作品。
您如何发送SIGTERM信号,“主过程”?
也许你应该执行kill -l
检查哪些信号有支持。
由于错误信息提示你发送信号系统似乎“10”不认识。
和下一次你应该添加操作系统,外壳版本,内核,...对于这样的问题
不隶属于 StackOverflow