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/
Como posso executar um comando antes que a máquina seja desligada automaticamente?
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/
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.
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
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.
Tags shutdown