1.一天内压缩日志,存放10天后删除所有日志和压缩文件
vi cutting_nginx_log.sh
#!/bin/bash
cd /usr/local/nginx/logs
if [ ! -d nginx_log ];then
mkdir nginx_log
fi
mv access.log nginx_log/access_$(date '+%F~%H:%M').log
mv error.log nginx_log/error_$(date '+%F~%H:%M').log
/usr/local/nginx/sbin/nginx -s reload
tar -zcvf $(date '+%F~%H:%M')_log.tar.gz nginx_log --force-loca
rm -rf nginx_log/*
cat > /var/spool/cron/root << eof
0 0 * * * sh /root/cutting_nginx_log.sh > /dev/null 2>&1
eof
find -type f -mtime +10 |grep -v nginx.pid| xargs -L 1 rm -rf
2.分析脚本
判断的nginx_log目录是否存在,不存在nginx_log目录就创建
if 的参数 | if 的参数说明 |
---|---|
[ -d DIR ] | 如果目录存在且是一个目录则为真(true),否则为false(假) |
[ -e FILE ] | 如果存在则为真(true),否则为false(假) |
[ -f FILE ] | 如果存在普通的文件且是一个普通的文件则为真(true),否则为false(假) |
[ ! ] | 非运算,表达式为 true 则返回 false,否则返回 true, [ ! false ] 返回 true |
[ -o ] | 或运算,有一个表达式为 true 则返回 true |
[ -a ] | 与运算,两个表达式都为 true 才返回 true |
时间的格式化
date +%F~%T
2020-07-10~14:49:47
date +%F~%H:%M:%S
2020-07-10~14:50:51
date +%Y-%m-%d~%H:%M:%S
2020-07-10~14:52:09
定时任务计划
#编辑crond服务的定时任务
crontab -e
#删除crond服务的定时任务
crontab -r
#查看crond服务的定时任务
crontab -l
0 0 * * * sh /root/cutting_nginx_log.sh > /dev/null 2>&1
#查看定时任务的说明
cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# For details see man 4 crontabs
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
/var/spool/cron/ 和 /etc/crontab 与 crontab的区别
名称 | 说明 |
---|---|
/var/spool/cron/ | 指定用户,但是所属用户和所属组的权限都为root |
/etc/crontab 与 crontab | 指定用户,所属用户和所属组的权限都为指定的用户 |
3.系统日志的种类
名称 | 说明 |
---|---|
/var/log/message | 大多数系统日志消息记录在此处。有也例外的:如不身份验证,电子邮件处理相关的定期作业任务等 |
/var/log/secure | 安全和身份验证相关的消息和登录失败的日志文件;ssh进程连接产生的日志 |
/var/log/maillog | 邮件服务器相关的消息日志文件 |
/var/log/cron | 定时任务计划相关的日志文件 |
/var/log/boot.log | 系统引导启动相关的消息记录 |
/var/log/dmesg | 系统启动相关的消息记录 |
/var/log/wtmp | 记录登录者讯录,二进制文件,须用last来读取内容 who -u /var/log/wtmp 查看信息 |
/var/log/yum.log | yum源的安装软件包的消息记录 |
查看ssh登录的消息记录
grep ssh2 /var/log/secure| awk '{print "IP:" $11, "端口:"$13,"协议:"$14}'
IP:172.25.0.1 端口:55799 协议:ssh2
IP:172.25.0.1 端口:54590 协议:ssh2
IP:172.25.0.1 端口:55997 协议:ssh2
IP:172.25.0.20 端口:35550 协议:ssh2
IP:172.25.0.20 端口:35550 协议:ssh2
#登录虚拟终端(XShell)的次数
who /var/log/wtmp |grep pts | wc -l
94
4.平滑重启nginx
#平滑重启nginx
kill -HUP `cat /usr/local/nginx/logs/nginx.pid`
vi cutting_nginx_log.sh
#!/bin/bash
cd /usr/local/nginx/logs
if [ ! -d nginx_log ];then
mkdir nginx_log
fi
mv access.log nginx_log/access_$(date '+%F~%H:%M').log
mv error.log nginx_log/error_$(date '+%F~%H:%M').log
#/usr/local/nginx/sbin/nginx -s reload
kill -HUP `cat /usr/local/nginx/logs/nginx.pid`
tar -zcvf $(date '+%F~%H:%M')_log.tar.gz nginx_log --force-loca
rm -rf nginx_log/*
cat > /var/spool/cron/root << eof
0 0 * * * sh /root/cutting_nginx_log.sh > /dev/null 2>&1
eof
find -type f -mtime +10 |grep -v nginx.pid| xargs -L 1 rm -rf