Estou tentando fazer com que o Mac OS X salve todas as minhas VMs do VirtualBox ao reiniciar. Eu já tenho um script que faz isso, mas preciso do OS X para executá-lo automaticamente antes de uma reinicialização.
Quando o Mac OS X é reiniciado, ele executa / sbin / reboot?
Ou de que outra forma isso poderia ser alcançado?
/etc/rc.shutdown.local
para executá-lo ao desligar. Parece que é isso que você está procurando.Respostas:
Embora a Apple recomende usar " launchd ", o mais fácil é criar um script de shell usando, por exemplo, o pico do Terminal:
O arquivo pode conter algo como:
Em seguida, dê direitos de execução:
Por fim, conecte o script ao procedimento de logout:
Se você iniciar outro aplicativo, como ainda não testei, acho que pode ser útil avisar a mim e a você que:
Talvez seja necessário eliminar o sinal de desligamento para executar o que queremos;
Em seguida, envie um novo (cuidado para não matar o sinal enviado por nosso próprio
script)…
Se você deseja remover o gancho:
Se estiver usando " launchd ", a idéia seria capturar o sinal SIGTERM. Dê uma olhada em: /System/Library/LaunchDaemons/com.apple.shutdown_monitor.plist
fonte
O Launchd envia um aviso antecipado de desligamento a todos os scripts / daemons que possuem uma sub-rotina StopService () . Isso dá ao seu processo mais tempo para limpar.
Basta usar o launchd para iniciar o script e executá-lo em segundo plano até a hora de sair.
Após o encerramento dos serviços que receberam o aviso antecipado, todos os processos recebem um
SIGTERM
sinal alguns segundos antes de serem desativadosSIGKILL
.Você pode criar um script que dorme e intercepte o SIGTERM para executar seu comando quando chegar a hora. Você precisará ver se isso permite tempo suficiente na prática para a execução dos comandos. Isso evita um pouco de codificação, mas não muito - geralmente é melhor criar um daemon a partir de um script de shell.
De uma perspectiva histórica -
/sbin/reboot
e os níveis de execução nunca existiram no Darwin / OS X erc.shutdown
são preteridos junto com o resto do tempo,rc
quelaunchd
é o chefe. Você pode usar o rc.shutdown no tiger ou mais cedo (não tenho uma dessas imagens à mão para checar no momento) Lion certamente removeu todos os vestígios do rc.d e init.d.Você pode querer ver se o sleepwatcher ajudaria no seu caso. Eu não o uso há algum tempo - mas certamente tem como objetivo resolver seu dilema.
fonte