Il mio problema:
Sto scrivendo uno script bash e in esso mi piacerebbe verificare se un determinato servizio è in esecuzione.
So come farlo manualmente, con $ service [service_name] status
.
Ma (specialmente dal passaggio a systemd) che stampa un sacco di testo che è un po 'disordinato da analizzare. Supponevo che ci fosse un comando per gli script con output semplice o un valore di ritorno che posso controllare.
Ma cercare su Google produce solo una tonnellata di risultati "Oh, just ps aux | grep -v grep | grep [service_name]
". Non può essere la migliore pratica, vero? Cosa succede se è in esecuzione un'altra istanza di quel comando, ma non una avviata dallo script SysV init?
O dovrei solo stare zitto e sporcarmi le mani con un po 'di pgrep?
inactive
oactivating
entrambisystemctl status
edsystemctl is-active
escono con 3. (come da systemd-241 ) Soluzione alternativa:systemctl show service | grep -qx ActiveStatus=activating