В man page
ней говорится:
0 All processes in the current process group are signaled
И я попробовал так:
$ man kill &
[1] 15247
$
[1]+ Stopped man kill
$ kill 0
$ ps
15247 pts/41 00:00:00 man
Как я понял, kill 0
будут убиты все процессы в текущем процессе, который включает в себя pid15247
. Тем не менее, это ничего не сделало в этом примере. У кого-нибудь есть идеи о том, как его использовать?
Ответы:
Я не смог найти заметку о том, как
kill 0
ведет себя на странице убийства (Debian).Но у меня есть два комментария:
(1) «Группа процессов» может не соответствовать вашим ожиданиям. Вы можете отобразить ID группы процессов (PGID) с помощью
ps -o "%p %P %r %c %a"
:Таким образом,
man
вместе с инструментом отображения пейджера (less
) находится в той же группе процессов, но это отличается от того из оболочки (zsh в моем случае).(2) Вероятно, есть две разные
kill
команды. Один встроенныйbash
(см. Bash (1), раздел «Команды, построенные оболочкой») и внешний/bin/kill
. Эти двое могут вести себя по-разному! Вы можете явно указать, какой из них вы хотите запустить, набравbuiltin kill
илиcommand kill
вместоkill
. Внешняя команда , которую вы можете также запустить, указав путь:/bin/kill
.источник
PPID
является идентификатором родительского процесса, который часто, но не обязательно, идентификатором группы процессов. Правильный столбецPGID
, который не отображается вps
выводе по умолчанию ; вам нужно использовать-o
опцию для создания пользовательского формата, который включает его.:-(
)Чтобы остановить все ваши процессы и выйти из системы, введите:
Это посылает сигнал 9, сигнал SIGKILL, всем процессам, имеющим идентификатор группы процессов, равный идентификатору группы процессов отправителей. Поскольку оболочка не может игнорировать сигнал SIGKILL, это также останавливает оболочку входа и выходит из системы.
Это IBM AIX Manual, но, возможно, эта концепция применима.
Эта функциональность не существует в Linux "kill" (как я вижу); но вот как это "убивает" себя ведет
Killing 0 не убивает pid 0. Вместо этого это опция kill для уничтожения всех процессов в текущей группе . Своей командой вы убиваете все в идентификаторе группы процессов (GID) оболочки, которая выполнила команду kill.
источник