12

Некоторые приложения допускают только один работающий экземпляр (например, eclipse, если вы хотите использовать одно и то же рабочее пространство). Поэтому, если я вхожу из другого места, мне приходится убивать / закрывать приложение, которое было открыто при предыдущем входе в систему из другого места.

Я всегда использую команду kill, чтобы убить запущенный процесс. Но если вы убьете процесс, он может не сохранить некоторые состояния, которые будут полезны для будущего использования. Однако, если вы "закроете" его правильно, например, нажав кнопку "Закрыть", он сохранит состояния должным образом.

Есть ли способ правильно "закрыть" приложение из командной строки? Я знаю, что это может отличаться от приложений, поэтому давайте будем более общими: как отправить сигнал другому запущенному приложению, и этот сигнал работает так же, как если бы мы нажимали кнопку "Закрыть" на верхней панели?

2 ответа2

27

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

Вы можете убедиться, что отправляете SIGTERM вместо какого-либо другого сигнала, указав его в командной строке следующим образом:

kill -s TERM <pid>
3

Обратите внимание, что при использовании pkill а не kill , для указания TERM используется следующий синтаксис:

pkill -TERM <process-name>

pkill похож на kill, но вы можете использовать имя процесса, а не идентификатор. man pkill

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .