8 Execução de comandos
O Zabbix usa uma funcionalidade em comum para executar parâmetros de
usuários, comandos remotos, system.run[] sem a flag "nowait", scripts
(alerta, externos e globais) e outros comandos internos.
O comando/script é executado de forma similar nas plataformas UNIX e Windows:
- Zabbix (um de seus processos) cria uma ponte para comunicação
- Zabbix configura a pote como a saída para o processo a ser criado
- Zabbix cria o processo filho (executa o comando/script)
- Um novo grupo de processos (no Unix) ou um 'job' (no Windows) é criado para os processos filhos
- O Zabbix lê do 'pipe' até que o 'timeout' seja alcançado ou que ninguém esteja mais gravando nele (Todos os gerenciadores/descritores de arquivo tiverem sido fechados). Observe que o processo filho pode criar mais processos e sair antes de ter saido ou fechado o descritor de arquivo.
- Se o tempo limite não tiver sido alcançado o Zabbix aguarda até que o processo saia ou que o timeout ocorra
- Neste ponto nós estamos assumindo que tudo foi executado com sucesso e toda a árvore de processos foi terminada
Os passos 5-7 não se referem a comandos remotos executados com a flag "nowait".
O Zabbix entende que o comando/script foi concluido quando o processo inicial é finalizado E não existe outro processo que continue gerenciando os descritores de arquivos abertos. Quando o processamento é concluído todos os processos que foram criados são terminados.
Todas as aspas duplas e contrabarras no comando serão escapadas com contrabarras e o comando será executado entre aspas duplas.
Leia mais sobre isso nos manuais de parâmetros de usuário, comandos remotos, scripts de alerta.