QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 10615|回复: 3

关于Nginx日志切割脚本遇到的问题!求指教!

[复制链接]
发表于 2015-6-5 13:54:18 | 显示全部楼层 |阅读模式
这是脚本
[root@localhost logs]# cat nginx_log.sh
#!/bin/sh
#2015-06-03 by feng
savepath_log=/log
nginx_log=/usr/local/nginx/logs
mkdir -p $savepath_log/$(date +%Y)/$(date +%m)
mv $nginx_log/access.log $savepath_log/$(date +%Y)/$(date +%m)/access.log.$(date +%Y%m%d)
mv $nginx_log/error.log $savepath_log/$(date +%Y)/$(date +%m)/error.log.$(date +%Y%m%d)
kill -USR1 ‘cat /usr/local/nginx/logs/nginx.pid’

[root@localhost logs]# ./nginx_log.sh
./nginx_log.sh: line 8: kill: cat /usr/local/nginx/logs/nginx.pid: arguments must be process or job IDs

报的意思 就是脚本最后一行有问题,具体是cat /usr/local/nginx/logs/nginx.pid  但是我这行单独敲是可以获取到PID的。
不知道为什么会报这种错误

当我查看结果时,发现日志切割起作用了,但是切完 Logs下的access.log和error.log没有了,正常情况下切完,它会自动生成这两个文件的。必须重启nginx 才会生成这两个日志文件。

我尝试着把脚本最后一行 中的 ‘cat /usr/local/nginx/logs/nginx.pid’替换成当前真实的PID数字 ,脚本运行一切正常,日志也正常,也能正常生成。  但是nginx的PID是动态的。必须还得用 cat 模式获取。

问题出在这了,脚本中的kill -USR1 ‘cat /usr/local/nginx/logs/nginx.pid’ 为什么不行呢

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| 发表于 2015-6-5 15:24:30 | 显示全部楼层
把反引号弄成单引号了 `` 和'' 的混淆。还是翻书解决的
回复

使用道具 举报

发表于 2015-6-5 15:35:18 | 显示全部楼层

这个引号很坑人的,所以建议下次用 $() 解决。
回复

使用道具 举报

发表于 2015-8-30 16:21:42 | 显示全部楼层
这个需求应考虑整合到logrotate里面,比如自定义一个 /etc/logrotate.d/nginx 文件。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-1 22:32 , Processed in 0.069405 second(s), 16 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表