Как выполнить команду до автоматического выключения машины?

Как выполнить команду до автоматического выключения машины?

4 ответа

Решение

Как насчет того, чтобы поставить скрипт на правильный уровень запуска? Я думаю, что уровень запуска 6 выключен, а затем каталог для воспроизведения

/etc/rc6.d/

cron не инструмент для этого. Вам нужно настроить upstart задание, которое выполняется во время завершения работы, предпочтительно объявляя зависимость так, чтобы она выполнялась до того, как какие-либо службы потребуют завершения работы. man 5 init подробности о том, как правильно определить задачу запуска или завершения работы; Я не могу помочь без этого без дополнительной информации, так как это зависит от того, что вы пытаетесь сделать, и что другое upstart Работа это зависит от.

Попробуйте это, заменив $HOME а также $PROFILE со значениями VAPID и сохранить его в ~/.init с разрешения 644,

Прежде чем что-то делать, убедитесь, что есть строка вроде

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

в /etc/fstabгде вариант монтирования noauto предотвращает автоматическое монтирование tmpfs, которое можно изменить на auto на ваше усмотрение. Я оставляю это там, чтобы сохранить всю выскочку работы в целостности.

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

В качестве упрощенной версии ответа Фуникорна... выскочка, либо в /etc/init/foo.conf, либо в виде ~ /.init / foo.conf:

start on starting rc RUNLEVEL=6
task
exec myscript

Это запустится и заблокирует полное отключение до выхода "myscript".

Это все, что вам нужно. Обратите внимание, что пользовательские задания (~/.init/foo.conf) - это очень новая функция, и в моей системе 12.04 с ecryptfs / home не работают, поэтому вам, возможно, придется просто поместить задание в / etc / init.

Другие вопросы по тегам