我经常使用/tmp
我的 Linux 机器上的目录来存储临时文件(例如,来自希望我先下载它的站点的 PDF 等),并且我经常使用我的用户名创建一个目录。但是在每次启动时,它(包括所有文件)都会被删除。现在我知道我可以把它放进去/var/tmp
,但我想删除它的所有内容,但要保留目录本身。所以:
tmp
|- me # this should stay
| |- foo1 # this should be deleted...
| |- bar1 # ...and this as well
|- other stuff...
有没有办法做到这一点?也许有权限或特殊配置?
我用
pam-tmpdir
这个:它在登录时创建一个用户私有的临时目录。要设置它,请添加到适当的 PAM 服务;在基于 Debian 的系统上,安装
libpam-tmpdir
软件包将为您提供此功能,或者您可以将行添加到/etc/pam.d/common-session
. 下次登录时,您会在下面找到一个/tmp/user
带有您的用户 ID 的目录,并TMP
进行TMPDIR
适当的设置。一种解决方案是使用
@reboot
cron 作业:将此添加到您的 crontab 中,
crontab -e
可以使其在机器启动时执行。或者,使用
在你的 shell 的启动文件中。
在任何一种情况下,您可能还想使用
如果您想将该目录用作默认临时目录,请在 shell 的启动文件中。
如果您没有运行带有 systemd 的系统并且它使用 systemd-tmpfiles 来管理清理,那么您应该使用该系统配置目录。
这是完整的文档。您可以通过创建
/etc/tmpfiles.d/something.conf
以下内容来实现您想要的:正如评论中所指出的,
/tmp
适用于临时文件,如果它们被删除也不会丢失。如果您正在处理某事并且机器重新启动,那么您在那里编写的任何内容都会消失,您将不得不重新开始,这意味着这些文件可能根本就不是那么临时的。多年来,我在我的主目录中维护了一个临时目录,当时千兆字节空间很大,并且发现它需要定期整理以摆脱变得陈旧和肮脏的文件。大多数情况下,我在那个过程之后剩下的时间不到几周,所以我现在用一个每天运行一次的 cron 作业来清理它:
我下载或创建的任何东西都是半临时的,系统会清理我留下的任何东西。在 cron 工作摆脱它之前,任何需要永久住所的东西都会得到一个。