You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将psutil Process对象转换为可用字典?

如何将psutil.Process实例转换为包含指定字段的字典?

你不需要手动解析psutil.Process实例的字符串输出,psutil已经为Process对象提供了直接获取这些字段的属性和方法,这种方式更可靠且不易出错。

修改后的代码实现

首先在脚本顶部新增datetime模块导入,用于处理时间格式:

from datetime import datetime

然后在process = psutil.Process(pid)之后,替换注释部分的代码,生成目标字典:

# 生成包含指定字段的字典
service_info = {
    "name": process.name(),
    "pid": process.pid,
    "status": process.status(),
    "started": datetime.fromtimestamp(process.create_time()).strftime('%Y-%m-%d %H:%M:%S')
}

# 可直接打印或使用该字典
print(service_info)

完整修改后的脚本

#!/usr/bin/env python

import re
import psutil
from datetime import datetime  # 新增时间处理模块


def log_running_services():
    known_cgroups = set()
    for pid in psutil.pids():
        try:
            cgroups = open('/proc/%d/cgroup' % pid, 'r').read()
        except IOError:
            continue  # 进程可能已退出或无权限访问
        systemd_name_match = re.search(
            '^1:name=systemd:(/.+)$', cgroups, re.MULTILINE)
        if systemd_name_match is None:
            continue  # 不在systemd维护的cgroup中
        systemd_name = systemd_name_match.group(1)
        if systemd_name in known_cgroups:
            continue  # 已处理过该服务,跳过
        if not systemd_name.endswith('.service'):
            continue  # 不是service类型,跳过
        known_cgroups.add(systemd_name)
        print(systemd_name)
        process = psutil.Process(pid)
       
        # 生成目标字典
        service_info = {
            "name": process.name(),
            "pid": process.pid,
            "status": process.status(),
            "started": datetime.fromtimestamp(process.create_time()).strftime('%Y-%m-%d %H:%M:%S')
        }
        
        # 输出结果
        print(service_info)


if __name__ == '__main__':
    log_running_services()

关键说明

  • process.name():获取进程名称
  • process.pid:直接获取进程ID(属性,无需调用)
  • process.status():获取进程状态(如sleeping)
  • process.create_time():返回进程创建的时间戳,通过datetime.fromtimestamp()转换为你需要的字符串格式

内容的提问来源于stack exchange,提问作者Josh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 20:31:08