Monit中存在文件的警报

ted*_*r42 6 monit

我已经使用了monit一段时间,但我想报警文件是否存在.这是主文档中的相反用例.

这是医生说的:

IF [DOES] NOT EXIST [[<X>] <Y> CYCLES] THEN action [ELSE IF SUCCEEDED [[<X>] <Y> CYCLES] THEN action]
action is a choice of "ALERT", "RESTART", "START", "STOP", "EXEC" or "UNMONITOR".
Run Code Online (Sandbox Code Playgroud)

这给了我"如果文件丢失就吓坏了"的秘诀.但我想"如果文件在那里就吓坏了".行动的选择意味着没有"无所作为"的行动.我可以选择无操作,但对于"无所事事"的标准情况来说,这真的很愚蠢.

我猜到了一些基本情况:

IF EXISTS THEN alarm
IF EXIST THEN ALARM
Run Code Online (Sandbox Code Playgroud)

那么,有标准的方法IF IT DOES EXIST吗?

ren*_*nab 7

我最近正在寻找与你相同的解决方案,不幸的是,我无法在monit中找到这样做的方法.

我的情况与你的情况略有不同,所以我最终警告文件是否不存在,并执行了一个shell脚本.和你一样,我不想因为文件不存在而产生shell,并且在/ var/log/messages中显示"文件不存在"对我来说不是什么大问题.

我知道你说你可以向无操作人员发出声音,所以你可能不需要以下内容,但我会为那些可能有相同问题且不知道如何操作的人添加它.

check file testfile with path /path/to/file
    if not exist then exec "/bin/bash -c 'echo dne > /dev/null'" else if succeeded then alarm
Run Code Online (Sandbox Code Playgroud)

请注意,您必须exec/bin/bash将echo的输出写入/ dev/null或者monit将字面上回显"dne>/dev/null"

编辑:由于它是由于被忽视而引起我的注意,新版本的Monit使用警报而不是警报,因此检查将如下所示:

check file testfile with path /path/to/file
    if not exist then exec "/bin/bash -c 'echo dne > /dev/null'" else if succeeded then alert
Run Code Online (Sandbox Code Playgroud)

  • 看起来片段被复制并忘记改变.它应该是第二个代码片段末尾的`alert` :)我无法改变它,因为它不到6个字符. (2认同)