我经常将我正在处理的临时文件保存在 /tmp 中,这样我做完后就不必删除它们。但是,如果计算机崩溃了,那我就倒霉了,因为该目录将被清除。
如果计算机崩溃后重新启动,是否有办法防止 /tmp 被清除?如果没有,是否有其他解决方案,例如在其他地方创建另一个临时目录,并在没有崩溃的情况下在重新启动时自动删除它。
答案1
/tmp
在启动时由 Upstart 脚本清除/etc/init/mounted-tmp.conf
。如果您查看该文件,您会发现没有办法告诉它不要执行其工作。但是您可以自由修改它。
以下是我的做法:
在挂载的tmp.conf(就在 之前
end script
),放置以下内容:touch /tmp/.notclean
这样,每次挂载 /tmp 时,
.notclean
都会创建一个文件。在以下行之后(即脚本开始删除文件之前的行)...
cd "${MOUNTPOINT}" || exit 1
...检查是否存在
.notclean
。如果文件存在,则意味着计算机没有正常关闭。cd "${MOUNTPOINT}" || exit 1 [ -f .notclean ] && exit 0
现在您需要一个新的 Upstart 脚本,用于
.notclean
在关机时删除。创建/etc/init/mark-tmp-clean.conf
并放置以下代码:description "some useful description" start on starting rc task script rm -f /tmp/.notclean end script
答案2
这实际上只是对 Andrea 的帖子和我的评论的补充。这是我TMPTIME=0
在 中的行后添加的代码片段/etc/default/rcS
。无需进行其他更改。
# scan the boot cmdline for tmptime parameter and overide TMPTIME if it is set
for opt in $(cat /proc/cmdline); do
case $opt in
tmptime=*)
TMPTIME="${opt#tmptime=}"
;;
esac
done