Linux: fecha um programa com linha de comando (não mata)

9

Alguns aplicativos permitem apenas uma instância em execução (como eclipse, se você quiser usar a mesma área de trabalho). Portanto, se eu fizer login de outro local, preciso matar / fechar o aplicativo que estava aberto quando fiz login anteriormente de outro local.

Eu sempre uso o comando kill para matar o processo em execução. Mas, se você matar um processo, pode não salvar alguns estados que são úteis para uso futuro. No entanto, se você "fechar" corretamente clicando no botão Fechar, por exemplo, ele salvará os estados corretamente.

Existe uma maneira de "fechar" corretamente um aplicativo a partir da linha de comando? Eu sei que isso pode variar de aplicativos, então vamos ser um pouco mais genéricos: como enviar um sinal para outro aplicativo em execução, e este sinal funciona como se clicássemos no botão "fechar" na barra superior?

    
por CodeNoob 31.03.2012 / 07:17

2 respostas

22

Por padrão, o comando kill enviará SIGTERM (sinal de terminação) para o processo em execução. Ao contrário de SIGKILL , que forçará a morte do processo sem chance de responder, o sinal SIGTERM pode ser interceptado pelo processo, permitindo que ele termine de forma elegante. Se realmente ele termina normalmente é inteiramente dependente do processo em si; pode facilmente matar-se ou ignorar completamente o sinal.

Você pode garantir que está enviando SIGTERM em vez de algum outro sinal, tornando-o explícito na linha de comando:

kill -s TERM <pid>
    
por 31.03.2012 / 07:43
1

Observe que, ao usar pkill em vez de kill , para especificar TERM, a sintaxe é:

pkill -TERM <process-name>

pkill é como matar, mas você pode usar o nome do processo em vez do id. man pkill

    
por 05.07.2018 / 19:14