python - 使用 Python 列出 linux 中的所有守护进程/服务名称?

标签 python linux daemon

我想在 Linux 中使用 python 获得所有守护进程/服务的列表。 我可以使用

获取信息
service --status-all

但是我不想通过 Python 执行终端命令。是否有任何 API 可用于执行此操作?

我的项目包含很多东西,所以我需要注意内存和 CPU 使用情况,而且我可能需要每 10 秒或 60 秒运行一次命令,具体取决于配置。 所以我不想创建太多进程。

之前我使用过subprocess.check_output(command)

但我的经理告诉我避免使用命令并尝试使用任何可用的包,我尝试搜索一些但发现只能监控服务而无法列出的包。

最后,我的目标是尽量减少系统负载。 有什么建议 ?

其他详细信息-

Python 3.7.2
Ubuntu 16

最佳答案

使用 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 返回元组列表(名称、状态)

关于python - 使用 Python 列出 linux 中的所有守护进程/服务名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54568953/

相关文章:

python - 如何通过不断变化的步长拆分列表?

python - 在 O(n) 的排序矩阵中查找小于目标的 # 元素的算法?

linux - 如何在 shell 脚本中实现共享内存?

linux - 创建不包括目录中某些文件的符号链接(symbolic link)

azure - 从守护程序应用程序访问受 oAuth2 保护的 Azure Function

python - 在python中将文件路径存储为变量

python - Django 检查运行时间

c++ - 所有 C++ 代码(完全相同)在 Windows 系统和基于 Linux 的系统上编译和工作是否相同?为什么?[用 c++] [RBIx]

linux - Docker 命令无法连接到 Docker 守护进程

java - 如何创建java守护进程以及如何交互?