Какова цель опции -9 в команде kill?

Переход на серый цвет не означает, что ТБ разбился с замораживанием. Это сигнализирует о том, что приложение занято. Только быть занятым в течение бесконечного времени было бы замораживанием. Если ваше приложение продолжает работать после завершения загрузки IMO, все в порядке.

Невозможность прочитать уже загруженные письма во время большего запуска загрузки больше похожа на функцию списка пожеланий для TB. Но учтите следующее: при настройке своей учетной записи в IMAP вы не сможете добавить дополнительную загрузку, когда программа все еще загружена.

1
задан 4 September 2012 в 23:05

3 ответа

Команда kill отправит определенный сигнал процессу с данным идентификатором (PID):

kill -<signal> <pid>

Конечно, мы можем только убивать процессы, которыми мы владеем, тогда как root может убить все процессы. См. kill для хорошей сводки вычислительных сигналов.

Сигналы kill могут посылаться, перечислены в man-странице. Сигнал может быть представлен по имени или по номеру. Если сигнал не подан, сигнал по умолчанию 15 соответственно. TERM.

Таким образом, все три приведенные ниже команды идентичны:

kill -9 1234
kill -KILL 1234
kill -SIGKILL 1234

Разница между SIGTERM и SIGKILL заключается в том, как приложение может воздействовать на signal:

TERM: приложение сможет завершить работу, то есть правильно запустить процедуру отключения. KILL: приложения немедленно прекращаются и немедленно уничтожаются (что может привести к потере данных или повышению готовности, чтобы сообщить о предполагаемом сбое в некоторых случаях).
37
ответ дан 25 May 2018 в 06:51

Обратите внимание, что все следующие синонимы:

kill -9 1234
kill -KILL 1234
kill -SIGKILL 1234

Стоит отметить, что в мире обработки сигналов SIGKILL является одним из немногих уникальных, которые обрабатываются операционной системой, а не программа. Когда вы запускаете kill -9, вы не сообщаете приложению о завершении, вместо этого вы говорите операционной системе, чтобы остановить запуск программы, независимо от того, что делает программа.

После SIGKILL отправляется, программа немедленно будет остановлена. Если какие-либо вызовы ядра выполняются (например, File IO) от имени программы, эти вызовы могут или не продолжаться до тех пор, пока они не закончатся, в зависимости от вызова, но сама программа больше не будет работать. Обратите внимание, что задачи для операционной системы или задачи, запущенные под отладчиком, могут вести себя по-другому здесь.

Другим сигналом, который нельзя заблокировать, является SIGSTOP, который имеет аналогичный эффект, но вместо этого зависает программа; вы можете отправить SIGCONT позже, чтобы возобновить его. Это поведение полностью контролируется ОС, и программа не получает никаких предварительных уведомлений.

Все остальные сигналы отправляются в программу; он может обрабатывать их, однако он выбирает, или если он игнорирует сигнал, тогда выполняется поведение по умолчанию.

Вот несколько полезных сигналов, которые вы можете найти в процессе:

SIGHUP - hangup Сообщает программе, что пользователь отключен (например, сеанс SSH или окно терминала закрыто ). Обычно делает изящное завершение программы. SIGINT - прерывание Отправлено, когда вы нажимаете CTRL + C. Обычно означает «остановить то, что вы делаете» - может или не может убить программу. SIGTERM - завершение. По умолчанию отправлено kill и killall. Обычно заканчивается программа ... иногда после завершения программы все, что она делает. SIGSTOP - остановка Отправляется, когда вы нажимаете CTRL + Z. Приостанавливает программу, обсуждаемую выше. SIGPIPE - трубка закрыта. Сообщает программе, что трубопровод закрыт. Обычно завершает работу программы. Например, cat /etc/passwd | head -n1 отправит SIGPIPE в процесс cat после печати первой строки, в результате чего cat завершит работу перед завершением всего файла.

Хотя все эти сигналы происходят «естественно» в их собственной настройке, вы можете использовать сигнал для подделки условия для достижения желаемого результата.

Например, если вы хотите прекратите чей-то сеанс SSH, вы можете просто убить процесс, но тем самым вы не сможете обновить его файл HISTORY, что может быть важно по соображениям безопасности. Но вместо этого, если вы отправите SIGSTOP , тогда процесс будет считать, что соединение скончалось и выполнит стандартную очистку.

12
ответ дан 25 May 2018 в 06:51
  • 1
    Ctrl + \ отправляет SIGQUIT, где действие по умолчанию - это сброс ядра и завершение. Это можно использовать, если программа делает что-то очень неправильное, вам нужно немедленно ее остановить и захотеть позже ее отладить. – Simon Richter 5 September 2012 в 12:51
  • 2
    @SimonRichter О, ты прав. исправлено. – tylerl 5 September 2012 в 14:08

kill -9 Значение: процесс будет уничтожен ядром; этот сигнал нельзя игнорировать. 9 означает, что сигнал KILL недоступен или игнорируется

Использует: kill -9 singal

Kill Значение: команда kill без какого-либо сигнала передает сигнал 15 , который завершает процесс обычным способом.

Использует: Убить сигнал, который может обрабатываться программистами

6
ответ дан 25 May 2018 в 06:51

Другие вопросы по тегам:

Похожие вопросы: