После kill <some_pid>
долгих лет использования простого в Unix-системах я учился pkill
у более молодого коллеги, разбирающегося в Linux 1 .
Вскоре я принял Linux-путь, pgrep
-ing и pkill
-ный через много дней и ночей, через замедления и условия гонки. Это было все хорошо и хорошо.
Но сейчас я не вижу ничего, кроме killall
. Кажется, как-то упоминаются только инструкции killall
, и я не уверен, является ли это какой-то параллельной разработкой, killall
преемником pkill
или чем-то еще.
Кажется, он работает более целенаправленно pkill
, но я уверен, что что-то упустил.
Может ли Ubuntu / Debian-подкованный 2 человек объяснить, когда (или почему) killall
следует использовать, особенно если это следует использовать в предпочтении pkill
(когда это pkill
часто кажется проще, потому что я могу быть неаккуратным с сопоставлением имен, по крайней мере по умолчанию).
Говоря о killall
, я не имею в виду команду, которая в некоторых системах Unix (Solaris, AIX,?) Убивала все пользовательские процессы. Вот описание этой версии со справочной страницы для IBM AIX :
Команда killall отменяет все запущенные вами процессы, кроме тех, которые производят процесс killall. Эта команда предоставляет удобное средство отмены всех процессов, созданных оболочкой, которой вы управляете. При запуске пользователем root команда killall отменяет все отменяемые процессы, кроме тех, которые его запустили. Если указано несколько сигналов, действует только последний.
1 «коллега» - это бесплатное обновление с «коллеги», так же может быть.
2 Изначально я думал, что это Linux или Debian, но некоторые источники утверждают, что Linux killall
является производным от BSD со вкусом Unix.
источник
killall
(старая?) Система Solaris, но она вела себя по-другому. Это убило все.killall is safer for users to blindly copy and paste
За исключением случаев, когда вы находитесь на машине, где killall действительно убивает всех. К сожалению, две разные утилиты имеют одинаковое название.Пожалуйста, будьте осторожны с "killall". В некоторых системах (я забыл, какая) killall убивает все процессы. Он будет молча игнорировать аргументы и полностью остановить вашу систему.
источник
kill -9 -1
может убить вашу систему, аkillall -9 -1
может и так. Но не толькоkillall [program]
если вы активируете / etc / bash_completion, после
killall <part_of_process_name>
и нажмите вкладку - авто завершает имя процесса из списка запущенных процессовисточник
pkill plug<tab>
убиваю плагин flash для Firefox, когда я знаю, что у меня нет ничего, что я хочу использовать некоторое время, но все еще хочу активно использовать Firefox. Это функция оболочки, а не разница между killall и pgrep / pkill.Если вы посмотрите на опции обеих программ, вы увидите, что они обе делают одно и то же, но по-разному.
pkill выполнит сопоставление различных атрибутов процесса (CMD, PID, PPID, UID ...) и отправит данный сигнал каждому соответствующему процессу. (Для CMD используется регулярное выражение, для других это строка). pkill не интерактивен, но лучше для пакетных программ.
killall выполнит сопоставление имени процесса (comm) или пользователя (user), а не всей командной строки. Аргумент используется в качестве простой строки и должен соответствовать всему значению 'comm' (есть также опция --regexp, чтобы изменить это). У killall есть опции --interactive и --younger-than, которых нет у pkill.
Существует также killall5 из дней SysV, который был портирован на другие варианты UNIX (предположительно в пакете Ubuntu 'sysutils'). Это ведет себя по-другому по-старому. Это часто использовалось внутри сценариев инициализации для выключения или перехода в однопользовательский режим.
источник
pkill
ни вkillall
коем случае не следует использовать в сценариях, только в интерактивном режиме и с осторожностью.