linux – logrotate没有在postrotate中执行自定义shell脚本

前端之家收集整理的这篇文章主要介绍了linux – logrotate没有在postrotate中执行自定义shell脚本前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有以下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脚本中创建虚拟文件,但没有成功)

#!/bin/sh

echo "=============================================="

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

Logrotate potput看起来如下:

运行postrotate脚本
使用arg /home/application//shared/log/.log运行脚本:“
回声“嗨……”
/home/application/test.sh\u0026gt; /home/application/test_bash.log 2>& 1
回声“By …..”

/home/application/test_bash.log日志文件未创建.

我甚至尝试过简单的例子

/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脚本?我做错了什么?

解决方法

正如之前所说的“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可能会做什么.

-logrotate -dvf的输出似乎表明你的脚本已经运行.

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

如果这样可行,那么脚本应该易于调试.

原文链接:https://www.f2er.com/linux/396410.html

猜你在找的Linux相关文章