stringtranslate.com

убить (команда)

В вычислительной техникеkillкоманда , которая используется в нескольких популярных операционных системах для отправки сигналов запущенным процессам .

Реализации

Unix и Unix-подобные

В Unix и Unix-подобных операционных системах — killэто команда , используемая для отправки сигнала процессу. По умолчанию отправляемое сообщение — это сигнал завершения , который запрашивает завершение процесса . Но kill — это не совсем верное название; отправляемый сигнал может не иметь ничего общего с завершением процесса. killКоманда представляет собой оболочку системного вызова , который отправляет сигналы процессам или группам процессов в системе, на которые ссылаются их числовые идентификаторы процессов (PID) или идентификаторы групп процессов (PGID). всегда предоставляется как отдельная утилита, как определено стандартом POSIX . Однако большинство оболочек имеют встроенные команды, которые могут немного отличаться от нее. [1] [2]kill() kill kill

Существует множество различных сигналов, которые могут быть отправлены (см. сигнал для полного списка), хотя сигналы, которые обычно больше всего интересуют пользователей, это SIGTERM («завершить») и SIGKILL («убить»). По умолчанию отправляется сигнал SIGTERM. Программы, которые обрабатывают этот сигнал, могут выполнять полезные операции очистки (например, сохранять информацию о конфигурации в файл) перед выходом. Однако многие программы не реализуют специальный обработчик для этого сигнала, и поэтому вместо него вызывается обработчик сигнала по умолчанию. В других случаях даже процесс, имеющий специальный обработчик, срабатывает неправильно, что не позволяет ему правильно обработать сигнал.

Все сигналы, за исключением SIGKILL и SIGSTOP («стоп»), могут быть «перехвачены» процессом, что означает, что специальная функция может быть вызвана, когда программа получает эти сигналы. Два исключения SIGKILL и SIGSTOP видны только ядру хост-системы , что обеспечивает надежные способы управления выполнением процессов. SIGKILL завершает процесс, а SIGSTOP приостанавливает его до получения SIGCONT («продолжить»). [3]

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

Все доступные сигналы имеют разные имена и сопоставлены с определенными числами. Конкретное сопоставление чисел и сигналов может различаться в разных реализациях Unix. SIGTERM часто имеет номер 15, а SIGKILL — номер 9.

Примеры

Процессу можно отправить сигнал SIGTERM четырьмя способами (в данном случае идентификатор процесса — «1234»):

убить 1234 убить -s TERM 1234 убить -TERM 1234 убить -15 1234        

Процессу можно отправить сигнал SIGKILL тремя способами:

убить  -s  УБИТЬ 1234 убить -УБИТЬ 1234 убить -9 1234     

Другие полезные сигналы включают HUP, TRAP, INT, SEGV и ALRM. HUP отправляет сигнал SIGHUP . Некоторые демоны, включая Apache и Sendmail , перечитывают файлы конфигурации при получении SIGHUP, поэтому для этого также можно использовать команду kill. Сигнал SIGINT можно сгенерировать очень просто, нажав CTRL+C в большинстве оболочек Unix . Также часто + сопоставляют с SIGTSTP («терминальная остановка»), а + (обратная косая черта) сопоставляют с SIGQUIT , что может заставить программу выполнить дамп ядра .CTRLZCTRL\

Микропрограмма ОС-9

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

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

$ убить 7

Microsoft Windows и ReactOS

Команда taskkillв Microsoft Windows

В интерпретаторе командной строки Windows PowerShell от Microsoft — killэто предопределенный псевдоним команды для Stop-Process командлета .

Microsoft Windows XP , Vista и 7 включают команду taskkill[5] для завершения процессов. Обычный синтаксис для этой команды — taskkill /im "IMAGENAME". «Неподдерживаемая» версия killбыла включена в несколько выпусков Microsoft Windows Resource Kits, доступных для Windows 98. [6]

Версии GNUkill были перенесены через Cygwin и работают внутри подсистемы среды Unix, которую предоставляет Microsoft Windows Services for UNIX (Microsoft приобрела Windows Services for Unix оптом, купив Softway Systems и ее продукт Interix 17 сентября 1999 года). [7]

Команда taskkillв ReactOS

Реализация ReactOS основана на варианте Windows. Она была разработана Эндрю Риеди, Эндрю Нгуеном и Хе Янгом. Она лицензирована под LGPLv2.1 или более поздней версией. [8]

Примеры

Найдите все процессы, начинающиеся с буквы «p», которые были разработаны Microsoft и используют более 10 МБ памяти, и завершите их:

PS C:\> ps p *  |  где {  $_ . Компания  -типа  "Microsoft*"   $_ . WorkingSet  ->  10MB  }  |  kill -confirmПодтвердить Вы уверены, что хотите выполнить это действие? Выполнение операции "Stop-Process" на целевом объекте "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 компании Microsoft Research , включает команду для завершения фоновых процессов.kill

Примеры

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

Сингулярность>убить SampleProcess

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

Сингулярность>убить 42

План 9 от Bell Labs

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

Похожая команда называется slay, которая делает то же самое, но для процессов, которые отказываются быть завершенными таким образом. [9]

Примеры

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

убить троффа | rc

Другие

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

Смотрите также

Ссылки

  1. ^ "Справочное руководство Bash: встроенные функции управления заданиями". Проект GNU . Получено 24.02.2015 .
  2. ^ "zsh: 17. Встроенные команды оболочки" . Получено 24.02.2015 .
  3. ^ "<signal.h>". Спецификации Open Group Base, выпуск 7. Получено 24.02.2015 .
  4. ^ Пол С. Даян (1992). Гуру OS-9 - 1: Факты . Galactic Industrial Limited. ISBN 0-9519228-0-7.
  5. ^ "Taskkill". Microsoft TechNet . Получено 24.02.2015 .
  6. ^ "Resource Kit Utilities - Windows '98 Resource Kit". ActiveXperts Software . Архивировано из оригинала 2019-05-25 . Получено 2015-02-24 .
  7. ^ "GNU utilities for Win32". Архивировано из оригинала 2006-02-09 . Получено 2015-02-24 .
  8. ^ reactos/taskkill.c на главном · reactos/reactos · GitHub
  9. ^ ab "Перевод команд UNIX в Plan 9". Plan 9 wiki . Архивировано из оригинала 2008-09-05 . Получено 2015-02-24 .
  10. ^ IBM . "IBM System i Version 7.2 Programming Qshell" (PDF) . IBM . Получено 2020-09-05 .

Дальнейшее чтение

Внешние ссылки