我有以下logrotate配置文件
/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脚本中创建虚拟文件,但没有成功)@H_502_5@
#!/bin/sh echo "=============================================="
当我运行logrotate时,所有文件都成功轮换,但不执行test.sh脚本@H_502_5@
Logrotate potput看起来如下:@H_502_5@
运行postrotate脚本
使用arg /home/application//shared/log/.log运行脚本:“
回声“嗨……”
/home/application/test.sh\u0026gt; /home/application/test_bash.log 2>& 1
回声“By …..”
“@H_502_5@
/home/application/test_bash.log日志文件未创建.@H_502_5@
我甚至尝试过简单的例子@H_502_5@
/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脚本?我做错了什么?@H_502_5@
解决方法
正如之前所说的“echo”命令会失败,因为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
目前还不清楚如果你在没有TTY的情况下尝试回声,logrotate可能会做什么.@H_502_5@
-logrotate -dvf的输出似乎表明你的脚本已经运行.@H_502_5@
首先尝试一些简单的事情 – echo foo> /home/application/test_bash.log 2>& 1@H_502_5@
如果这样可行,那么脚本应该易于调试.@H_502_5@