美文网首页python 集python
python 模块psutil获取进程信息

python 模块psutil获取进程信息

作者: Swift社区 | 来源:发表于2019-08-16 17:14 被阅读19次

    获取进程信息

    接续上篇《python 常用内建模块之psutil》安装psutil,并且获取一些基本信息,本篇介绍通过psutil获取到所有进程的详细信息:

    1. 获取所有进程ID

    print psutil.pids()
    

    运行结果:

    [3865, 3864, 3863, 3856, 3855, 3853, 3776, ..., 45, 44, 1, 0]
    

    2. 获取指定进程ID=1689,其实就是当前pycharm交互环境

    p = psutil.Process(1689)
    # 进程名称
    print p.name()
    

    运行结果:

    pycharm
    

    3. 获取进程exe路径

    p = psutil.Process(1689)
    print p.exe()
    

    运行结果:

    /Applications/PyCharm.app/Contents/MacOS/pycharm
    

    4. 获取进程工作目录

    p = psutil.Process(1689)
    print p.cwd()
    

    运行结果:

    /Applications/PyCharm.app/Contents/bin
    

    5. 获取进程启动的命令行

    p = psutil.Process(1689)
    print p.cmdline()
    

    运行结果:

    ['/Applications/PyCharm.app/Contents/MacOS/pycharm']
    

    6. 获取父进程ID

    p = psutil.Process(1689)
    print p.ppid()
    

    运行结果:

    1
    

    7. 获取父进程

    p = psutil.Process(1689)
    print p.parent()
    

    运行结果:

    psutil.Process(pid=1, name='lound', started='2018-08-12 09:13:10')
    

    8. 获取子进程列表

    p = psutil.Process(1689)
    print p.children()
    

    运行结果:

    [psutil.Process(pid=30566, name='Python', started='14:52:04'), psutil.Process(pid=1755, name='fsnotifier', started='2018-08-12 12:17:23')]
    

    9. 获取进程状态

    p = psutil.Process(1689)
    print p.status()
    

    运行结果:

    running
    

    10. 获取进程用户名

    p = psutil.Process(1689)
    print p.username()
    

    运行结果:

    fby
    

    11. 获取进程创建时间

    p = psutil.Process(1689)
    print p.create_time()
    

    运行结果:

    1565583434.66
    

    12. 获取进程终端

    p = psutil.Process(1689)
    print p.terminal()
    

    运行结果:

    /dev/ttys002
    

    13. 获取进程使用的CPU时间

    p = psutil.Process(1689)
    print p.cpu_times()
    

    运行结果:

    pcputimes(user=5228.817022976, system=2723.374170112, children_user=0.0, children_system=0.0)
    

    14. 获取进程使用的内存

    p = psutil.Process(1689)
    print p.memory_info()
    

    运行结果:

    pmem(rss=875470848L, vms=10986835968L, pfaults=10496095, pageins=18513)
    

    15. 获取进程打开的文件

    p = psutil.Process(1689)
    print p.open_files()
    

    运行结果:

    []
    

    16. 获取进程相关网络连接

    p = psutil.Process(1689)
    print p.connections()
    

    运行结果:

    []
    

    17. 获取进程的线程数量

    p = psutil.Process(1689)
    print p.num_threads()
    

    运行结果:

    1
    

    18. 获取所有线程信息

    p = psutil.Process(1689)
    print p.threads()
    

    运行结果:

    [pthread(id=1, user_time=0.090318, system_time=0.062736)]
    

    19. 获取进程环境变量

    p = psutil.Process(1689)
    print p.environ()
    

    运行结果:

    {'SHELL': '/bin/bash', 'PATH': '/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:...', 'PWD': '/Users/michael', 'LANG': 'zh_CN.UTF-8', ...}
    

    20. 结束进程

    p = psutil.Process(1689)
    p.terminate()
    

    运行结果:

    Terminated: 15 <-- 自己把自己结束了
    

    和获取网络连接类似,获取一个root用户的进程需要root权限,启动Python交互环境或者.py文件时,需要sudo权限。

    psutil还提供了一个test()函数,可以模拟出ps命令的效果:

    import psutil
    psutil.test()
    

    运行结果:

    USER         PID %MEM     VSZ     RSS TTY           START    TIME  COMMAND
    root           0 24.0 74270628 2016380 ?             Nov18   40:51  kernel_task
    root           1  0.1 2494140    9484 ?             Nov18   01:39  launchd
    root          44  0.4 2519872   36404 ?             Nov18   02:02  UserEventAgent
    root          45    ? 2474032    1516 ?             Nov18   00:14  syslogd
    root          47  0.1 2504768    8912 ?             Nov18   00:03  kextd
    root          48  0.1 2505544    4720 ?             Nov18   00:19  fseventsd
    _appleeven    52  0.1 2499748    5024 ?             Nov18   00:00  appleeventsd
    root          53  0.1 2500592    6132 ?             Nov18   00:02  configd
    ...
    

    相关文章

      网友评论

        本文标题:python 模块psutil获取进程信息

        本文链接:https://www.haomeiwen.com/subject/uadzjctx.html