监控程序返回"无输出"

Rub*_*dob 7 monit

我想尝试用monit监视postfix队列.我从Stackoverflow的人那里得到了一个例子.我的monit版本是最新版本

这是Monit版本5.10

/etc/monit.dpostfixlocal

check program postfixcola with path "/usr/local/bin/postfixcola.sh"
    #if status != 0 then alert
    if status > 1 then alert
Run Code Online (Sandbox Code Playgroud)

然后/usr/local/bin/postfixcola.sh

#!/bin/sh
QUEUE=`/usr/sbin/postqueue -p | tail -n1 | awk '{print $5}'`
exit $QUEUE
Run Code Online (Sandbox Code Playgroud)

但Monit每次都会抱怨脚本的输出.我已经做了测试,设置和回显之前exit和测试时它返回1(因为后缀的队列是1)

但错误仍然存​​在: [CET Dec 9 11:10:07] error : 'postfixcola' '/usr/local/bin/postfixcola.sh' failed with exit status (2) -- no output

我真的不知道这里有什么问题,有什么想法吗?

Ala*_*ois 1

在 bash 脚本中,您应该将消息回显到 /dev/stderr 中:

#!/bin/bash
QUEUE=`/usr/sbin/postqueue -p | tail -n1 | awk '{print $5}'`
if [ $QUEUE -ne 0 ] ; then
   echo "Queue length > $QUEUE" > /dev/stderr
fi
exit $QUEUE
Run Code Online (Sandbox Code Playgroud)