Запуск systemctl в скрипте Python

Я пытаюсь получить статус нескольких служб systemd в Python, но продолжаю получать сообщение об ошибке FileNotFoundError: [Errno 2] Нет такого файла или каталога: 'systemctl show -p ActiveState --value abc'

Я запускаю Ubuntu 20.04 как пользователь пользователь . Файл abc.service находится в / etc / systemd / system / , подробности ниже:

-rw-rw-r--  1 root root 1542 Aug  5 17:31  abc.service

Сценарий

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

Однако, если я запустил systemctl , я могу получить статус активен . Я пробовал использовать в скрипте sudo и получаю ту же ошибку.

В связи с этим, я подумал, что в конечном итоге мне придется запустить команду, используя sudo , но на самом деле я запускаю команду как часть своего тега Airflow (то есть не как отдельный сценарий, где я может делать sudo python3 myscript.py ). Есть ли способ сделать это?

1
задан 11 August 2021 в 06:47

1 ответ

Я проявил небрежность и не включил shell = True в свой подпроцесс . Как только я его добавил, он работает успешно.

status = subprocess.check_output("systemctl show -p ActiveState --value abc", shell=True)
0
ответ дан 20 August 2021 в 10:27

Другие вопросы по тегам:

Похожие вопросы: