8 Выполнение команд
Zabbix использует единый функционал для выполнения пользовательских параметров, удаленных команд, элементов данных system.run[] без флага "nowait", скриптов (оповещения, внешних и глобальных) и некоторых внутренних команд.
Команда/скрипт выполняется одинаково как на Unix, так и на Windows платформах:
- Zabbix (родительский процесс) создает канал связи
- Zabbix устанавливает этот канал связи для вывода данных от созданного дочернего процесса
- Zabbix создает дочерний процесс (выполняет команду/скрипт)
- Создается новая группа процесса (в Unix) или задача (в Windows) для дочернего процесса
- Zabbix считывает из канала данные по истечении установленного времени ожидания или до момента, когда запись прекратится (ВСЕ обработчики/файловые дескрипторы закрыты). Обратите внимание, что дочерний процесс может создать еще некоторое количество процессов и выйти до того, как эти процессы завершатся или будет закрыт обработчик/файловый дескриптор.
- Если установленное время ожидания не достигнуто, то Zabbix ждет завершения начального дочернего процесса или ждет достижения установленного времени ожидания.
- На этот момент подразумевается, что всё выполнено и всё дерево процессов (т.е. группа процессов или задача) завершены.
Шаги с 5 по 7 не относятся к удаленным командам, если они выполняются с флагом "nowait".
Zabbix предполагает, что команда/скрипт завершили обработку, в тот момент, когда завершился изначальный дочерний процесс И никакие другие процессы все еще не держат открытым обработчик/файловый дескриптор. Когда обработка завершена, ВСЕ созданные процессы завершаются.
Все двойные кавычки и обратная косая черта в команде экранируются обратной косой чертой и вся команда заключается в двойные кавычки.
Смотрите более подробную информацию о пользовательских параметрах, удаленных командах и скриптах оповещения.