Як йдеться в повідомленні, він посилає сигнал всім членам процесу групи абонента.
Групи процесів використовуються для здійснення управління роботою в оболонці (їх можна використовувати для інших речей, але інтерактивне управління роботою оболонки є основною причиною їх існування).
Ви помітите, що під час введення Ctrl-Cвбиваються всі процеси поточних завдань, а не лише той, який їх запустив. Крім того, це не вбиває фонових завдань.
Це досягається з групами процесів. Завдання - це група процесів, запущених оболонкою, яку оболонка може розміщувати у фоновому режимі чи передньому плані (встановлювати як групу переднього плану терміналу чи ні) та вбивати в цілому.
Ви можете дізнатися про ідентифікатори групи процесів та ідентифікатори сеансів за допомогою ps -j
( j
для Jконтролю).
Щоб убити групу процесів PGID $x
, виконайте такі дії:
kill -- "-$x"
kill 0
вбиває групу процесу абонента.
Зауважте, що якщо ви зробите:, /bin/kill 0
оболонка почне нове завдання для виконання цієї kill
команди, такkill
вбиватиме себе само.
kill
Зазвичай це вбудована оболонка, тому kill
це знищить процесну групу оболонки.
Однак, коли оболонка є інтерактивною, це процес управління групами процесів, тому, як правило, немає іншого процесу в групі процесу оболонки. Усі процеси, розпочаті оболонкою, перебувають в інших групах процесів:
$ sleep 1000 &
[1] 22746
$ ps -j
PID PGID SID TTY TIME CMD
22735 22735 22735 pts/23 00:00:00 zsh
22746 22746 22735 pts/23 00:00:00 sleep
22749 22749 22735 pts/23 00:00:00 ps
Вгорі sleep
і ps
знаходяться у двох різних групах процесів, одна на задньому плані, одна на передньому плані, і вони відрізняються від групи процесів оболонки.
Ти можеш зробити:
(man kill & sleep 1; ps -j; kill 0)
Інтерактивна оболонка запустила б нову групу процесів для цієї підпакеті, і обидві підскладки і людина (а також інші команди, розпочаті людиною, як ваш пейджер, гроф ...) були б у тій самій групі процесів, і kill 0
там працюватиме. ( sleep
Вище, щоб дати досить часу для пейджера , щоб почати , щоб ми могли бачити його в ps -j
виході , перш ніж вбити його).
SIGTERM
процес, який він зробив.man
Команда вибрала його ігнорувати.