You are viewing documentation for the development version, it may be incomplete.
Join our translation project and help translate Zabbix documentation into your native language.

10 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.

Passes d'execució

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.

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 Zabbix per desar els resultats de l'execució de l'script. Es pot activar mitjançant el paràmetre d'agent 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).

Veieu també