Answers:
我认为您的意思是PGID,代表进程组ID。
派生一个进程时,它从其父级继承其PGID。当流程成为流程组负责人时,PGID更改,然后从其PID复制其PGID。从那时起,新的子进程将产生,其子代继承该PGID(除非他们启动自己的新进程组)。
在具有作业控制的外壳中(例如,大多数交互式外壳),每个作业都放在其自己的进程组中。如果运行Shell脚本,则运行该脚本的Shell进程将成为组领导,而PGID将等于其PID。
在没有作业控制的shell中(例如,大多数用于运行脚本的shell),命令在shell的进程组中运行。
该语法会kill -- -N
杀死PGID = N的组中的所有进程。您不能将其与任意PID一起使用,只能与进程组负责人的PID一起使用,因为这就是PGID。本质上就是外壳的
kill %jobid
语法有效-它在内部转换%jobid
为作业的PGID,并将信号发送到该PGID。
没有简单的方法可以从另一个Shell脚本在其自己的进程组中运行脚本。不过,请参阅如何设置外壳程序脚本的进程组以获取一些建议。