bash - 生成进程的 shell 脚本,在 SIGTERM 上终止子进程

标签 bash scripting sh long-running-processes sigterm

我想编写一个 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

最佳答案

这对我有用:

trap "trap - SIGTERM && kill -- -$$" SIGINT SIGTERM EXIT
  • kill -- -$$ 发送 SIGTERM到整个进程组,从而也杀死后代。

  • 指定信号 EXIT 在使用 set -e 时很有用(更多详情 here )。

关于bash - 生成进程的 shell 脚本,在 SIGTERM 上终止子进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/976059/

相关文章:

linux - 使用管道和撇号时如何将 bash 命令的输出捕获到变量中?

linux - 将对目录中的所有文件执行程序的 Bash 脚本

linux - unix bash - 保存环境变量和循环

bash - 使用 shell 中的内容创建多个文件

google-apps-script - 如何使用 VLOOKUP 填写每小时日历时间表?

linux - 使用 sed 替换字符串的一部分

linux - 使用 qsub 提交可执行文件+输入文件以创建多个作业

bash - 如何在 bash 脚本中正确使用 elif 与 && 和 -o

c++ - 如何使用 bash 将文本文件定向到 C 程序?

linux - 如何使用查找创建子目录的副本