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

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

相关文章

在Linux上编写运行C语言程序,经常会遇到程序崩溃、卡死等异...
git使用小结很多人可能和我一样,起初对git是一无所知的。我...
1. 操作系统环境、安装包准备 宿主机:Max OSX 10.10.5 虚拟...
因为业务系统需求,需要对web服务作nginx代理,在不断的尝试...
Linux模块机制浅析 Linux允许用户通过插入模块,实现干预内核...
一、Hadoop HA的Web页面访问 Hadoop开启HA后,会同时存在两个...