Mat*_*att 5 linux bash shell process process-group
基本上我想要一个 bash 脚本进程在收到 后SIGINT,在退出之前终止其所有子进程。我在这里读到的内容是:
trap "kill -TERM -$$ ; exit 1" INT QUIT
Run Code Online (Sandbox Code Playgroud)
我还阅读了使用kill 0:
trap "kill -TERM 0 ; exit 1" INT QUIT
Run Code Online (Sandbox Code Playgroud)
它们之间有什么区别,它们是否满足以下要求(如果不满足,什么要求?)?:
./foo.sh &,然后,终止./foo.sh第二个进程或实例,即使在同一个 tty 中,终止第二个进程也不应终止第一个进程)。进程ID 0 表示执行该kill命令的进程所在的进程组。负进程ID是指其ID为proc ID的绝对值的进程组。两者可能不同,因为进程组可能会更改。
它们对于项目 1 应该是相同的(我假设您没有手动创建或影响进程组)。第 2 项不是问题,因为进程 ID 完全独立于进程中执行的脚本的名称。进程 ID 是指代特定进程的明确方式。
请注意,谎报进程中执行的程序的名称是微不足道的,因此无论如何依赖您看到的名称通常是没有用的ps:
exec -a someOtherName ./myScript
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4669 次 |
| 最近记录: |