虽说Linux几大发行版(Debian, Ubuntu, Redhat, Centos等)经过多年的发展,其自身在文件管理和系统优化等方面已经足够优秀,但是系统运行时间长了也会出现log日志文件占用空间过大的问题。一般地,Linux系统中log文件的目录位置在/Var/log文件夹中。对于硬盘容量较小的主机来说,如何正确清理该文件中的各个log文件就成了重要的问题。
判断log文件夹内容:
首先通过ssh连接Linux主机,进入/Var/log文件夹,查看占用空间交大的log文件有哪些,下面是我的树莓派对应文件夹里面的内容:
total 11200
-rw-r--r-- 1 root root 0 Feb 21 06:25 alternatives.log
drwxr-xr-x 2 root root 4096 Feb 20 11:13 apt
-rw-r----- 1 root adm 707071 Feb 21 13:49 auth.log
-rw-r--r-- 1 root root 3894 Feb 21 11:38 boot.log
-rw------- 1 root utmp 9697536 Feb 21 13:49 btmp
-rw-r----- 1 root adm 379003 Feb 21 13:50 daemon.log
-rw-r----- 1 root adm 7782 Feb 21 13:50 debug
-rw-r--r-- 1 root root 66534 Feb 20 11:29 dpkg.log
-rw-r----- 1 root adm 200784 Feb 21 12:40 kern.log
drwx--x--x 2 root root 4096 Feb 21 11:38 lightdm
-rw-r--r-- 1 root root 0 Feb 21 11:28 logfile
-rw-r----- 1 root adm 30822 Feb 21 12:40 messages
-rw------- 1 root root 1646 Feb 21 11:38 php7.0-fpm.log
drwxr-x--- 3 root adm 4096 Feb 21 06:25 samba
-rw-rw---- 1 root audio 150 Feb 21 11:38 shairport.err
-rw-rw---- 1 root audio 81 Feb 21 11:38 shairport.log
-rw-r----- 1 root adm 141823 Feb 21 13:50 syslog
-rw-r----- 1 root adm 63783 Feb 21 12:11 user.log
-rw-rw-r-- 1 root utmp 71808 Feb 21 13:44 wtmp
-rw-r--r-- 1 root root 8568 Feb 21 11:38 Xorg.0.log
编写清理shell脚本:
这里使用cat /dev/null命令清理各个log文件里面的内容,这里可以把/dev/null看作”黑洞”. 它等价于一个只写文件. 所有写入它的内容都会永远丢失. 而尝试从它那儿读取内容则什么也读不到。新建命名为clean_log.sh的shell脚本,内容如下:
#!/bin/sh
cat /dev/null > /var/log/alternatives.log
cat /dev/null > /var/log/auth.log
cat /dev/null > /var/log/boot.log
cat /dev/null > /var/log/btmp
cat /dev/null > /var/log/daemon.log
cat /dev/null > /var/log/debug
cat /dev/null > /var/log/dpkg.log
cat /dev/null > /var/log/kern.log
cat /dev/null > /var/log/logfile
cat /dev/null > /var/log/amessages
cat /dev/null > /var/log/php7.0-fpm.log
cat /dev/null > /var/log/shairport.err
cat /dev/null > /var/log/shairport.log
cat /dev/null > /var/log/syslog
cat /dev/null > /var/log/user.log
cat /dev/null > /var/log/wtmp
cat /dev/null > /var/log/Xorg.0.log
然后通过使用chmod +x给脚本赋予执行权限,./clean_up.sh运行脚本,就实现了对各个log文本的内容清理。
使用crontab实现定时清理log:
为了实现每隔几天系统自动运行shell脚本清理log文件,这里使用crontab新建计划任务,以实现每隔五天对log文件的自动清理,sudo -s获取管理员权限后,命令行里面输入crontab -e编辑计划任务,最后一行添加:
0 0 */5 * * /home/pi/Desktop/shell/clean_log.sh
其中/home/pi/Desktop/shell是上面编辑的shell文件的绝对路径,这样就完成了对log文件自动清理的目标。^_O