我有以下的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脚本实际做什么 ,有人可以提供帮助。