如何在机器自动关机之前运行命令?

如何在机器自动关机之前运行命令?

如何在机器自动关机之前运行命令?

答案1

cron不是用于此目的的工具。您需要设置一个upstart在关机期间执行的作业,最好声明依赖关系,以便它在它需要的任何服务关闭之前运行。 man 5 init有关如何正确定义启动或关闭任务的详细信息;如果没有更多信息,我无法提供更多帮助,因为这取决于您要做什么以及它upstart依赖的其他作业。

答案2

如何将脚本放入正确的运行级别?我认为运行级别 6 是关机,然后要播放的目录是

/etc/rc6.d/

答案3

尝试这个,用无意义的值替换$HOME和,并将其保存为具有权限。$PROFILE~/.init644

在你做任何事情之前,确保有这样一行

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

在 中/etc/fstab,mount 选项noauto阻止 tmpfs 自动挂载,您可以将其更改为auto以符合您的偏好。我将其保留在那里以保持整个 upstart 作业的完整性。

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

答案4

作为 funicorn 答案的简化版本..一个 upstart 工作,可以在 /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 中。

相关内容