-》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。在系统最小安装情况下,这个功能是没有安装的。
安装:
1
|
# yum install tmpwatch.x86_64
|
安装后会在/etc/cron.daily/目录下生成一个tmpwatch文件。内容如下:
1
2
3
4
5
6
7
8
9
10
11
|
# cat /etc/cron.daily/tmpwatch
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_*' 240 /tmp
/usr/sbin/tmpwatch "$flags" 720 /var/tmp
for d in /var/{cache/man,catman}/{cat?,X11R6/cat?,local/cat?}; do
if [ -d "$d" ]; then
/usr/sbin/tmpwatch "$flags" -f 720 "$d"
fi
done
|
从代码中可看出,tmp目录会删除240小时未访问过的文件。
tmpwatch工具从指定的目录中递归地搜索并删除指定的目录中一段时间未访问的文件。
tmpwatch参数说明:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
-u, --atime 基于访问时间来删除文件,默认的。
-m, --mtime 基于修改时间来删除文件。
-c, --ctime 基于创建时间来删除文件,对于目录,基于mtime。
-M, --dirmtime 删除目录基于目录的修改时间而不是访问时间。
-a, --all 删除所有的文件类型,不只是普通文件,符号链接和目录。
-d, --nodirs 不尝试删除目录,即使是空目录。
-d, --nosymlinks 不尝试删除符号链接。
-f, --force 强制删除。
-q, --quiet 只报告错误信息。
-s, --fuser 如果文件已经是打开状态在删除前,尝试使用“定影”命令。默认不启用。
-t, --test 仅作测试,并不真的删除文件或目录。
-U, --exclude-user=user 不删除属于谁的文件。
-v, --verbose 打印详细信息。
-x, --exclude=path 排除路径,如果路径是一个目录,它包含的所有文件被排除了。如果路径不存在,它必须是一个绝对路径不包含符号链接。
-X, --exclude-pattern=pattern 排除某规则下的路径。
|
[warning]对于mysql服务器,如果将pid和socket文件创建在tmp目录下,要将这两个文件排除在外,否则mysql重启或使用socket文件登录时,提示找不到文件。可通过-U mysql[/warning]
转载请注明来之运维生存时间:http://www.ttlsa.com/html/3323.html