Jump to content

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

убийство
Оригинальный автор(ы) AT&T Bell Laboratories
Разработчик(и) Различные с открытым исходным кодом и коммерческие разработчики разработчики
Первоначальный выпуск февраль 1973 года ; 51 год назад ( 1973-02 )
Операционная система Unix , Unix-подобные , Plan 9 , Inferno , OS-9 , Windows , ReactOS , Singularity , IBM i
Платформа Кросс-платформенный
Тип Команда
Лицензия ReactOS: LGPL-2.1 или новее

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

Реализации

[ редактировать ]

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

[ редактировать ]

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

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

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

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-сервером закрыто.

Микропрограммное обеспечение ОС-9

[ редактировать ]

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

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

$ kill 7

Microsoft Windows и ReactOS

[ редактировать ]
The taskkill команда в Microsoft Windows

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

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

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

The taskkill команда в ReactOS

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

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

PS C:\> ps p* | where { $_.Company -like "Microsoft*" -and $_.WorkingSet -gt 10MB } | kill -confirm

Confirm
Are you sure you want to perform this action?
Performing operation "Stop-Process" on Target "powershell (6832)".
[Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help (default is "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 , стандартная оболочка для Research Microsoft микроядерной операционной системы Singularity, включает в себя kill команда для завершения фоновых процессов.

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

Singularity>kill SampleProcess

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

Singularity>kill 42

План 9 от Bell Labs

[ редактировать ]

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

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

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

kill troff | rc

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

См. также

[ редактировать ]
  1. ^ «Справочное руководство Bash: Встроенные функции управления заданиями» . Проект GNU . Проверено 24 февраля 2015 г.
  2. ^ «zsh: 17. Встроенные команды оболочки» . Проверено 24 февраля 2015 г.
  3. ^ "<сигнал.h>" . Базовые спецификации открытой группы, выпуск 7 . Проверено 24 февраля 2015 г.
  4. ^ Пол С. Даян (1992). OS-9 Guru-1: Факты . Галактика Индастриал Лимитед. ISBN  0-9519228-0-7 .
  5. ^ «Тасккилл» . Microsoft TechNet . Проверено 24 февраля 2015 г.
  6. ^ «Утилиты Resource Kit — Windows '98 Resource Kit» . Программное обеспечение ActiveXperts . Архивировано из оригинала 25 мая 2019 г. Проверено 24 февраля 2015 г.
  7. ^ «Утилиты GNU для Win32» . Архивировано из оригинала 9 февраля 2006 г. Проверено 24 февраля 2015 г.
  8. ^ реакции/taskkill.c на мастере · реакции/реактос · GitHub
  9. ^ Jump up to: а б «Трансляция команд UNIX в Plan 9» . План 9 вики . Архивировано из оригинала 5 сентября 2008 г. Проверено 24 февраля 2015 г.
  10. ^ ИБМ . «IBM System i Версия 7.2 Программирование Qshell» (PDF) . ИБМ . Проверено 05 сентября 2020 г.

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

[ редактировать ]
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: e1ae10619dcc1c5ee05ada444403f401__1720759860
URL1:https://arc.ask3.ru/arc/aa/e1/01/e1ae10619dcc1c5ee05ada444403f401.html
Заголовок, (Title) документа по адресу, URL1:
kill (command) - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)