kill (команда) - kill (command)

редактировать
kill
Оригинальный автор ATT Bell Laboratories
Разработчик (и) Различные разработчики с открытым исходным кодом и коммерческие разработчики
Первоначальный выпускФевраль 1973; 47 лет назад (1973-02)
Операционная система Unix, Unix-like, Plan 9, Inferno, OS-9, Windows, ReactOS, Singularity, IBM i
Тип Команда

In computing, kill- это команда , которая используется в нескольких популярных операционных системах для отправки сигналов работающему процессы.

Содержание
  • 1 Реализации
    • 1.1 Unix и подобные Unix
      • 1.1.1 Примеры
      • 1.1.2 Связанные программы
    • 1.2 Microware OS-9
      • 1.2.1 Пример
    • 1.3 Microsoft Windows и ReactOS
      • 1.3.1 Примеры
    • 1.4 Microsoft Singularity
      • 1.4.1 Примеры
    • 1.5 Plan 9 от Bell Labs
      • 1.5.1 Примеры
    • 1.6 Другое
  • 2 См. Также
  • 3 Ссылки
  • 4 Дополнительная литература
  • 5 Внешние ссылки
Реализации

Unix и подобные Unix

В 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, что может заставить программу делать дамп ядра.

Связанные программы

  • killall - в некоторых вариантах Unix, таких как Solaris, эта утилита автоматически запускается, когда система завершает работу. Он ведет себя так же, как приведенная выше команда kill, но вместо отправки сигнала отдельному процессу, сигнал отправляется всем процессам в системе. Однако для других, таких как IRIX, Linux и FreeBSD, предоставляется аргумент, указывающий имя процесса (или процессов), который нужно уничтожить. Например, чтобы убить процесс, такой как экземпляр XMMS музыкального проигрывателя, вызванный xmms, пользователь должен запустить команду killall xmms. Это приведет к уничтожению всех процессов с именем xmmsи эквивалентно kill `pidof xmms`в таких системах, как Solaris.
  • pkill - сигнализирует о процессах на основе имени и других атрибутов. Он был представлен в Solaris 7 и с тех пор повторно реализован для Linux, NetBSD и OpenBSD. pkill делает процессы убийства на основе их имени намного более удобными: например, чтобы убить процесс с именем firefox без pkill (и без pgrep ), нужно набрать kill `ps --no-headers -C firefox -o pid`тогда как с pkill, можно просто ввести pkill firefox.
  • xkill - при вызове без каких-либо параметров курсор мыши изменится со стрелки на значок «x», и пользователь может щелкнуть окно, чтобы заставить X-сервер чтобы закрыть соединение с клиентом, владеющим окном. Это часто приводит к завершению процесса, когда он обнаруживает, что его соединение с X-сервером было закрыто.

Microware OS-9

Команда killтакже доступна как встроенная оболочка в оболочке OS-9. Он используется для уничтожения другого процесса по идентификатору процесса.

Пример

Остановить процесс с идентификатором процесса «7»:

$ kill 7

Microsoft Windows и ReactOS

Команда 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

Microsoft Singularity

Singularity shell, Стандартная оболочка для микроядра Microsoft Research, операционной системы Singularity, включает команду killдля завершения фоновых процессов.

Примеры

Остановить процесс с именем «SampleProcess»:

Singularity>kill SampleProcess

Остановить процесс с идентификатором процесса «42»:

Singularity>kill 42

Plan 9 от Bell Labs

В соответствии с Plan 9 от Bell Labs программа уничтожения фактически не выполняет это завершение и не принимает идентификаторы процессов. Вместо этого он берет фактические имена процессов и выводит команды для rc, оболочки, используемой Plan 9, чтобы убить процесс.

Предоставляется аналогичная команда. называется slay, который делает то же самое, но для процессов, которые отказываются убивать таким образом.

Примеры

Например, чтобы убить все экземпляры troff, один из типов:

kill troff | rc

Другое

Команда kill также была перенесена в операционную систему IBM i.

См. также
Ссылки
Дополнительная литература
Внешние ссылки
В Викибуке Руководство по Unix есть страница по темам: Команды
Последняя правка сделана 2021-05-25 08:37:13
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте