Перечислите все имена демонов / сервисов в Linux, используя Python? - PullRequest
0 голосов
/ 07 февраля 2019

Я хочу иметь список всех демонов / сервисов в Linux, использующих python.Я могу получить информацию, используя

service --status-all

Однако я не хочу выполнять терминальные команды через Python.Есть ли какой-либо API, доступный для выполнения этой операции?

Мой проект включает в себя множество вещей, поэтому мне нужно быть осторожным с использованием памяти и процессора, а также мне может понадобиться запускать команду каждые 10 секунд или 60 секунд в зависимости от конфигурации.Поэтому я не хочу создавать слишком много процессов.

Ранее я использовал subprocess.check_output (команда)

Но мой менеджер сказал мне избегать использованияКоманды и попытаться использовать любые доступные пакеты, я попытался найти некоторые, но смог найти пакеты, которые могут только отслеживать службы и не могут перечислять.

Наконец, моя цель - минимизировать нагрузку на систему.Какие-либо предложения ?

Дополнительные детали-

Python 3.7.2
Ubuntu 16

1 Ответ

0 голосов
/ 07 февраля 2019

С помощью psutil (sudo pip3 install psutil)

#!/usr/bin/env python
import psutil


def show_services():
    return [(
        psutil.Process(p).name(),
        psutil.Process(p).status(),
        )  for p in psutil.pids()]


def main():
    for service in show_services():
        if service[1] == 'running':
            print(service[0])


if __name__ == '__main__':
    main()

show_services возвращает список кортежей (имя, статус)

...