Porównaj ceny domen i usług IT, sprzedawców z całego świata

systemd: włączony, stan uruchamiania (gotowości)


Jeśli zrobię to w skrypcie, wyświetla "OK", gdy zostanie wywołany status.
  • systemctl zawiera foo
  • systemctl start foo
  • systemctl status foo

Ale już po kilku milisekundach status to „niepowodzenie”.
Jak mogę sprawdzić, czy uruchomienie się powiodło?
Co oznacza dla mnie tutaj „pomyślnie”: serwer jest uruchomiony i działa.
Systemd uruchamia proces i nie czeka, aby upewnić się, że serwer został poprawnie uruchomiony.
Przykład: konfiguracja serwera zawiera błąd składni. Serwer będzie działał przez kilka milisekund, ale potem się zatrzyma.
Najprostszym rozwiązaniem byłoby wykonanie "sleep 1" przed moim wywołaniem "systemctl status foo".
Ale wydaje się brudny.
Być może istnieje lepsze rozwiązanie, aby uzyskać rzeczywisty status po uruchomieniu serwera.
Zależy mi tylko na początku. Jeśli serwer przestanie działać po dwóch godzinach, nie jest to część tego pytania.
Zaproszony:
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Zwykle dostajesz
         failed
stan w tym wyjściu polecenia dla uruchomionego procesu, gdy:
  • Proces kończy się
               status         
    co nie jest równe
               0         
    lub ze statusem innym niż
               SuccessExitStatus         
    parametr określony w pliku modułu
               [Service]         
    Sekcja
  • Nieczysty sygnał wysłany do demona (zabij itp.)
  • Limit czasu podczas uruchamiania demona można ustawić za pomocą
               TimeoutStartSec         
    lub
               TimeoutSec         
    , wartość domyślna to value
               DefaultTimeoutStartSec         
    który zwykle wynosi 90 sekund lub jest ustawiony na
               system.conf         
    ,
               [Manager]         
    Sekcja
  • Watchdog (kiedy
               type=notify         
    ), jak wyżej, jest kontrolowany przez
               WatchdogSec         
    ,
               RuntimeWatchdogSec         
Usługa powinna regularnie wywoływać sd_notify (3) z „WATCHDOG = 1” (tj. „Ping podtrzymujący aktywność”). Jeśli czas między dwoma takimi wywołaniami jest dłuższy niż skonfigurowany czas, usługa przechodzi w stan awarii.

<ol start="5">
[*]
             type
niepoprawnie ustawiony w pliku modułu
[/*]
[*]
GuessMainPID
[/*]
[/list]Akceptuje wartość logiczną, która wskazuje, czy systemd powinien próbować odgadnąć główny PID usługi, jeśli nie można go wiarygodnie określić.

Ten parametr jest ignorowany, jeśli nie ustawiono opcji Type = forking.

i PIDFile = nie ustawiono, ponieważ podstawowy PID jest zawsze znany dla innych typów lub z jawnie skonfigurowanym plikiem PID. Algorytm zgadywania może dojść do błędnych wniosków, jeśli demon składa się z więcej niż jednego procesu.

Jeśli nie można określić podstawowego PID, wykrywanie awarii i automatyczny restart usługi nie będą działać niezawodnie.
... Wartość domyślna to tak.

Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się