如果计算机崩溃,我可以阻止 /tmp 被删除吗?

如果计算机崩溃,我可以阻止 /tmp 被删除吗?

我经常将我正在处理的临时文件保存在 /tmp 中,这样我做完后就不必删除它们。但是,如果计算机崩溃了,那我就倒霉了,因为该目录将被清除。

如果计算机崩溃后重新启动,是否有办法防止 /tmp 被清除?如果没有,是否有其他解决方案,例如在其他地方创建另一个临时目录,并在没有崩溃的情况下在重新启动时自动删除它。

答案1

/tmp在启动时由 Upstart 脚本清除/etc/init/mounted-tmp.conf。如果您查看该文件,您会发现没有办法告诉它不要执行其工作。但是您可以自由修改它。

以下是我的做法:

  1. 挂载的tmp.conf(就在 之前end script),放置以下内容:

     touch /tmp/.notclean
    

    这样,每次挂载 /tmp 时,.notclean都会创建一个文件。

  2. 在以下行之后(即脚本开始删除文件之前的行)...

     cd "${MOUNTPOINT}" || exit 1
    

    ...检查是否存在.notclean。如果文件存在,则意味着计算机没有正常关闭。

     cd "${MOUNTPOINT}" || exit 1
     [ -f .notclean ] && exit 0
    
  3. 现在您需要一个新的 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

相关内容