8 Wykonywanie poleceń
Do uruchomienia parametrów użytkownika, poleceń zdalnych, pozycji system.run[] bez flagi "nowait", skryptów (alarmy, zewnętrzne i globalne) oraz niektórych poleceń wewnętrznych Zabbix używa wspólnej funkcjonalności.
Komenda/skrypt wykonywane są podobnie na obu platformach Unix i Windows:
- Zabbix (proces nadrzędny) tworzy strumień do komunikacji
- Zabbix ustawia strumień jako wyjście dla nowo tworzonych procesów potomnych
- Zabbix tworzy procesy potomne (uruchamia polecenie/skrypt)
- Tworzona jest nowa grupa procesów (w Unix) lub zadanie (w Windows) dla procesu potomnego
- Zabbix czyta ze strumienia aż do wyczerpania czasu oczekiwania (timeout) lub do momentu, gdy coś jeszcze pisze z drugiej strony (WSZYSTKIE uchwyty/deskryptory plików zostaną zamknięte). Należy zauważyć, że proces potomny może utworzyć więcej procesów i zakończyć się, zanim się one zakończą i zamkną uchwyty/deskryptory plików.
- Jeżeli nie wyczerpał się czas oczekiwania, Zabbix czeka aż pierwotny proces potomny zakończy się lub wyczerpie czas oczekiwania
- W tym punkcie zakłada się, że wszystko zostało zrobione i całe drzewo procesów (np. grupa procesów lub zadanie) zostało zakończone
Kroki 5-7 nie dotyczą poleceń wykonywanych z flagą "nowait".
Zabbix zakłada, że polecenie/skrypt skończy przetwarzanie, gdy pierwotny proces potomny zakończy się I żaden inny proces nie utrzymuje otwartego wyjściowego uchwytu/deskryptora pliku. Gdy przetwarzanie zakończy się, WSZYSTKIE potomne procesy zostaną zatrzymane.
Wszystkie podwójne cudzysłowy i znaki odwrotnego ukośnika w poleceniu są poprzedzane odwrotnym ukośnikiem a polecenie zamykane jest w podwójne cudzysłowy.
Czytaj więcej o parametrach użytkownika, poleceniach zdalnych, skryptach alarmów.