Некоторые приложения допускают только один работающий экземпляр (например, eclipse, если вы хотите использовать одно и то же рабочее пространство). Поэтому, если я вхожу из другого места, мне приходится убивать / закрывать приложение, которое было открыто при предыдущем входе из другого места.
Я всегда использую команду kill, чтобы убить запущенный процесс. Но если вы убьете процесс, он может не сохранить некоторые состояния, которые будут полезны для будущего использования. Однако, если вы «закроете» его правильно, например, нажав кнопку «Закрыть», он сохранит состояния должным образом.
Есть ли способ правильно «закрыть» приложение из командной строки? Я знаю, что это может отличаться от приложений, так что давайте будем немного более общими: как отправить сигнал другому запущенному приложению, и этот сигнал работает так же, как если бы мы нажимали кнопку «Закрыть» на верхней панели?
источник
Ответы:
По умолчанию команда kill отправляет
SIGTERM
(сигнал завершения) запущенному процессу. В отличие от этогоSIGKILL
, который принудительно убивает процесс без возможности ответить,SIGTERM
сигнал может быть перехвачен процессом, что позволяет ему завершить его изящно. Является ли это на самом деле это прекращает грациозно полностью зависит от самого процесса; он может так же легко убить себя или полностью игнорировать сигнал.Вы можете убедиться, что отправляете
SIGTERM
вместо какого-либо другого сигнала, указав его в командной строке следующим образом:источник
kill
предпринимает попытку постепенного выключения. Если в этом случае приложение не закрывается полностью, оно сломано. (И подавляющее большинство приложений не сломаны.)kill -s TERM <firefox-pid>
, он не будет корректно завершать работу, и когда я запускаю его снова, он спрашивает меня, хочу ли я восстановить сбойный сеанс. : sigh:Обратите внимание, что при использовании
pkill
вместоkill
, чтобы указать TERM, синтаксис:pkill
Это как убить, но вы можете использовать имя процесса, а не идентификатор.man pkill
источник