Logrotate 的 Bash 脚本无法在 crontab 中启动

Logrotate 的 Bash 脚本无法在 crontab 中启动

我有一个简单的 bash 脚本来执行logrotate以下命令:

sudo logrotate -f /etc/logrotate.d/logfile

当我将 bash 脚本设置到 crontab 中时,该脚本没有执行,但是当我手动运行脚本时它可以运行。

这是 crontab 中的行:

* * * * * /home/plamen/test/demo.sh 

我也在 cron 中尝试了以下操作,但仍然不起作用。

root /usr/sbin/logrotate /etc/logrotate.d/logfile

有任何想法吗?

答案1

中的文件/etc/logrotate.d/由服务处理logrotate.service,因此您根本不需要通过来旋转日志crontab

但是如果您现在想轮换一些日志,则需要使用选项--force(或-f):

logrotate --force /etc/logrotate.d/your-logrotate-conf

如您所知,在crontab(在此计数由其触发的脚本内)必须使用完整路径,并且命令logrotate必须以 root 身份(或由)执行sudo,因此您可以将指令放在 root 的 crontab 中。您可以通过命令编辑它sudo crontab -e,相关行应如下所示:

* * * * * /home/plamen/test/demo.sh >> /tmp/crontab.demo.sh.log 2>&1

在这种情况下,您不需要指定用户,root因为这是其个人crontab

另一个选择是将指令放入/etc/crontab系统范围crontab(或者您可以创建专用文件/etc/cron.d/my-app-crontab),您必须在其中指定用户:

* * * * * root /home/plamen/test/demo.sh >> /tmp/crontab.demo.sh.log 2>&1

笔记:上面的例子中添加了重定向>> /tmp/crontab.demo.sh.log 2>&1,它将创建一个日志文件以便调试该过程。

答案2

这是工作,但是方式不同。

  1. 我在 /home/plamen/test/logrotate.conf 中创建了一个文件:

    logrotate /home/plamen/test/logrotate.conf --state /home/plamen/test/logrotate-state --verbose
    
  2. 或者在 crontab 中:

    logrotate /home/plamen/test/logrotate.conf --state /home/plamen/test/logrotate-state --verbose 
    

相关内容