[comment]: # translation:outdated

[comment]: # ({b398ca99-d53fbea3})
# 9 Wykonywanie poleceń

Zabbix używa wspólnej funkcjonalności dla kontroli zewnętrznych, parametrów użytkownika,
pozycji system.run, niestandardowych skryptów alertów, zdalnych poleceń i globalnych
skryptów.

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

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

:::noteclassic
Domyślnie wszystkie skrypty w Zabbix są wykonywane przy użyciu powłoki *sh*
i nie ma możliwości zmiany domyślnej powłoki. Aby użyć innej powłoki,
można zastosować obejście: utworzyć plik skryptu i wywołać 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.  Dla procesu potomnego tworzona jest nowa grupa procesów (w Unix) lub zadanie (w Windows)
5.  Zabbix odczytuje z potoku do momentu wystąpienia limitu czasu lub gdy nikt nie zapisuje
    do drugiego końca (WSZYSTKIE uchwyty/deskriptory plików zostały zamknięte).
    Należy pamiętać, że proces potomny może utworzyć więcej procesów i zakończyć działanie,
    zanim one zakończą działanie lub zamkną uchwyt/deskrpytor pliku.
6.  Jeśli limit czasu nie został osiągnięty, Zabbix czeka, aż początkowy
    proces potomny zakończy działanie lub wystąpi limit czasu
7.  Jeśli początkowy proces potomny zakończył działanie i limit czasu nie został
    osiągnięty, Zabbix sprawdza kod wyjścia początkowego procesu potomnego i
    porównuje go z 0 (wartość różna od zera jest uznawana za błąd wykonania,
    tylko dla niestandardowych skryptów alertów, zdalnych poleceń i skryptów użytkownika
    wykonywanych na serwer i proxy Zabbix)
8.  Na tym etapie zakłada się, że wszystko zostało wykonane i całe
    drzewo procesów (tj. grupa procesów lub zadanie) jest kończone

::: noteimportant
Zabbix zakłada, że polecenie/skrypt zakończyło
przetwarzanie, gdy początkowy proces potomny zakończył działanie ORAZ żaden inny
proces nie utrzymuje już otwartego uchwytu wyjściowego/deskriptora pliku. Gdy
przetwarzanie zostanie zakończone, WSZYSTKIE utworzone procesy są kończone.
:::

Wszystkie podwójne cudzysłowy i ukośniki odwrotne w poleceniu są poprzedzane
ukośnikami odwrotnymi, a polecenie jest ujmowane w podwójne cudzysłowy.

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

[comment]: # ({f466cd79-ddd381e9})
#### Sprawdzanie kodu wyjścia

Kody wyjścia są sprawdzane przy następujących warunkach:

-   Tylko dla niestandardowych skryptów alertów, zdalnych poleceń i skryptów użytkownika
    wykonywanych na serwer Zabbix i proxy Zabbix.
-   Każdy kod wyjścia różny od 0 jest uznawany za błąd
    wykonania.
-   Zawartość standardowego strumienia błędów i standardowego wyjścia dla nieudanych wykonań
    jest zbierana i dostępna we frontendzie (gdzie wynik wykonania jest
    wyświetlany).
-   Dodatkowy wpis w logu może zostać utworzony dla zdalnych poleceń wykonywanych na Zabbix agent/proxy
    po włączeniu parametru LogRemoteCommands w [agent](/manual/appendix/config/zabbix_agentd#logremotecommands)/[proxy](/manual/appendix/config/zabbix_proxy#logremotecommands).

Możliwe komunikaty we frontendzie i wpisy w logu dla nieudanych poleceń/skryptów:

-   Zawartość standardowego strumienia błędów i standardowego wyjścia dla nieudanych wykonań
    (jeśli występuje).
-   "Proces zakończył działanie z kodem: N." (dla pustego wyjścia i kodu wyjścia
    różnego od 0).
-   "Proces został zakończony sygnałem: N." (dla procesu zakończonego sygnałem,
    tylko w systemie Linux).
-   "Proces został nieoczekiwanie zakończony." (dla procesu zakończonego z
    nieznanych przyczyn).

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

[comment]: # ({9bbf0e66-35a7f666})
#### Zobacz także

-   [Kontrole zewnętrzne](/manual/config/items/itemtypes/external#external-check-result)
-   [Parametry użytkownika](/manual/config/items/userparameters)
-   pozycje [system.run](/manual/config/items/itemtypes/zabbix_agent#system.run)
-   [Niestandardowe skrypty alertów](/manual/config/notifications/media/script)
-   [Polecenia zdalne](/manual/config/notifications/action/operation/remote_command)
-   [Skrypty globalne](/manual/web_interface/frontend_sections/alerts/scripts)

[comment]: # ({/9bbf0e66-35a7f666})
