Table of Contents

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:

  1. Zabbix (um de seus processos) cria uma ponte para comunicação
  2. Zabbix configura a pote como a saída para o processo a ser criado
  3. Zabbix cria o processo filho (executa o comando/script)
  4. Um novo grupo de processos (no Unix) ou um 'job' (no Windows) é criado para os processos filhos
  5. 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.
  6. Se o tempo limite não tiver sido alcançado o Zabbix aguarda até que o processo saia ou que o timeout ocorra
  7. 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.