Estou executando o ubuntu 11.10 em uma máquina virtual (VirtualBox) para aprender mais sobre o desenvolvimento no linux. Estou usando um repositório git para salvar meu trabalho e escrevi um script para agrupar meu trabalho e salvá-lo na pasta compartilhada para uso enquanto a máquina virtual não está em execução.
Gostaria de executar automaticamente esse script antes do desligamento, para que meu trabalho esteja sempre disponível se a vm estiver desativada (atualmente, preciso executar manualmente o script).
Não sei se o iniciante é a melhor maneira de fazer isso, mas esta é a configuração que escrevi como teste:
description "test script to run at shutdown"
start on runlevel [056]
task
script
touch /media/sf_LinuxEducation/start
sleep 15
touch /media/sf_LinuxEducation/start-long
end script
pre-start script
touch /media/sf_LinuxEducation/pre-start
sleep 15
touch /media/sf_LinuxEducation/pre-start-long
end script
post-start script
touch /media/sf_LinuxEducation/post-start
sleep 15
touch /media/sf_LinuxEducation/post-start-long
end script
pre-stop script
touch /media/sf_LinuxEducation/pre-stop
sleep 15
touch /media/sf_LinuxEducation/pre-stop-long
end script
post-stop script
touch /media/sf_LinuxEducation/post-stop
sleep 15
touch /media/sf_LinuxEducation/post-stop-long
end script
O resultado é que apenas um toque é realizado (o primeiro toque na pré-partida). O que preciso mudar para ver um dos retoques após o sono funcionar? Ou existe uma maneira mais fácil de conseguir isso?
Desde já, obrigado.
test.conf
é apenas um nome de arquivo aleatório. Você poderia usar com a mesma facilidadewhatEverYouWant.conf
. Seu comentário também mostra que você não leu o "Livro de receitas" mencionado na resposta. Se você consultar a seção 4.2, o arquivo de configuração do trabalho será explicado mais detalhadamente.Eu acho que isso não pode ser feito via upstart , pois o script /etc/init.d/sendsigs , que é invocado pelo upstart ao interromper / reiniciar, mata todos os processos (
killall5 -9
) em 10 segundos e, mesmo que isso não seja bem-sucedido, continua para desmontar tudo e desligar.A melhor maneira seria usar os scripts enferrujados no estilo /etc/init.d .
Exemplo: /etc/init.d/shutdown_job
Em seguida, ative o script
Isso colocará o script antes do script sendigs nos níveis de execução 0 a 6 (desligamento, reinicialização). Este script de exemplo registrará a data, depois dormirá por 20 segundos e registrará a data novamente em /root/s.log .)
Mais informações:
man update-rc.d
fonte
touch /media/sf_LinuxEducation/start
etouch /media/sf_LinuxEducation/start-long
logo ao lado dos comandos de data. As datas são registradas, mas os toques não são tocados. Isso me faz pensar se essa unidade está desmontada no momento em que o script é executado. Eu acho que pode ter algo a ver com o argumento NN, embora eu não tenha muita certeza de como esse argumento funciona (a página de manual explica isso de uma maneira muito distorcida). Como você sabe qual número (ou par de números) deve ser definido nesse argumento?/etc/rc6.d
diretório. Portanto, o script de desligamento 19 deveria ter sido executado antes de qualquer desmontagem (> 31). Mas por que não tentar sua hipótese e tocar em um arquivo/root
?/etc/rc6.d
revela que as pastas compartilhadas estão sendo montadas / desmontadas com oK70vboxadd
script. Alterar o argumento NN (para o meu script) para 71 fazia com que meu script fosse executado antes da desmontagem de pastas compartilhadas do VB? Vou tentar mais tarde hoje.touch /root/start
antes dosleep 20
comando e nenhum arquivo é criado. Eu nem sei por onde começar a descobrir o porquê. As datas são adicionadas com alegria ao/root/s.log
arquivo Por que não consigo tocar em um arquivo?