logrotate不会在postrotate中执行自定义的shell脚本

我有以下的logrotateconfiguration文件

/home/application/*/shared/log/*.log { daily rotate 10 missingok nocompress notifempty copytruncate sharedscripts postrotate echo "Hi....." /home/application/test.sh > /home/application/test_bash.log 2>&1 echo "By....." endscript } 

/home/application/test.sh目前内容如下(我尝试在shell脚本中创build虚拟文件,但是没有成功)

 #!/bin/sh echo "==============================================" 

当我运行logrotate所有文件都成功旋转,但test.sh脚本不执行

Logrotate potput看起来如下:

使用arg / home / application / / shared / log / .log运行postrotate脚本运行脚本:“echo”Hi …..“/home/application/test.sh> /home/application/test_bash.log 2>&1回声“通过…..”“

/home/application/test_bash.log日志文件没有创build。

我甚至尝试简单的这样的例子

 /home/application/*/shared/log/*.log { daily rotate 10 missingok nocompress notifempty copytruncate sharedscripts postrotate mkdir /home/application/demo_v2/shared/log/arch endscript } 

为什么logrotate没有执行我的shell脚本? 我在做什么不正确?

正如有人说,以前的“回声”命令将失败,因为logrotate没有TTY,所以你可以尝试…

 echo "Hi....." > /home/application/test_bash.log /home/application/test.sh >> /home/application/test_bash.log 2>&1 echo "By....." >> > /home/application/test_bash.log 

目前还不清楚什么logrotate可能会做,如果你尝试像回声没有TTY的东西。

从 – logrotate -dvf的输出似乎表明您的脚本已经运行。

首先尝试一些简单的东西 – echo foo> /home/application/test_bash.log 2>&1

如果这样做,那么脚本应该很容易debugging。

Logrotate没有附带一个神奇的TTY; 你认为这个输出是写在哪里的?

通常会运行一个脚本,将其输出redirect到专用dlog,并避免在stdout上输出任何内容; 你似乎混淆了上面的几个概念。

也许,如果我们知道你想用这个logrotate脚本实际做什么 ,有人可以提供帮助。