Maneira mais fácil de matar suavemente um aplicativo intermitente sem resposta?

3

Às vezes, quando tenho muitos aplicativos abertos fazendo muitas coisas com muita memória e com I / O, meu computador inevitavelmente começa a se debater um pouco. Enquanto aguardo que as coisas se acalmem, muitas vezes decido fechar alguns aplicativos que realmente não precisam estar abertos. O problema é que muitos dos aplicativos (especialmente aqueles que têm processos de background / idle) tendem a não responder de forma intermitente até que o thrashing desapareça, portanto, é preciso muito tempo para eles obterem o foco para enviar + qou quando eu for para fechá-los, clicando no seu ícone no banco dos réus só me é apresentada a opção de forçar a sair. Eu sei que esses aplicativos não são permanentemente indiferentes, então eu prefiro enviar um sinal TERM delicado e fazê-los desistir quando puderem. Eu costumo acabar matando-os usandopkill do terminal, no entanto, isso nem sempre é viável, especialmente se o terminal também for lavado.

Qual é a maneira mais fácil de enviar o sinal para matar um processo se / quando esse processo estiver intermitentemente sem resposta? (Em uma situação na qual o acesso ao terminal e / ou o início de um novo aplicativo não é conveniente.)

ESultanik
fonte

Respostas:

2

Você deve poder usar o AppleScript:

tell application "name" to quit

Usar "para sair" em vez de "forçar a saída" significa que ele não será forçado, independentemente de o aplicativo não responder. Em vez disso, ele pedirá que o aplicativo seja encerrado sempre que possível.

Com casca:

osascript -e 'tell application "name" to quit'
grg
fonte
Isso não é funcionalmente equivalente a usar pkillpara enviar um SIGTERM? Eu estava esperando que houvesse alguma maneira de evitar o uso do shell. Existe uma maneira conveniente de executar um comando AppleScript instantaneamente sem estar no terminal ou executando o editor AppleScript?
ESultanik
Eu vou aceitar esta resposta porque, salvo quaisquer futuros acréscimos / mudanças no OS X, este é provavelmente o melhor que eu vou conseguir. Embrulhei esse comando em um script ActionScript maior que enumera todos os processos em execução e solicita que eu saia suavemente. Eu tenho o código para isso em um post no blog .
ESultanik