Como executar um script no desligamento com o Snow Leopard?

5

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.

    
por user30115 03.03.2011 / 22:41

4 respostas

2

Na verdade, está funcionando agora. Eu acho que é só porque o nome correto é rc.local.shutdown e não rc.shutdown.local.

    
por 07.03.2011 / 17:23
1

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.

    
por 10.10.2011 / 19:34
0

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.

    
por 04.03.2011 / 03:36
0

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"
    
por 20.04.2012 / 20:46