linux 运维日志切割

crond服务 Linux一般自带安装cron

  1. 安装crontab:
    查看服务状态
    /sbin/service crond status
    yum install crontabs

  2. 服务操作说明:
    /sbin/service crond start //启动服务
    /sbin/service crond stop //关闭服务
    /sbin/service crond restart //重启服务
    /sbin/service crond reload //重新载入配置

  3. 查看crontab服务是否已设置为开机启动,执行命令:
    ntsysv
    加入开机自动启动:
    chkconfig –level 35 crond on

Linux按天执行SH脚本 方式一

  1. 编辑当前用户定时执行脚本
    crontab -e (注意:编辑脚本存在/var/spool/cron/用户名)
    加入脚本: 04 2 * * * /usr/local/bin/tomcatcron.sh
  2. 创建sh执行脚本
    cd /usr/local/bin //脚本目录,可随意
    vi tomcatcron.sh //执行的脚本
    加入脚本如,执行方式二logrotate计划:
#! /bin/sh
/usr/sbin/logrotate  -f /etc/logrotate.conf

执行脚本日志备份策略 方式二

  1. 在/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
}
  1. 查看定时任务执行日志
    cat /var/log/cron
  2. log执行记录,控制执行次数:
    cat /var/lib/logrotate.status

Linux按天执行目录

  1. /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
  1. 按天执行脚本
    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)

解决方法:

  1. 禁用SELinux,可以使用getenforce命令查看是否禁用。
  2. 修改/etc/cron.allow,添加
    root
    myuser
  3. 修改/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
  1. 重启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’。

你可能感兴趣的:(linux 运维日志切割)