Alguns aplicativos permitem apenas uma instância em execução (como eclipse, se você deseja usar o mesmo espaço de trabalho). Portanto, se eu fizer login de outro local, tenho que interromper / fechar o aplicativo que estava aberto quando fiz o login de outro local.
Eu sempre uso o comando kill para matar o processo em execução. Mas, se você matar um processo, talvez ele não salve alguns estados que são úteis para uso futuro. No entanto, se você "fechá-lo" corretamente, clicando no botão Fechar, por exemplo, ele salvará os estados corretamente.
Existe uma maneira de "fechar" corretamente um aplicativo na linha de comando? Eu sei que isso pode variar de aplicativo, então vamos ser um pouco mais genéricos: como enviar um sinal para outro aplicativo em execução, e esse sinal funciona como se clicássemos no botão "Fechar" na barra superior?
fonte
Respostas:
Por padrão, o comando kill enviará
SIGTERM
(sinal de terminação) para o processo em execução. Ao contrárioSIGKILL
, que matará o processo à força sem chance de responder, oSIGTERM
sinal pode ser interceptado pelo processo, permitindo que ele termine normalmente. Se é ou não realmente não terminar normalmente é totalmente dependente do próprio processo; pode facilmente se matar ou ignorar completamente o sinal.Você pode garantir que está enviando, em
SIGTERM
vez de algum outro sinal, explicitando-o na linha de comando da seguinte maneira:fonte
kill
comando tenta um desligamento normal. Se o aplicativo não fechar corretamente nesse caso, ele estará quebrado. (E a grande maioria dos aplicativos não são quebrados.)kill -s TERM <firefox-pid>
, ele não será desligado normalmente e, quando eu o reiniciar, perguntará se eu quero recuperar a sessão travada. : suspiro:Observe que, ao usar, em
pkill
vez dekill
, para especificar TERM, a sintaxe é:pkill
é como matar, mas você pode usar o nome do processo em vez do id.man pkill
fonte