微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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.jb51.cc/linux/396410.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐