linux 系统自带的 messages 和 /tmp 下文件清理功能 介绍

 

-》1. 关于linux 的/tmp 下的文件定时清理


在linux 6下该功能叫做 tmpwatch
cd /etc/cron.daily/tmpwatch
cat /etc/cron.daily/tmpwatch

[root@os log]# cat /etc/cron.daily/tmpwatch
#! /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

Q:
也就是除了如下目录外:/tmp/.X11-unix
/tmp/.XIM-unix
/tmp/.font-unix
/tmp/.ICE-unix
/tmp/.Test-unix
/tmp/hsperfdata_*

tmp目录会删除10天未访问过的文件。对吗?
A:是的
这个宫嗯

-》参考文档http://www.ttlsa.com/linux/the-tmp-directory-is-automatically-cleared-and-the-tmpwatch-command/
-》自动清理/tmp目录带来的可能影响1:
[warning]对于mysql服务器,如果将pid和socket文件创建在tmp目录下,要将这两个文件排除在外,否则mysql重启或使用socket文件登录时,提示找不到文件。可通过-U mysql[/warning]

自动清理/tmp目录带来的可能影响2:如果某些脚本定时依赖/tmp目录下的日志,可能会导致脚本失效。

 

sampe: 加入/tmp 下某个目录下的文件不会自动清理

cp /etc/cron.daily/tmpwatch /etc/cron.daily/tmpwatch.bak
modify /etc/cron.daily/tmpwatch
add "-x /tmp/MONITOR"

man tmpwatch
-x, --exclude=path
-X, --exclude-pattern=pattern
-U, --exclude-user=user

 

redhat7 /tmp自动清理归systemd管


2. -》 关于 linux 的日志messages定时清理 logrota
这台主机messages的日期 是从 10/11 号03:37开始的, 我想知道是 kernal还是ansiable造成这种定期清理 messages的行为的

ansible-command那些日志是ansible执行的日志

应该是要改个配置,让message的 log不要截断就行了

你是说日志轮转吗?

这个日志轮询实由cron时间定的哦
                        logrota管理message日志的轮询,cron会每天跑做日志轮询这样,这个时间不一定都是这个时候,可能有些偏差。

 

logrota管理message日志的轮询,cron会每天跑做日志轮询这样,这个时间不一定都是这个时候,可能有些偏差。

当然有时候可能系统Hung住或者什么其他原因,messages日志也有可能丢失

 

[root@os log]# cd /etc/cron.daily

[root@os cron.daily]# ls
0logwatch cups logrotate makewhatis.cron mlocate.cron prelink readahead.cron rhsmd tmpwatch
[root@os log]# cd /etc/cron.daily
[root@os cron.daily]# ls
0logwatch cups logrotate makewhatis.cron mlocate.cron prelink readahead.cron rhsmd tmpwatch
[root@os cron.daily]# more logrotate
#!/bin/sh

/usr/sbin/logrotate /etc/logrotate.conf >/dev/null 2>&1
EXITVALUE=$?
if [ $EXITVALUE != 0 ]; then
/usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]"
fi
exit 0

 

你们现在message日志是每周做一次还是每日做一次日志轮询吗 ? 一周时间间隔刚好啊

怎么看是 每周做一次还是每日做一次日志轮询。
cat /etc/logrotate.conf
/etc/logrotate.d/syslog
看这两个文件,默认是每周weekly

cat /etc/logrotate.conf

[root@os cron.daily]# cat /etc/logrotate.conf
# see "man logrotate" for details
# rotate log files weekly
weekly <-每周清理一次。

# keep 4 weeks worth of backlogs
rotate 24

# create new (empty) log files after rotating old ones
create

# use date as a suffix of the rotated file
dateext


[root@os cron.daily]# cat /etc/logrotate.d/syslog
/var/log/cron <-logrotate清理的文件目录,每周清理一次。
/var/log/maillog
/var/log/messages
/var/log/secure
/var/log/spooler
{
sharedscripts
postrotate
/bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
endscript
}

Q: 我能调整成 每个月 一次吗。
A: vi /etc/logrotate.conf
# see "man logrotate" for details
# rotate log files weekly
monthly <-每月清理一次。

 

#######

参考文档

tmp目录自动清除和tmpwatch命令

  • A+

习惯性的将一些临时文件放在tmp目录下,让其自然删除。同时,为了保证tmp目录不爆满,系统默认情况下每日会处理一次tmp目录文件,原理就是使用了tmpwatch。在系统最小安装情况下,这个功能是没有安装的。
安装:

安装后会在/etc/cron.daily/目录下生成一个tmpwatch文件。内容如下:

从代码中可看出,tmp目录会删除240小时未访问过的文件。

tmpwatch工具从指定的目录中递归地搜索并删除指定的目录中一段时间未访问的文件。

tmpwatch参数说明:

[warning]对于mysql服务器,如果将pid和socket文件创建在tmp目录下,要将这两个文件排除在外,否则mysql重启或使用socket文件登录时,提示找不到文件。可通过-U mysql[/warning]

转载请注明来之运维生存时间:http://www.ttlsa.com/html/3323.html

 

posted @ 2020-10-12 15:12  feiyun8616  阅读(2614)  评论(0编辑  收藏  举报