Na verdade, está funcionando agora. Eu acho que é só porque o nome correto é rc.local.shutdown e não rc.shutdown.local.
Eu quero executar um script quando eu desligar ou reiniciar meu iMac, executando o Snow Leopard.
Eu li em algum lugar que alguém poderia usar o /etc/rc.shutdown.local para isso, mas não está funcionando para mim.
Por exemplo, eu coloco as seguintes linhas nele:
#!/bin/sh
/usr/bin/osascript -e "set volume with output muted"
Se eu correr:
source /etc/rc.shutdown.local
ele realmente silencia o som. No entanto, se eu tiver o som ligado e reiniciar o sistema operacional, o som ainda estará ligado. O que eu acho que significa que o script não foi chamado.
Alguma idéia?
ATUALIZAÇÃO: Na verdade, está funcionando agora. Eu acho que é só porque o nome correto é rc.local.shutdown e não rc.shutdown.local.
Outra opção é usar um gancho de logout:
sudo defaults write com.apple.loginwindow LogoutHook ~/.logouthook
echo $'#!/usr/bin/osascript\nset volume with output muted' > ~/.logouthook
chmod +x ~/.logouthook
O valor da chave LogoutHook só pode ser um caminho para um executável e não um comando shell. O gancho de logout é executado com privilégios de superusuário para que você não precise de sudo.
O comando defaults modifica /var/root/Library/Preferences/com.apple.loginwindow.plist. Adicionar uma chave LogoutHook a /Library/Preferences/com.apple.loginwindow.plist não funciona.
Se um gancho de logout levar tempo suficiente para ser executado, uma tela cinza será mostrada até que o gancho de logout seja encerrado. Não parece haver nenhum limite de tempo após o qual os ganchos de logout são forçados a terminar.
Os ganchos de logoff foram preteridos em 10.4, mas ainda não descobri nenhuma maneira de executar programas no logout de forma confiável com o launchd. Não conheço nenhuma maneira de executar um gancho de logoff antes de desligar ou reiniciar, mas não antes de efetuar logout.
Use o seguinte script:
#!/usr/bin/env bash
trap 'osascript -e "say \"hello\""' TERM
while true; do
sleep 10
done
Iniciá-lo via cron
ou launchd
, o que você preferir.
Tente eliminá-lo usando kill pid
, que pid
é sua ID de processo que você aprende com ps ax
.
Eu não quero desligar agora para testá-lo adequadamente, mas deve funcionar.
Vou começar dizendo que sou um noob com AppleScript. Então, para o benefício de outras pessoas começando também - estou postando o seguinte, que é uma pequena variação do que o autor colocou.
#!/bin/sh
/usr/bin/osascript -e "set volume 0.5"