linux 运维日志切割
crond服务 Linux一般自带安装cron
-
安装crontab:
查看服务状态
/sbin/service crond status
yum install crontabs -
服务操作说明:
/sbin/service crond start //启动服务
/sbin/service crond stop //关闭服务
/sbin/service crond restart //重启服务
/sbin/service crond reload //重新载入配置 -
查看crontab服务是否已设置为开机启动,执行命令:
ntsysv
加入开机自动启动:
chkconfig –level 35 crond on
Linux按天执行SH脚本 方式一
- 编辑当前用户定时执行脚本
crontab -e (注意:编辑脚本存在/var/spool/cron/用户名)
加入脚本: 04 2 * * * /usr/local/bin/tomcatcron.sh - 创建sh执行脚本
cd /usr/local/bin //脚本目录,可随意
vi tomcatcron.sh //执行的脚本
加入脚本如,执行方式二logrotate计划:
#! /bin/sh
/usr/sbin/logrotate -f /etc/logrotate.conf
执行脚本日志备份策略 方式二
- 在/etc/logrotate.d/ 目录下新建一个文件,命名随意。
cd /etc/logrotate.d/
vi tomcat
/usr/local/apache-tomcat-8.5.20/logs/catalina.out{
copytruncate
daily
rotate 15
dateext
compress
missingok
size 5M
lastaction
mv /usr/local/apache-tomcat-8.5.20/logs/catalina.out-*.gz /data1/tomcat_log
endscript
}
- 查看定时任务执行日志
cat /var/log/cron - log执行记录,控制执行次数:
cat /var/lib/logrotate.status
Linux按天执行目录
- /etc/crontab文件包括下面几行:
cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=HOME=/
# run-parts
51 * * * * root run-parts /etc/cron.hourly
04 2 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly
- 按天执行脚本
cat /etc/cron.daily/logrotate
#!/bin/sh
/usr/sbin/logrotate /etc/logrotate.conf
EXITVALUE=$?
if [ $EXITVALUE != 0 ]; then
/usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]"
fi
exit 0
报错1
查看cron运行日志
tail -f /var/log/cron
root) FAILED to authorize user with PAM (Module is unknown)
解决方法:
- 禁用SELinux,可以使用getenforce命令查看是否禁用。
- 修改/etc/cron.allow,添加
root
myuser - 修改/etc/pam.d/crond,把把所有required改成sufficient,这个可能对非root用户管用。
# The PAM configuration file for the cron daemon
#
#
# No PAM authentication called, auth modules not needed
account required pam_access.so
account include password-auth
session required pam_loginuid.so
session include password-auth
auth include password-auth
- 重启crond服务
/etc/init.d/crond restart
logrotate.conf配置讲解
see "man logrotate" for details //可以查看帮助文档
weekly //设置每周转储一次(daily、weekly、monthly当然可以使用这些参数每天、星期,月 )
rotate 4 //最多转储4次
create //当转储后文件不存在时创建它
compress //通过gzip压缩方式转储(nocompress可以不压缩)
include /etc/logrotate.d //其他日志文件的转储方式配置文件,包含在该目录下
/var/log/wtmp { //设置/var/log/wtmp日志文件的转储参数
monthly //每月转储
create 0664 root utmp //转储后文件不存在时创建它,文件所有者为root,所属组为utmp,对应的权限为0664
rotate 1 //最多转储一次
cron使用者权限
- 文件:/etc/cron.deny
说明:该文件中所列用户不允许使用crontab命令 - 文件:/etc/cron.allow
说明:该文件中所列用户允许使用crontab命令 - 文件:/var/spool/cron/
说明:所有用户crontab文件存放的目录,以用户名命名
注意事项:
时间记录:/var/spool/anacron下的文件
执行不重复状态记录:
使root用户的crontab生效 crontab -u root /var/spool/cron/root
(1)、04 2 * * * root run-parts /etc/cron.daily后要空一行,
(2)、新创建的cron job,不会马上执行,至少要过2分钟才执行。如果重启cron则马上执行。
当crontab突然失效时,可以尝试/etc/init.d/crond restart解决问题。或者查看日志看某个job有没有执行/报错tail -f /var/log/cron。
千万别乱运行crontab -r。它从Crontab目录(/var/spool/cron)中删除用户的Crontab文件。删除了该用户的所有crontab都没了。
在crontab中%是有特殊含义的,表示换行的意思。如果要用的话必须进行转义%,如经常用的date ‘+%Y%m%d’在crontab里是不会执行的,应该换成date ‘+%Y%m%d’。