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

Spa*_*awk 7 startup

我经常将我正在处理的临时文件粘贴在 /tmp 中,因此我不必在完成后删除它们。但是,如果计算机崩溃,那么我就不走运了,因为该目录将被擦除。

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

And*_*ini 11

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

这是我将如何进行:

  1. mount-tmp.conf 的最后(就在 之前end script),放置以下内容:

     touch /tmp/.notclean
    
    Run Code Online (Sandbox Code Playgroud)

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

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

     cd "${MOUNTPOINT}" || exit 1
    
    Run Code Online (Sandbox Code Playgroud)

    ...检查是否存在.notclean. 如果该文件存在,则表示计算机没有正常关机。

     cd "${MOUNTPOINT}" || exit 1
     [ -f .notclean ] && exit 0
    
    Run Code Online (Sandbox Code Playgroud)
  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
    
    Run Code Online (Sandbox Code Playgroud)

  • 很好的答案!正是我所要求的......话虽如此,我现在有点担心,我想多了一点。我从来没有真正重新启动计算机,除非它崩溃(每隔几天发生一次......当我尝试休眠时)。我的要求意味着 /tmp 永远不会被清理。我对你提供的线索做了更多的研究,我认为我可以通过告诉系统只有在文件超过一天时才清理 /tmp 来获得类似的安全网。显然我可以通过编辑 `/etc/default/rcS` 并将 `$TMPTIME` 更改为 1 来做到这一点。无论如何,谢谢! (2认同)
  • 为了完整起见,我不妨在此记录一些其他内容:可以使用 `tmpreaper` 自动(无需启动)清除 /tmp。另一种选择是将文件放入 `/var/tmp`,它不会在启动时被擦除,然后使用 `tmpreaper` 定期清理它。 (2认同)