Nginx 日志分割
因业务需要做了简单的Nginx 日志分割,
第1章 详细配置如下。
#建议在mkdir /home/shell -p 专门写shell 脚本位置
root@localhost:/home/shell# cat nginxcut.sh
#!/bin/sh
#####
#by xuebao
#2017.05.16
date=`date +%Y%m%d`
nginxlog="/app/logs/nginx/"
/bin/mv ${nginxlog}www_access.log ${nginxlog}access_${date}back.log
/application/nginx/sbin/nginx -s reload
1.1 脚本详解
# data 时间 nginxlog nginx安装路径(可以根据自己环境修改
# ${} 变量的正规表达式
# ` `
#"/app/logs/nginx/" 双引号
括住部分将被视为单一字串 它防止通配符扩展但允许变量扩展
#` date +%Y%m%d ` 倒引号
括住部分为命令 命令执行
# ${} 变量的正规表达式
# 备份命令其中都是引用变量
/bin/mv ${nginxlog}www_access.log ${nginxlog}access_${date}back.log
#重启nginx
/application/nginx/sbin/nginx -s reload
1.2 写入定时任务
注意:写定时任务前一定要给 写的脚本给执行权限 +x
root@localhost:/home/shell# chmod +x /home/shell/nginxcut.sh
root@localhost:/home/shell# vim /etc/crontab
#####nginx cut log #####by xuebao 20170516######
58 23 * * * /bin/sh /home/shell/nginxcut.sh >/dev/null 2>&1
脚本详解
#其中 每天晚上23点58 备份
#全路径执行sh 建议可以先测试
1.3 >/dev/null 2>&1
在学习Linux的过程中,常会看到一些终端命令或者程序中有">/dev/null 2>&1 "出现,由于已经遇到了好几次了,为了理解清楚,不妨花点时间百度或者google一下相关的知识
0:表示键盘输入(stdin)
1:表示标准输出(stdout),系统默认是1
2:表示错误输出(stderr)
command >/dev/null 2>&1 & == command 1>/dev/null
2>&1 &
1)command:表示shell命令或者为一个可执行程序
2)>:表示重定向到哪里
3)/dev/null:表示Linux的空设备文件
4)2:表示标准错误输出
5)&1:&表示等同于的意思,2>&1,表示2的输出重定向等于于1
6)&:表示后台执行,即这条指令执行在后台运行
1>/dev/null:表示标准输出重定向到空设备文件,也就是不输出任何信息到终端,不显示任何信息。
2>&1:表示标准错误输出重定向等同于标准输出,因为之前标准输出已经重定向到了空设备文件,所以标准错误输出也重定向到空设备文件。
这条命令的意思就是在后台执行这个程序,并将错误输出2重定向到标准输出1,然后将标准输出1全部放到/dev/null文件,也就是清空.
所以可以看出"
>/dev/null 2>&1 "常用来避免shell命令或者程序等运行中有内容输出。