Como matar todos os processos no OS X com um script

0

Estou procurando um script que mate todos os processos no meu Mac. Para ser mais específico, o script deve matar todos os processos e encerrar.

Bem, o ponto é que eu quero matar todos os processos e reiniciar o Mac OS X , mas não desligá-lo. Eu sei que existem comandos como sudo shutdown -r now , mas não está funcionando no meu Mac (esse comando está reiniciando, mas não mata os processos após a reinicialização).

Não posso usar sudo shutdown - h now porque não tenho acesso ao meu Mac (somente o TeamViewer para se conectar ao meu Mac Mini). Então eu não posso apertar o botão liga / desliga / reinicia.

Alguma idéia de como fazer isso?

    
por Macko 03.09.2013 / 15:36

3 respostas

3

Como Daniel J. apontou, por que você não pode usar

   sudo shutdown -h now

Isso eliminará todos os processos do seu computador e desligará o computador. Por que você precisa "reescrever" um script que já foi feito pelo comando shutdown ?

    
por 03.09.2013 / 16:50
2

Bem, você precisa de um script bash que obtenha uma lista de todos os processos em execução e seus PIDs e, em seguida, use um loop para matar cada um desses PIDs como kill 1002 dentro do loop, uma vez que você pode chamar o processo de desligamento. O problema é que o processo de desligamento faz isso por você.

    
por 03.09.2013 / 16:44
0

Se houver apenas alguns processos específicos que você deseja encerrar, use killall e use o AppleScript para enviar o evento loginwindow a kAEShutDown Apple:

killall process1 process2
osascript -e 'tell app "System Events" to shut down'

Se você quiser desligar sem receber uma solicitação para salvar as alterações não salvas e assim por diante, tente usar sudo shutdown -h now . Ele envia a todos os processos um sinal TERM seguido por um sinal KILL , que deve ser relativamente seguro mesmo com aplicações gráficas. Se uma aplicação suportar terminação súbita, é seguro enviar um sinal KILL .

Normalmente, quando você encerra, os aplicativos Cocoa são encerrados chamando o método applicationShouldTerminate: delegate, os aplicativos não-Cocoa e os processos em segundo plano recebem um evento kAEQuitApplication Apple e os daemons recebem um sinal TERM seguido por um KILL sinal. Consulte Daemons e Guia de Programação de Serviços .

Editar: se você quiser desativar a reabertura de aplicativos após a reinicialização, poderá executar defaults -currentHost write com.apple.loginwindow TALAppsToRelaunchAtLogin -array '()' antes de sudo shutdown -r now . A lista de aplicativos para reabrir no login é armazenada em ~/Library/Preferences/ByHost/com.apple.loginwindow.*.plist .

    
por 04.09.2013 / 11:45

Tags