В чем разница между использованием системного монитора и терминала для уничтожения процесса?

Когда я закрываю свой файл minecraft, он никогда не закрывается полностью, я искал решение, но не нашел его. Через некоторое время я сдался и решил, что я вручную убью его, когда захочу его закрыть.

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

В чем разница между способом «Системный монитор» и «Путь к терминалу»? Монитор системы делает что-то еще в фоновом режиме, которое нет в команде kill?

1
задан 4 January 2016 в 21:39

2 ответа

Если вы убиваете приложение с помощью терминала, я думаю, вы запустили:

kill 1234

На системном мониторе вы выбрали процесс и выбрали для отправки KILL в процесс.

[d3 ] По умолчанию сигнал, отправленный процессу при использовании plain kill $pid, является TERM. Это позволяет приложениям прерываться изящно. Однако при отправке KILL программа сразу же исчезает без возможности чистого закрытия (т. Е. Сохранения данных). Чтобы отправить сигнал KILL из командной строки, используйте:

kill -KILL 1234

(альтернативный способ запуска этой команды - kill -9 1234, это только вопрос предпочтения)

1
ответ дан 25 May 2018 в 17:30

Это потому, что по умолчанию ваш pgrep kill отправляет SIGTERM (завершение). Если приложение не находится в хорошем состоянии, SIGTERM не будет работать. «Процесс Kill» в System Monitor отправляет команду SIGKILL, которая буквально убивает ее. Это два разных посылаемых сигнала. Если вы хотите сделать это с помощью pgrep, вы должны использовать kill -9, опция -9 отправит сигнал SIGKILL, а затем будет точно такой же, какой делает «Kill Process» в системном мониторе.

FYI, имя команды kill немного вводит в заблуждение. man kill говорит:

kill - отправить сигнал процессу

Это может быть любой сигнал. Чтобы увидеть список всех сигналов типа man --sections=7 signal и прокрутите вниз.

Затем говорит:

kill - отправить сигнал процессу

[!d6 ]

Сигнал по умолчанию для kill - TERM.

0
ответ дан 25 May 2018 в 17:30

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

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