打印

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

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

这是脚本
[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’ 为什么不行呢
附件: 您所在的用户组无法下载或查看附件

TOP

把反引号弄成单引号了 `` 和'' 的混淆。还是翻书解决的

TOP


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

TOP

这个需求应考虑整合到logrotate里面,比如自定义一个 /etc/logrotate.d/nginx 文件。
IRC聊天室,#linux110,其实也有#magiclinux频道,但是一直也没有人,不如大家集中到一个频道里面。

TOP