执行步骤

    命令/脚本在Unix和Windows系统平台上的执行方式相近:

    1. Zabbix (父进程)创建了一个交流通道。

    2. Zabbix将通道设置为要创建的子进程的输出接口。

    3. Zabbix创建子进程(运行命令/脚本)。

    4. 为子进程创建一个新的进程组(Unix平台)或一个作业(Windows平台)。

    5. Zabbix从通道读取,直到超时或另一端没有其他写入(所有处理/文件描述符都已关闭)。请注意,子进程可创建更多进程并在退出或关闭处理/文件描述符之前退出。

    6. 如果初始子进程已退出且尚未超时,Zabbix将检查初始子进程的退出代码并将其与0进行比较(非零值被视为执行失败,仅适用于在Zabbix server 和Zabbix proxy上执行的自定义告警脚本,远程命令和用户脚本 )。

    Zabbix假定命令/脚本在初始子进程退出时已完成处理,并且没有其他进程仍保持输出处理/文件描述符处于打开状态。处理完成后,将终止所有创建的进程。

    命令中的所有双引号和反斜杠都使用反斜杠进行转义,命令用双引号括起来。

    退出代码的检查

    使用以下条件检查退出代码:

    • 仅适用于在Zabbix server和Zabbix proxy上执行的自定义告警脚本,远程命令和用户脚本。

    • 任何不同于0的退出代码都被视为执行失败。

    • 标准错误的内容和执行失败的标准输出会被收集并展示在前端(显示执行结果)。

    • 为Zabbix server上的远程命令创建附加日志条目以保存脚本执行输出,可使用LogRemoteCommands代理 。

    前端可能出现的失败命令/脚本信息和日志条目:

    • “进程被信号终止:N.”(对于由信号终止的进程,仅在Linux上)。

    • “进程意外终止。”(由于未知原因进程终止)。


    了解更多: