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

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

4
08.17.2017, 20:21
4 ответа

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

/etc/rc6.d/
2
12.01.2019, 08:06
  • 1
    Это более или менее эквивалентно тому, что предложил @geekosaur. –  enzotib 06.29.2011, 19:07
  • 2
    Обратите внимание, что это становится очень сложным, так как вам нужно сделать скрипт /etc/rc6.d/K ##чем-то, чтобы правильно его упорядочить. Выскочка работа была бы проще –  SpamapS 08.05.2012, 13:41
  • 3
    Уровень запуска 6 — это перезагрузка, а не выключение. Уровень запуска 0 — это остановка системы (, также известная как завершение работы ), но на этом уровне запуска нет служб (e. грамм. `cron `)будет запущен. –  DopeGhoti 03.10.2017, 22:14

Попробуйте это, заменив $HOMEи $PROFILEбессодержательными значениями и сохраните их в ~/.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
1
12.01.2019, 08:06

В качестве упрощенной версии ответа funicorn.. выскочка, либо в /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..

1
12.01.2019, 08:06

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

6
12.01.2019, 08:06
  • 1
    Мой вопрос: :Как запустить команду автоматически перед выключением машины? –  waterloo2005 06.29.2011, 16:48
  • 2
    Я монтирую каталог firefox *.profile с tmpfs в оперативной памяти при запуске. Когда я выключаю машину, я хочу автоматически преобразовать этот каталог профиля в файл, чтобы сохранить содержимое. –  waterloo2005 06.29.2011, 16:52
  • 3
    Итак, как говорит вам `man 5 init `, существует несколько способов определить `выскочку `задание для этого :это может быть `сценарий `запущенный `запуск при выключении `, или точнее `запуск при остановке mountall `. Или вы можете `запустить при запуске mountall `и `остановить при остановке mountall `и использовать `pre -start `для создания, `mount `и заполните виртуальный диск и `post -остановите `для сохранения и `размонтируйте `его. –  geekosaur 06.29.2011, 17:19

Теги

Похожие вопросы