`

管理rails日志(logrotate、cron)

阅读更多
学习网址: http://blog.csdn.net/iiisan/archive/2006/09/05/1180419.aspx

管理rails日志需要两个步骤,首先是使用logrotate工具配置被管理的日志的信息,这样做的目的是实行对日志的管理,其次,我们不可能手动执行logrotate工具,我们需要让系统自动执行这个工具,那么我们需要使用cron工具,该工具可以起到定时执行任务的作用。

提示:  手动执行logrotate工具(当我们配置好logrotate时,可以手动执行以下命令来测试配置好的logrotate是否起作用,其中/etc/logrotate.d/rails是配置好的logrotate信息):

sudo /usr/sbin/logrotate /etc/logrotate.d/rails


一:

1:为指定的文件配置转储参数,该文件要符合如下格式,其中第一行的路径是所要管理的日志的绝对路径
   经常需要为指定文件配置参数,一个常见的例子就是每月转储/var/log/wtmp/development.log。为特定文件而使用的参数格式是:

# 注释
/var/log/wtmp/development.log
{
option(s)
}


2   logrotate的具体配置信息(这里的配置信息是指上例的option(s))

daily, weekly, monthly, yearly   日、周、月、年
size  指定大小,默认为byte, k为(kbyte),M为(mbyte)。
rotate  指定备份个数
missingok  没有日志,没关系

nocompress 不需要压缩
compress   压缩为gzip格式
delaycompress   延後压缩直到下一次 rotate,注意compress和delaycompress可以实现延后压缩直到下一次rotate。
nodelaycompress     覆盖delaycompress选项,改为同时压缩

notifempty   如果log文档为空,就不rotate
copytruncate   先複製log檔的內容後,再清空的作法,因為有些程式一定log在本來的檔名,例如rails,保留原来的文档。
nocopytruncate  和copytruncate相比,不保留原来的文档

create   转储日志文件后,创建日志文件
nocreate   转储日志文件后,不创建日志文件

olddir 指定转储后的日志放入的文件夹目录
noolddir 转储后的日志和当前的日志放在同一个目录下

prerotate
   /usr/bin/chattr -a /var/log/messages
endscript   指定转储以前的动作
postrotate
   /usr/bin/kill -HUP syslogd
   /usr/bin/chattr +a /var/log/messages
endscript   指定转储以后的动作

daily                        指定转储周期为每天
weekly                       指定转储周期为每周
monthly                      指定转储周期为每月

include:  从指定的文件夹读取文件的信息,就好像这些信息已经在该文件中一样,例如/etc/logrotate.conf中的include一样,include 指定的文件中的转储参数将覆盖缺省的参数。



二: ubuntu下自动安装了cron,所以我们可以直接打开该工具的配置文件,/etc/crontab,配置信息,具体配置请看以上所提供的网址。其中我在/etc/crontab中直接指定了执行脚本文件(*/1  *    * * *    root    /etc/cron.secondly/logrotate-log,该脚本文件中存放的我需要手动执行的命令/usr/sbin/logrotate /etc/logrotate.d/rails)


三: 其他
关于shell脚本的注意事项

有三点一定要注意:

1.脚本文件的名称不能包含“.”符号。你可以写成“backup-website”,但不要写成“backup-website.sh”。
2.脚本开头必须加上“#!/bin/bash”,否则run-parts调用不成功
3.改变权限为可执行文件


ubuntu下启动,停止与重启cron,均是通过调用/etc/init.d/中的脚本进行。命令如下:

sudo /etc/init.d/cron start
sudo /etc/init.d/cron stop
sudo /etc/init.d/cron restart

crontab -u //设定某个用户的cron服务,一般root用户在执行这个命令的时候需要此参数
crontab -l //列出某个用户cron服务的详细内容
crontab -r //删除没个用户的cron服务
crontab -e //编辑某个用户的cron服务


可以通过pgrep cron命令查看cron是否在运行。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics