[comment]: # ({b398ca99-d53fbea3})
# 9 Execució de comanda

Zabbix empra funcionalitats comunes per les verificacions externes, paràmetres d'usuari, elements de system.run, els scripts personalitzats d'alertes, comandes remotes i scripts d'usuaris.

[comment]: # ({/b398ca99-d53fbea3})

[comment]: # ({2e61fefc-a11705f0})
#### Passes d'execució

:::noteclassic
Per defecte, tots els scripts de Zabbix s'executen emprant l'intèrpret d'ordres *sh*, i no és possible modificar l'intèrpret d'ordres predeterminat. Per emprar una shell diferent, podeu emprar una solució alternativa: creeu un fitxer d'script i invoqueu aquest script durant l'execució de l'ordre.
:::

La comanda/script s'executa de manera similar a les plataformes Unix i Windows:

1. Zabbix (el procés principal) crea un canal de comunicació
2. Zabbix estableix el canal com a sortida del procés fill que s'ha de crear
3. Zabbix crea un procés fill (executa l'ordre/script)
4. Es crea un nou grup de processos (a Unix) o una tasca (a Windows) per al procés fill.
5. Zabbix llegeix l'entrada fins que el temps d'espera o fins que ningú escrigui a l'altre extrem (s'han tancat TOTS els identificadors/els fitxers). Tingueu en compte que el procés fill pot crear diversos processos i acabar abans que surtin o tanquin el controlador/identificador del fitxer.
6. Si no s'ha arribat al temps d'espera, Zabbix espera fins que acabi el procés secundari inicial o que hagi transcorregut el temps d'espera.
7. Si el procés secundari inicial ha acabat i no s'ha superat el temps d'espera, Zabbix comprova el codi de sortida del procés secundari inicial i el compara amb 0 (un valor diferent de zero es considera un error d'execució, només per als scripts d'alerta personalitzats, ordres remotes i scripts d'usuari que s'executen al servidor Zabbix i al proxy Zabbix)
8. En aquest punt, se suposa que tot està fet i que tot l'arbre del procés (és a dir, el grup de processos o el treball) ha acabat.

::: nota important
Zabbix assumeix que s'ha processat una ordre/script quan el procés fill inicial hagi acabat I cap altre procés encara mantingui obert el descriptor de sortida/descriptor de fitxer. Quan s'ha completat el processament, acaben TOTS els processos creats.
:::

Totes les cometes dobles i les barres inclinades invertides de l'ordre s'escapen amb barres invertides i l'ordre s'inclou entre cometes.

[comment]: # ({/2e61fefc-a11705f0})

[comment]: # ({f466cd79-ddd381e9})
#### Comprovació del codi de sortida

El codi de sortida es comprova amb les condicions següents:

- Només per a scripts d'alerta personalitzats, ordres remotes i scripts d'usuari que s'executen al servidor Zabbix i al proxy Zabbix.
- Qualsevol codi de sortida diferent de 0 es considera un error d'execució.
- El contingut de l'error estàndard i la sortida estàndard de les execucions fallides es recullen i són disponibles a la interfície (on es mostra el resultat de l'execució).
- Es crea una entrada de registre addicional per a ordres remotes al servidor/proxy Zabbix per desar els resultats de l'execució de l'script. Es pot activar mitjançant el paràmetre LogRemoteCommands a [agent](/manual/appendix/config/zabbix_agentd#logremotecommands)/[proxy](/manual/appendix/config/zabbix_proxy#logremotecommands).

Possibles missatges de la interfície web i entrades de registre per a ordres/scripts erronis:

- Contingut d'error estàndard i sortida estàndard per a execucions fallides (si n'hi han).
- "S'ha sortit del procés amb el codi: N." (per a una sortida buida i un codi de sortida diferent de 0).
- "Procés mort per el senyal: N." (per al procés finalitzat amb un senyal, només a Linux).
- "El procés va acabar inesperadament". (perquè el procés s'ha aturat per motius desconeguts).

[comment]: # ({/f466cd79-ddd381e9})

[comment]: # ({4ae4ad7a-35a7f666})
#### Veieu també

-   [Verificacions externes](/manual/config/items/itemtypes/external#external_check_result)
-   [Paràmetre d'usuari](/manual/config/items/userparameters)
-   Elements [system.run](/manual/config/items/itemtypes/zabbix_agent#system.run)
-   [Scripts d'alerta personalitzats](/manual/config/notifications/media/script)
-   [Comandes remotes](/manual/config/notifications/action/operation/remote_command)
-   [Scripts globals](/manual/web_interface/frontend_sections/alerts/scripts)

[comment]: # ({/4ae4ad7a-35a7f666})
