Isso é como o programa individual responde aos sinais. Se você fizer um kill
com um 15 ( SIGTERM
), um programa deve fazer a limpeza e sair. Se, o que e como são outro assunto.
No Linux e no Mac OS X, existe um kill
ou killall command
que permite que o aplicativo solicite um documento não salvo antes de sair, como pedir que o aplicativo seja encerrado ou clicar no botão "fechar" de a janela.
Por exemplo, digite somecommand TextEdit
no Mac e o TextEdit perguntará se você deseja salvar o documento não salvo.
Isso é como o programa individual responde aos sinais. Se você fizer um kill
com um 15 ( SIGTERM
), um programa deve fazer a limpeza e sair. Se, o que e como são outro assunto.
Para o OS-X, tente o script em Saia educadamente dos aplicativos da linha de comando do MacOSXHints. com. Você pode dizer ao aplicativo de destino se deseja ou não salvar seus arquivos abertos. Específico do OS-X - ele usa o AppleScript.
Não parece, embora você possa verificar os vários sinais de eliminação disponível e experimentá-los. Eu tentei alguns, mas todos parecem apenas interromper o processo em vez de enviar um sinal de sair.
Eu acho que depende da aplicação, mas matar -2, -3 ou -15 pode ser o que você está procurando ...
Mac:
osascript -e 'tell app "TextEdit" to quit'
Se você precisar especificar o aplicativo como um argumento,
osascript -e 'on run args
tell app (item 1 of args) to quit
end run' TextEdit
(Ou salve o script citado em um arquivo e osascript
script
appname
.)
Os sinais que terminam um aplicativo não devem permitir que o aplicativo entre em mais interação com o usuário. O usuário não está mais disponível (o sinal HUP
, cujo significado original era que o usuário estava conectado ao computador através de um modem e o telefone morreu) ou o usuário não quer ser incomodado (o padrão TERM
sinal e seus irmãos mais violentos QUIT
e KILL
). Muitos aplicativos tentarão salvar o trabalho não salvo em algum lugar se receberem o sinal HUP
.
Uma opção diferente para o Linux (e outros unices) é enviar uma notificação para a janela, em vez do processo: a mensagem _NET_CLOSE_WINDOW
diz ao aplicativo para se livrar de uma janela específica normalmente. Você pode enviar esta mensagem a partir da linha de comando com wmctrl
, por exemplo, wmctrl -c WINDOW_TITLE_SUBSTRING
. Infelizmente, nem todos os aplicativos suportam isso.
Tags command-line process kill linux macos