This is a translation of the original English documentation page. Help us make it better.

10 Wykonywanie poleceń

Zabbix wykorzystuje wspólne funkcje do zewnętrznych sprawdzeń, parametrów użytkownika, elementów system.run, niestandardowych skryptów alertów, poleceń zdalnych i globalnych skryptów.

Kroki wykonania

Domyślnie wszystkie skrypty w Zabbix są wykonywane za pomocą powłoki sh, i niemożliwe jest zmodyfikowanie domyślnej powłoki. Aby skorzystać z innej powłoki, możesz użyć obejścia: utwórz plik ze skryptem i wywołaj ten skrypt podczas wykonywania polecenia.

Polecenie/skrypt jest wykonywane w podobny sposób zarówno na platformach Unix, jak i Windows:

  1. Zabbix (proces nadrzędny) tworzy potok do komunikacji
  2. Zabbix ustawia potok jako wyjście dla tworzonego procesu potomnego
  3. Zabbix tworzy proces potomny (uruchamia polecenie/skrypt)
  4. Tworzona jest nowa grupa procesów (w Unixie) lub zadanie (w systemie Windows) dla procesu potomnego
  5. Zabbix czyta z potoku do momentu wystąpienia limitu czasowego lub braku zapisów na drugim końcu (WSZYSTKIE uchwyty/desktyptory plików zostały zamknięte). Zauważ, że proces potomny może tworzyć więcej procesów i zakończyć działanie przed ich zakończeniem lub zamknięciem uchwytu/deskyptorów pliku.
  6. Jeśli limit czasowy nie został osiągnięty, Zabbix czeka, aż początkowy proces potomny zakończy działanie lub upłynie limit czasowy
  7. Jeśli początkowy proces potomny zakończył działanie, a limit czasowy nie został osiągnięty, Zabbix sprawdza kod wyjścia początkowego procesu potomnego i porównuje go z 0 (wartość niezerowa jest uważana za niepowodzenie wykonania, tylko dla niestandardowych skryptów alertów, poleceń zdalnych i skryptów użytkownika wykonywanych na serwerze Zabbix i na proxy Zabbix)
  8. W tym momencie zakłada się, że wszystko zostało zakończone, a całe drzewo procesów (tj. grupa procesów lub zadanie) jest zamykane

Zabbix zakłada, że polecenie/skrypt zostało zakończone, gdy początkowy proces potomny został zakończony I żaden inny proces nie trzyma nadal otwartego uchwytu/deskryptora pliku wyjściowego. Gdy przetwarzanie zostanie zakończone, WSZYSTKIE utworzone procesy są zamykane.

Wszystkie podwójne cudzysłowy i ukośniki w poleceniu są poprzedzone ukośnikami i polecenie jest umieszczone w podwójnych cudzysłowach.

Sprawdzanie kodu wyjścia

Kod wyjścia jest sprawdzany zgodnie z następującymi warunkami:

  • Tylko dla niestandardowych skryptów alertów, poleceń zdalnych i skryptów użytkownika wykonywanych na serwerze Zabbix i na proxy Zabbix.
  • Każdy kod wyjścia różny od 0 jest uważany za niepowodzenie wykonania.
  • Zawartość standardowego błędu i standardowego wyjścia dla nieudanych wykonań jest gromadzona i dostępna w interfejsie (gdzie jest wyświetlony wynik wykonania).
  • Dodatkowy wpis logu jest tworzony dla poleceń zdalnych na serwerze Zabbix, aby zapisać wynik wykonania skryptu i można go włączyć za pomocą parametru LogRemoteCommands agenta.

Możliwe komunikaty w interfejsie i wpisy dziennika dla nieudanych poleceń/skryptów:

  • Zawartość standardowego błędu i standardowego wyjścia dla nieudanych wykonan (jeśli występują).
  • "Proces zakończony kodem: N." (dla pustego wyjścia i kodu wyjścia różnego od 0).
  • "Proces zatrzymany przez sygnał: N." (dla procesu zatrzymanego przez sygnał, tylko na systemach Linux).
  • "Proces zakończony niespodziewanie." (dla procesu zakończonego z nieznanych przyczyn).

Zobacz także