Amazon ec2 如何每小时运行日志文件

Amazon ec2 如何每小时运行日志文件,amazon-ec2,logrotate,Amazon Ec2,Logrotate,我创建了一个program.conf,在EC2实例中每小时对日志进行一次logrotate。当我强制执行logrotate命令(由sudo logrotate program.conf--verbose--force)时,logrotate工作得很好,但它不是每小时运行一次 通过谷歌搜索这个问题,我尝试了几种解决方案,比如将program.conf放入/etc/logrotate.d,并将logrotate从cron.dail移动到cron.hourly。 但它不起作用 这是我的program.

我创建了一个program.conf,在EC2实例中每小时对日志进行一次logrotate。当我强制执行logrotate命令(由sudo logrotate program.conf--verbose--force)时,logrotate工作得很好,但它不是每小时运行一次

通过谷歌搜索这个问题,我尝试了几种解决方案,比如将program.conf放入/etc/logrotate.d,并将logrotate从cron.dail移动到cron.hourly。 但它不起作用

这是我的program.conf:

/home/user_i/*.log{
hourly
missingok
dateext 
rotate 1
compress
size 100M
sharedscripts
postrotate
    /usr/bin/bash file.sh
endscript
}
你知道吗


谢谢

您需要在crontab中添加作业

crontab -e
然后添加一个每小时运行14分钟的作业

14 * * * * /usr/sbin/logrotate /home/sammy/logrotate.conf --state /home/sammy/logrotate-state
摘自:

另外,还可以通过执行以下操作来检查crontab是否正在实际运行

service crontab status
如果停止,您可以通过执行以下操作启动

service crontab start

OP在评论中指出,他们不能使用crontab,需要使用/etc/cron.hourly的解决方案

  • 获取用于定义logrotate参数的“program.conf”文件,并将该文件放在根用户可以访问的地方,但不在/etc/logrotate.d/目录中。我们的想法是,如果我们以自己的方式每小时运行一次,我们不希望logrotate在正常运行时也执行此旋转。此文件只需要根用户可读,不需要可执行

  • 您需要确保所需的所有logrotate参数都在该文件中。我们将使用logrotate来执行仅使用此配置文件的旋转,但这也意味着不考虑您在/etc/logrotate.conf中定义的任何“全局”参数。如果您的自定义旋转需要遵守其中的任何参数,则需要将它们复制到“program.conf”文件中

  • 在/etc/cron.hourly文件夹中,创建一个新文件(可由root执行),该文件将是每小时执行自定义循环的脚本(相应地调整shell/shebang):


  • 这将使cron对该配置文件进行每小时强制轮换,而不会对logrotate的正常功能产生任何影响。

    感谢您的回答,我已经对其进行了测试,并且效果良好,但是我不能使用crontab,因为我还有一个。你知道如何使用/etc/cron.hourly/请?@delx_s mv/etc/cron.daily/logrotate/etc/cron.daily。另外,请确保您的脚本具有每小时一次的logrotate设置。您好,非常感谢,它工作正常。除了您的解决方案之外,我还更改了我的日志文件的一些访问权限(在/var/log/mylog_folder/)@delx_很高兴听到这个消息,如果您对您的问题感到满意,请将答案标记为已接受。
    #!/usr/bin/bash
    
    logrotate -f /some/dir/program.conf