# 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

::: noteimportant
Os passos 5-7 não se referem a comandos remotos
executados com a flag "nowait".
:::

::: noteimportant
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](/pt/manual/config/items/userparameters), [comandos
remotos](/pt/manual/config/notifications/action/operation/remote_command),
[scripts de alerta](/pt/manual/config/notifications/media/script).
