这是一个非常愚蠢的问题,但我们如何设置/var/tmp?有没有一种特殊的方法可以做到这一点,或者只创建目录就足够了?
我已经阅读了 /tmp 和 /var/tmp 之间的区别,因此请注意,这不是这个问题的内容。当我在 /tmp 中创建文件时,它会显示在 /var/tmp 中;但是,两个目录都显示为另一个的符号链接:
[root@l12662 /]# pwd; ll
/
total 32
lrwxrwxrwx. 1 root root 7 Aug 25 2017 bin -> usr/bin
dr-xr-xr-x. 4 root root 4096 Aug 25 2017 boot
drwxr-xr-x 21 root root 3560 Nov 18 23:32 dev
...
drwxrwxrwt. 27 root root 4096 Nov 24 08:18 tmp
...
[root@l12662 /]# cd /var
[root@l12662 var]# ll
total 12
drwxr-xr-x. 2 root root 19 Mar 28 2017 account
drwxr-xr-x. 2 root root 6 Mar 10 2016 adm
drwxr-xr-x. 10 root root 122 Aug 25 2017 cache
...
drwxrwxrwt. 27 root root 4096 Nov 24 08:18 tmp
...
它们是如何关联的:
[root@l12662 tmp]# pwd; ls | grep test
/tmp
[root@l12662 tmp]# ls /var/tmp/ | grep test
[root@l12662 tmp]# pwd; touch test.me
/tmp
[root@l12662 tmp]# pwd; ls | grep test
/tmp
test.me
[root@l12662 tmp]# ls /var/tmp/ | grep test
test.me
[root@l12662 tmp]#
这是 RHEL 7,顺便说一句:
[root@l12662 tmp]# cat /etc/*release
NAME="Red Hat Enterprise Linux Server"
VERSION="7.4 (Maipo)"
ID="rhel"
ID_LIKE="fedora"
VARIANT="Server"
VARIANT_ID="server"
VERSION_ID="7.4"
PRETTY_NAME="Red Hat Enterprise Linux Server 7.4 (Maipo)"
一旦/tmp
理想情况下应该为系统保留,用户可以在哪里安全地创建临时文件?
我使用的一些软件使用 inkscape 将图像从一种格式转换为另一种格式,作为中间步骤。这意味着他们将图像写入/tmp
文件夹,并尝试在这些图像上使用 inkscape 以获得他们需要的图像格式。但是,在我的系统上,inkscape 不喜欢该/tmp
文件夹。
例如,当尝试/tmp
使用 inkscape 打开/编辑目录中的 svg 文件时,inkscape /tmp/test.svg
它会抛出错误/警告
** (inkscape:6528): WARNING **: Can't open file: test.svg (doesn't exist)
该文件存在,我可以使用 Budgie 的默认查看器打开它。
在主文件夹中执行类似操作时,例如,inkscape ~/test.svg
测试文件打开得很好。Inkscape 本身在调用文件夹inkscape
中的某个位置时运行/tmp
,它只是不能使用文件夹中的文件。
我正在运行 Solus 4,并使用sudo snap install inkscape
.
我经常使用/tmp
我的 Linux 机器上的目录来存储临时文件(例如,来自希望我先下载它的站点的 PDF 等),并且我经常使用我的用户名创建一个目录。但是在每次启动时,它(包括所有文件)都会被删除。现在我知道我可以把它放进去/var/tmp
,但我想删除它的所有内容,但要保留目录本身。所以:
tmp
|- me # this should stay
| |- foo1 # this should be deleted...
| |- bar1 # ...and this as well
|- other stuff...
有没有办法做到这一点?也许有权限或特殊配置?
我正在尝试将 Apache PrivateTmp 文件的清理间隔从默认的 30 天更改为 6 小时。我读到编辑时间间隔,我应该设置一个覆盖文件/etc/tmpfiles.d/tmp.conf
而不是编辑/usr/lib/tmpfiles.d/tmp.conf
,所以我用以下几行创建了该文件:
# override the default cleanup intervals
v /tmp 1777 root root 6h
v /var/tmp 1777 root root 6h
现在,如果我运行systemd-tmpfiles --clean
,预期的文件将被删除,所以这部分正在工作。
但是,/usr/lib/systemd/system/systemd-tmpfiles-clean.timer
已OnUnitActiveSec
设置为 1d。我认为这意味着我的 6 小时清理间隔将有效地限制为每天一次。
我可以将该计时器间隔更改为 6 小时或更短,但我应该直接编辑此文件,还是创建一个类似于/etc/tmpfiles.d
?
更新:这个问题被标记为重复,但我在链接的问题中没有看到任何关于我是否应该使用文件的覆盖tmp.conf
文件。
解决方案:显然我不能将此作为答案发布,因为该问题已被标记为重复。但这就是我创建覆盖文件以更改计时器间隔的方式:
将现有的计时器文件复制到相应的覆盖目录:
sudo cp /usr/lib/systemd/system/systemd-tmpfiles-clean.timer /etc/systemd/system
编辑新副本(将 1d 值更改为 1h):
sudo nano /etc/systemd/system/systemd-tmpfiles-clean.timer
加载新的计时器文件:
sudo systemctl daemon-reload
确认新的计时器间隔已加载:
sudo systemctl list-timers
我有一个测试,我在一个300M
基于 ram-disk的设备上运行/tmp
,"no space left on device"
即使当我运行时df -h
我发现只有11%
其中一个/tmp
被实际使用。
我很困惑,关于我应该寻找什么的任何提示?