服务器的tmp文件夹满了,导致不能正常登陆和运行软件,需要清理tmp文件夹下面的临时文件。Linux的机制是在重启的时候清理tmp文件夹,或者一段时间才删除(比如下面我们看到的服务器默认是10天),find命令和tmpwacth命令可以在不重启和不影响用户的情况下快速删除目标文件。
Find命令
1
2
|
# ctime即change time文件状态改变时间为超过一天的
find /tmp -ctime +1 -exec rm -rf {} \;
|
tmpwatch
1
2
3
4
5
|
yum install tmpwatch -y
# 超过一天
tmpwatch 1d /tmp
# 超过32小时
tmpwatch -afv 32 /tmp/
|
定时清理
CentOS 6
看到说在CentOS下的/etc/cron.daily/tmpwatch可以设置自动清理时间,但我没找到,-_-||,例如下面设置的是/var/tmp下30d,也就是30天,/tmp下10天,但服务器/usr/sbin下面并没有tmpwatch,如果大家的服务器上有这个,可以通过这个设置定期清理一定时间的文件。
1
2
3
4
5
6
7
8
9
10
11
|
#! /bin/sh
flags=-umc
/usr/sbin/tmpwatch "$flags" -x /tmp/.X11-unix -x /tmp/.XIM-unix \
-x /tmp/.font-unix -x /tmp/.ICE-unix -x /tmp/.Test-unix \
-X ‘/tmp/hsperfdata_*’ 10d /tmp
/usr/sbin/tmpwatch "$flags" 30d /var/tmp
for d in /var/{cache/man,catman}/{cat?,X11R6/cat?,local/cat?}; do
if [ -d "$d" ]; then
/usr/sbin/tmpwatch "$flags" -f 30d "$d"
fi
done
|
CentOS 7
原来是CentOS7下新工具systemd-tmpfiles替换了tmpwatch。CentOS7的清理频率为开机15min或者上次服务出发后的24小时
1
2
3
4
5
|
cat /usr/lib/systemd/system/systemd-tmpfiles-clean.service
[Timer]
OnBootSec=15min
OnUnitActiveSec=1d
|
具体的配置时间可以调整,下面显示的是CentOS7默认删除/tmp下超过10天的文件,/var/tmp下超过30天的文件
1
2
3
4
5
|
cat /usr/lib/tmpfiles.d/tmp.conf
# Clear tmp directories separately, to make them easier to override
v /tmp 1777 root root 10d
v /var/tmp 1777 root root 30d
|
更改之后重新加载服务
1
2
3
|
sudo systemctl daemon-reload
sudo systemctl enable --now systemd-tmpfiles-clean.timer
|