8 Выполнение команд

Zabbix использует единый функционал для выполнения пользовательских параметров, удаленных команд, элементов данных system.run[] без флага "nowait", скриптов (оповещения, внешних и глобальных) и некоторых внутренних команд.

Команда/скрипт выполняется одинаково как на Unix, так и на Windows платформах:

  1. Zabbix (родительский процесс) создает канал связи
  2. Zabbix устанавливает этот канал связи для вывода данных от созданного дочернего процесса
  3. Zabbix создает дочерний процесс (выполняет команду/скрипт)
  4. Создается новая группа процесса (в Unix) или задача (в Windows) для дочернего процесса
  5. Zabbix считывает из канала данные по истечении установленного времени ожидания или до момента, когда запись прекратится (ВСЕ обработчики/файловые дескрипторы закрыты). Обратите внимание, что дочерний процесс может создать еще некоторое количество процессов и выйти до того, как эти процессы завершатся или будет закрыт обработчик/файловый дескриптор.
  6. Если установленное время ожидания не достигнуто, то Zabbix ждет завершения начального дочернего процесса или ждет достижения установленного времени ожидания.
  7. На этот момент подразумевается, что всё выполнено и всё дерево процессов (т.е. группа процессов или задача) завершены.

Шаги с 5 по 7 не относятся к удаленным командам, если они выполняются с флагом "nowait".​

Zabbix предполагает, что команда/скрипт завершили обработку, в тот момент, когда завершился изначальный дочерний процесс И никакие другие процессы все еще не держат открытым обработчик/файловый дескриптор. Когда обработка завершена, ВСЕ созданные процессы завершаются.

Все двойные кавычки и обратная косая черта в команде экранируются обратной косой чертой и вся команда заключается в двойные кавычки.

Смотрите более подробную информацию о пользовательских параметрах, удаленных командах и скриптах оповещения.