Puncte:0

Rularea systemctl în scriptul Python

drapel cn

Încerc să obțin statutul câtorva systemd servicii în Python, dar continui să primesc eroarea FileNotFoundError: [Errno 2] Nu există un astfel de fișier sau director: „systemctl show -p ActiveState --value abc”

Rulez Ubuntu 20.04, ca utilizator utilizator. The abc.serviciu fișierul este în /etc/systemd/system/, detalii mai jos:

-rw-rw-r-- 1 rădăcină rădăcină 1542 5 august 17:31 abc.service

Scenariul este

subproces de import
status = subprocess.check_output("systemctl show -p ActiveState --value abc")
print(stare)

Cu toate acestea, dacă rulez systemctl comanda direct, pot obține starea activ. Am incercat cu sudo în script și primesc aceeași eroare.

Într-o notă legată, m-am gândit că va trebui să rulez comanda folosind sudo în cele din urmă, dar de fapt rulez comanda ca parte a dag-ului meu Airflow (adică nu ca un script separat în care pot face sudo python3 myscript.py). Există vreo modalitate de a face asta?

ajgringo619 avatar
drapel de
Cred că acest lucru va ajuta: https://stackoverflow.com/questions/2449250/any-way-to-assign-terminal-output-to-variable-with-python#2449301
Puncte:0
drapel cn

Am fost neglijent și nu am inclus shell=Adevărat in al meu subproces. După ce l-am adăugat, rulează cu succes.

status = subprocess.check_output ("systemctl show -p ActiveState --value abc", shell=True)

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.