Это было бы очень удобно для kill, поскольку уничтожение идентификатора задания вместо идентификатора процесса, по-видимому, также уничтожает все дочерние процессы.
Вы можете сделать это по-другому.
Когда он печатает pid, вы можете убить его и всех его потомков, убив его группу процессов.
Вы делаете это, отрицая pid, например
$ cat &
[1] 21273
$ kill -- -21273
Вам нужно написать --
или иначе -pid
интерпретируется как сигнал (например, как kill -9
).
Пример:
$ man ls &
[1] 22267
$ ps j | head -1; ps j | grep 22267
PPID PID PGID SID TTY TPGID STAT UID TIME COMMAND
18968 22267 22267 18968 pts/2 22327 T 500 0:00 man ls
22267 22281 22267 18968 pts/2 22327 T 500 0:00 /bin/sh /usr/bin/nroff -mandoc -Tutf8
22267 22282 22267 18968 pts/2 22327 T 500 0:00 less
22281 22286 22267 18968 pts/2 22327 T 500 0:00 groff -mtty-char -Tutf8 -mandoc
22286 22287 22267 18968 pts/2 22327 T 500 0:00 troff -mtty-char -mandoc -Tutf8
22286 22288 22267 18968 pts/2 22327 T 500 0:00 grotty
$ kill -- -22267
[1]+ Terminated man ls
$ ps j | grep 22267
$