关于Nginx日志切割脚本遇到的问题!求指教!
这是脚本# 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’
# ./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’ 为什么不行呢 把反引号弄成单引号了 `` 和'' 的混淆。还是翻书解决的 :roll:
这个引号很坑人的,所以建议下次用 $() 解决。 这个需求应考虑整合到logrotate里面,比如自定义一个 /etc/logrotate.d/nginx 文件。
页:
[1]