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
?
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?
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
?
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ê.
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
.