2015-05-05 40 views
6

Piszę skrypt, aby automatycznie zainstalować serwer wiążący w dystrybucji CentOs 7.Sprawdź, czy systemd jednostka jest aktywna w skrypcie bash

Utknąłem z systemctl status, ponieważ nie generuje kodu błędu (to prawda, ponieważ status nie jest błędem) Mogę użyć.

Chcę sprawdzić, czy usługa jest uruchomiona (aktywna). Jaki jest najlepszy i skuteczny sposób na zrobienie tego?

+0

Właściwie 'systemctl status' nie zwracają stan - jak stwierdzono podczas wykonywania' systemctl openvpn stan @<> '. Gdzie wartości wynoszą "0" do uruchomienia, a "3" do zatrzymania. Jednak to polecenie jest interaktywne :(. Dlatego sugerowane przez @lars "systemctl jest-active" jest drogą do zrobienia, i lepiej do '-q' jak sugeruje @palswim –

Odpowiedz

25

Najlepszym sposobem, aby sprawdzić, czy usługa jest aktywna jest z komendą w systemctl is-active:

# systemctl start sshd 
# systemctl is-active sshd >/dev/null 2>&1 && echo YES || echo NO 
YES 
# systemctl stop sshd 
# systemctl is-active sshd >/dev/null 2>&1 && echo YES || echo NO 
NO 
+0

Dzięki, właśnie tego szukałem! wydaje mi się, że przegapiłem go w instrukcji. ^^ ' – math

+0

Dobre rzeczy, dziękuję! –

+9

Możesz również użyć przełącznika '-q', aby nie trzeba było przekierowywać wyjścia:' systemctl -q is-active sshd' – palswim

Powiązane problemy