Оригинальный автор | ATT Bell Laboratories |
---|---|
Разработчик (и) | Различные разработчики с открытым исходным кодом и коммерческие разработчики |
Первоначальный выпуск | Февраль 1973; 47 лет назад (1973-02) |
Операционная система | Unix, Unix-like, Plan 9, Inferno, OS-9, Windows, ReactOS, Singularity, IBM i |
Тип | Команда |
In computing, kill
- это команда , которая используется в нескольких популярных операционных системах для отправки сигналов работающему процессы.
В Unix и Unix-подобных операционных систем, kill
- это команда , используемая для отправки сигнала процессу. По умолчанию отправляемое сообщение является сигналом завершения , который запрашивает, чтобы процесс завершил работу. Но «убить» - это что-то вроде неправильного употребления; отправленный сигнал может не иметь ничего общего с завершением процесса. Команда kill
представляет собой оболочку вокруг системного вызова kill ()
, который отправляет сигналы процессам или группы процессов в системе, на которые ссылаются их числовые идентификаторы процессов (PID) или идентификаторы группы процессов (PGID). kill
всегда предоставляется как отдельная утилита, как определено стандартом POSIX. Однако в большинстве оболочек есть команды built-in kill
, которые могут немного отличаться от него.
Есть много разных сигналов, которые можно отправлять (полный список см. в signal ), хотя наиболее интересными для пользователей являются сигналы SIGTERM («завершить») и SIGKILL («убить»). По умолчанию отправляется сигнал SIGTERM. Программы, которые обрабатывают этот сигнал, могут выполнять полезные операции очистки (например, сохранять информацию о конфигурации в файл) перед завершением работы. Однако многие программы не реализуют специальный обработчик для этого сигнала, поэтому вместо него вызывается обработчик сигнала по умолчанию. В других случаях даже процесс, у которого есть специальный обработчик, работает неправильно, что не позволяет ему правильно обработать сигнал.
Все сигналы, кроме SIGKILL и SIGSTOP («стоп»), могут быть «перехвачены» процессом, что означает, что при выполнении программы может быть вызвана специальная функция. получает эти сигналы. Два исключения SIGKILL и SIGSTOP видны только ядру хост-системы, обеспечивая надежные способы управления выполнением процессов. SIGKILL завершает процесс, а SIGSTOP приостанавливает его до тех пор, пока не будет получен SIGCONT («продолжить»).
Unix предоставляет механизмы безопасности для предотвращения убийства других процессов неавторизованными пользователями. По сути, для того, чтобы процесс отправил сигнал другому, владелец процесса сигнализации должен быть таким же, как владелец принимающего процесса, или быть суперпользователем.
. Все доступные сигналы имеют разные имена и отображаются. к определенным числам. Важно отметить, что конкретное отображение между числами и сигналами может различаться в разных реализациях Unix. SIGTERM часто имеет номер 15, а SIGKILL - 9.
Процесс может отправлять сигнал SIGTERM четырьмя способами (идентификатор процесса - '1234'. в данном случае):
kill 1234 kill -s TERM 1234 kill -TERM 1234 kill -15 1234
Процесс может отправить сигнал SIGKILL тремя способами:
kill -s KILL 1234 kill -KILL 1234 kill -9 1234
Другие полезные сигналы включают HUP, TRAP, INT, SEGV и ALRM. HUP отправляет сигнал SIGHUP. Некоторые демоны, включая Apache и Sendmail, перечитывают файлы конфигурации после получения SIGHUP, поэтому для этого также может использоваться команда kill. Сигнал SIGINT может быть сгенерирован очень просто нажатием CTRL+C в большинстве оболочек Unix. Также часто CTRL+Z отображается на SIGTSTP ("конечная остановка"), а для CTRL+\ (обратная косая черта) сопоставлен с SIGQUIT, что может заставить программу делать дамп ядра.
xmms
, пользователь должен запустить команду killall xmms
. Это приведет к уничтожению всех процессов с именем xmms
и эквивалентно kill `pidof xmms`
в таких системах, как Solaris.kill `ps --no-headers -C firefox -o pid`
тогда как с pkill, можно просто ввести pkill firefox
.Команда kill
также доступна как встроенная оболочка в оболочке OS-9. Он используется для уничтожения другого процесса по идентификатору процесса.
Остановить процесс с идентификатором процесса «7»:
$ kill 7
taskkill
в Microsoft Windows В интерпретаторе командной строки Microsoft Windows PowerShell kill
является предопределенным псевдонимом команды для командлета Stop-Process
.
Microsoft Windows XP, Vista и 7 включите команду taskkill
для завершения процессов. Обычный синтаксис этой команды: taskkill / im "IMAGENAME"
. «Неподдерживаемая» версия kill
была включена в несколько выпусков Microsoft Windows Resource Kits, доступных для Windows 98.
GNU версии kill
были перенесены через Cygwin и выполнялись внутри подсистемы среды Unix, которую предоставляет Microsoft Windows Services для UNIX (Microsoft приобрела службы Windows для Unix оптом через их покупку Softway Systems и их продукт Interix от 17 сентября 1999 г.).
taskkill
в ReactOS Реализация ReactOS на основе варианта Windows. Его разработали Эндрю Риеди, Эндрю Нгуен и Хе Янг. Он находится под лицензией GPLv2.1 или более поздней версии.
Найдите все процессы, начинающиеся с буквы «p», которые были разработаны Microsoft и используют более 10 МБ памяти и убить их:
PS C: \>ps p * | где {$ _. Company-like "Microsoft *" -and $ _. WorkingSet -gt 10MB} | kill -confirm Подтвердить Вы уверены, что хотите выполнить это действие? Выполнение операции "Stop-Process" на Target "powershell (6832)". [Y] Да [A] Да для всех [N] Нет [L] Нет для всех [S] Приостановить [?] Справка (по умолчанию «Y»): A PS C: \>
Вот более простой пример, который запрашивает завершение процесса Explorer.exe :
PS C: \>taskkill / im explorer.exe
В этом примере принудительно завершается процесс:
PS C: \>taskkill / f / im explorer.exe
Процессы также могут быть остановлены их номером PID :
PS C: \>taskkill / pid 3476
Singularity shell, Стандартная оболочка для микроядра Microsoft Research, операционной системы Singularity, включает команду kill
для завершения фоновых процессов.
Остановить процесс с именем «SampleProcess»:
Singularity>kill SampleProcess
Остановить процесс с идентификатором процесса «42»:
Singularity>kill 42
В соответствии с Plan 9 от Bell Labs программа уничтожения фактически не выполняет это завершение и не принимает идентификаторы процессов. Вместо этого он берет фактические имена процессов и выводит команды для rc, оболочки, используемой Plan 9, чтобы убить процесс.
Предоставляется аналогичная команда. называется slay
, который делает то же самое, но для процессов, которые отказываются убивать таким образом.
Например, чтобы убить все экземпляры troff, один из типов:
kill troff | rc
Команда kill также была перенесена в операционную систему IBM i.
В Викибуке Руководство по Unix есть страница по темам: Команды |
kill
- Справочник по командам и утилитам, Единая спецификация UNIX, выпуск 7 из The Open Group kill
- Справочник по системным интерфейсам, Единая спецификация UNIX, выпуск 7 из The Open Group kill (1)
– Plan 9 Руководство программиста, том 1kill (1)
– Inferno Общие команды Руководство kill (1)
– Linux Команды пользователя Руководство