Como executar um comando antes que a máquina seja desligada automaticamente?

4

Como posso executar um comando antes que a máquina seja desligada automaticamente?

    
por waterloo2005 29.06.2011 / 18:44

4 respostas

2

Que tal colocar um script no runlevel correto? Eu acho que o runlevel 6 está desligado, e então o diretório para tocar é

/etc/rc6.d/
    
por Johan 29.06.2011 / 21:46
5

cron não é a ferramenta para isso. Você precisa configurar um trabalho upstart que é executado durante o desligamento, preferencialmente declarando uma dependência para que ele seja executado antes de qualquer serviço requerido ser encerrado. man 5 init para os detalhes sobre como definir adequadamente uma tarefa de inicialização ou desligamento; Eu não posso ajudar além disso sem mais informações, pois depende do que você está tentando fazer e de quais outros trabalhos upstart dependem.

    
por geekosaur 29.06.2011 / 18:52
1

Tente este, substituindo $HOME e $PROFILE por valores insignificantes e salve-o em ~/.init com permissão 644 .

Antes de fazer qualquer coisa, verifique se há uma linha como

firefox /home/your_name/.mozilla/firefox/your_profile.default tmpfs size=128M,noauto,user,exec,uid=1000,gid=100 0 0

em /etc/fstab , em que a opção de montagem noauto impede que o tmpfs seja montado automaticamente, o que pode ser alterado para auto de acordo com sua preferência. Eu deixo lá para manter todo o trabalho inicial em integridade.

description     "automatic firefox profile ram caching"

start on started mountall
stop on stopping mountall
env HOME="/home/your_name"
env PROFILE="your_profile.default"

script
if test -z "$(mount | grep -F "${HOME}/.mozilla/firefox/${PROFILE}" )"
then
mount "${HOME}/.mozilla/firefox/${PROFILE}"
fi
end script


post-start script
cd "${HOME}/.mozilla/firefox"
if test -f packed.tar
then
    tar xpf packed.tar
    echo "$(date): firefox profile unpacked to ram" >> unpack.log
else
    tar xpf packed.tar.old
    echo "$(date): backup profile unpacked to ram" >> unpack.log
fi
touch "${PROFILE}/.unpacked"
end script 


pre-stop script
cd "${HOME}/.mozilla/firefox"
if test -f "${PROFILE}/.unpacked"
then
    tar --exclude '.unpacked' -cpf packed.tmp.tar "$PROFILE"
    mv packed.tar packed.tar.old
    mv packed.tmp.tar packed.tar
    rm "$PFORILE/.unpacked"
    echo "$(date) firefox profile packed from ram" >> pack.log
else
    echo ".unpacked is missing. pack current session data to newfile"
    tar -cpf packed-$(date +%Y%m%d%H%M).tar "$PROFILE"
fi
end script
    
por funicorn 04.08.2012 / 22:21
1

Como uma versão simplificada da resposta do funicorn, um trabalho iniciante, seja em /etc/init/foo.conf ou como ~ / .init / foo.conf:

start on starting rc RUNLEVEL=6
task
exec myscript

Isso será executado e bloqueará todo o desligamento até que "myscript" seja encerrado.

Isso é tudo que você precisa. Note que os trabalhos do usuário (~ / .init / foo.conf) são um recurso muito novo e no meu sistema 12.04 com ecryptfs / home não funcionam, então você pode ter que colocar o trabalho em /etc/init.

    
por SpamapS 05.08.2012 / 16:46

Tags