免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 6341 | 回复: 11

[FreeBSD] freebsd下每天定时切割Nginx日志的脚本怎么不运行?(问题已解决) [复制链接]

论坛徽章:
0
发表于 2009-10-31 16:39 |显示全部楼层
用的张宴写的:
编写每天定时切割Nginx日志的脚本
  1、创建脚本/usr/local/webserver/nginx/sbin/cut_nginx_log.sh

vi /usr/local/webserver/nginx/sbin/cut_nginx_log.sh

  输入以下内容:

引用
#!/bin/bash
# This script run at 00:00

# The Nginx logs path
logs_path="/usr/local/webserver/nginx/logs/"

mkdir -p ${logs_path}$(date -d "yesterday" +"%Y")/$(date -d "yesterday" +"%m")/
mv ${logs_path}access.log ${logs_path}$(date -d "yesterday" +"%Y")/$(date -d "yesterday" +"%m")/access_$(date -d "yesterday" +"%Y%m%d").log
kill -USR1 `cat /usr/local/webserver/nginx/nginx.pid`


  2、设置crontab,每天凌晨00:00切割nginx访问日志

crontab -e

  输入以下内容:

引用
00 00 * * * /bin/bash  /usr/local/webserver/nginx/sbin/cut_nginx_log.sh



不知道为什么一直不起作用,求教

[ 本帖最后由 taxuerb 于 2009-11-6 13:15 编辑 ]

论坛徽章:
54
2017金鸡报晓
日期:2017-02-08 10:39:42操作系统版块每日发帖之星
日期:2016-03-08 06:20:00操作系统版块每日发帖之星
日期:2016-03-07 06:20:00操作系统版块每日发帖之星
日期:2016-02-22 06:20:00操作系统版块每日发帖之星
日期:2016-01-29 06:20:00操作系统版块每日发帖之星
日期:2016-01-27 06:20:00操作系统版块每日发帖之星
日期:2016-01-20 06:20:00操作系统版块每日发帖之星
日期:2016-01-06 06:20:0015-16赛季CBA联赛之江苏
日期:2015-12-21 20:00:24操作系统版块每日发帖之星
日期:2015-12-21 06:20:00IT运维版块每日发帖之星
日期:2015-11-17 06:20:002015亚冠之广州恒大
日期:2015-11-12 10:58:02
发表于 2009-11-01 08:08 |显示全部楼层
先看一下/var/log/cron,确认一下这个命令是不是执行了。

另外,FreeBSD默认好像没有/bin/bash,应该是/bin/sh。

论坛徽章:
0
发表于 2009-11-01 18:53 |显示全部楼层
/var/log/cron  
cut_nginx_log.sh运行了,有运行的日志



/usr/local/webserver/nginx/logs/
-rw-r--r--  1 root  wheel  389048757 Nov  1 18:49 access.log
-rw-r--r--  1 root  wheel   52785568 Nov  1 18:48 error.log
-rw-r--r--  1 root  wheel          4 Sep 18 21:53 nginx.pid

就是没见执行切割日志........


刚改成这样的试试
00 00 * * * /bin/sh  /usr/local/webserver/nginx/sbin/cut_nginx_log.sh

以前是这样写的
00 00 * * *   /usr/local/webserver/nginx/sbin/cut_nginx_log.sh restart

[ 本帖最后由 taxuerb 于 2009-11-2 16:28 编辑 ]

论坛徽章:
0
发表于 2009-11-01 20:55 |显示全部楼层
用newsyslog不就行了

论坛徽章:
1
金牛座
日期:2014-05-29 15:55:47
发表于 2009-11-02 10:27 |显示全部楼层
再去学习一下cron

论坛徽章:
0
发表于 2009-11-02 13:28 |显示全部楼层
改后切割日志了,但没有创建目录,也没移走,变成这样的了access_.log
新建的access.log用户组属于www,不是root
估计不是以root权限执行脚本,我加上root试试

crontab -e
改成:
SHELL=/bin/sh
0 0 * * * root /usr/local/webserver/nginx/sbin/cut_nginx_log.sh

[ 本帖最后由 taxuerb 于 2009-11-2 16:09 编辑 ]

论坛徽章:
54
2017金鸡报晓
日期:2017-02-08 10:39:42操作系统版块每日发帖之星
日期:2016-03-08 06:20:00操作系统版块每日发帖之星
日期:2016-03-07 06:20:00操作系统版块每日发帖之星
日期:2016-02-22 06:20:00操作系统版块每日发帖之星
日期:2016-01-29 06:20:00操作系统版块每日发帖之星
日期:2016-01-27 06:20:00操作系统版块每日发帖之星
日期:2016-01-20 06:20:00操作系统版块每日发帖之星
日期:2016-01-06 06:20:0015-16赛季CBA联赛之江苏
日期:2015-12-21 20:00:24操作系统版块每日发帖之星
日期:2015-12-21 06:20:00IT运维版块每日发帖之星
日期:2015-11-17 06:20:002015亚冠之广州恒大
日期:2015-11-12 10:58:02
发表于 2009-11-02 20:59 |显示全部楼层
SHELL=/bin/sh

这句直接放在脚本时就行了,把第一行改为:
#!/bin/sh

可以参照一下/etc/rc.d里面的脚本。

论坛徽章:
0
发表于 2009-11-05 09:31 |显示全部楼层
为什么不会解析这个
$(date+"%Y"-"%m")
$(date+%Y-%m)
不管哪个,就是不会解析日期?奇怪
试了试,直接写成固定目录就执行的很好,一旦写成这个就不解析了

运行就提示
date+%Y-%m: not found
date+%Y-%m: not found
date+%Y-%m-%d: not found

[ 本帖最后由 taxuerb 于 2009-11-5 09:42 编辑 ]

论坛徽章:
0
发表于 2009-11-05 22:09 |显示全部楼层

回复 #8 taxuerb 的帖子

你用的那个脚本是针对Linux写的吧?
FreeBSD的date命令和Linux的不一样!自己man一下吧

论坛徽章:
0
发表于 2009-11-06 13:11 |显示全部楼层
取昨天的日期,freebsd应该这样写:date -v -1d +%Y%m%d
谢谢楼上提醒,一直没注意这个

[ 本帖最后由 taxuerb 于 2009-11-6 14:03 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP