psutil模块在获取进程信息方面也提供了很好的支持,包括使用psutil.pids()方法获取所有进程PID
1)进程信息
#列出所有进程PID
>>> import psutil
>>> psutil.pids()
[1, 2, 3, 5, 7, 8, 9, 10, 12, 13, 14, 15, 16, 17, 18, 19, 25, 26, 27, 28, 36, 38, 39, 40, 59, 91, 227, 233, 234, 235, 236, 239, 251, 256, 257, 324, 430, 451, 456, 480, 3997, 4640, 12449, 12495, 13428, 13481, 13508, 13605, 13664, 13682, 13692, 15000, 19846, 23371, 23422, 24774, 25907, 26079, 26081, 26192, 26194, 26242, 26279, 26280, 26322, 30759]
#实例化一个Process对象,参数为一进程PID
>>> p = psutil.Process(4640)
#进程名
>>> p.name()
'sshd'
#进程bin路径
>>> p.exe()
'/usr/sbin/sshd'
#进程工作目录觉得路径
>>> p.cwd()
'/'
#进程状态
>>> p.status()
'sleeping'
#进程创建时间,时间戳格式
>>> p.create_time()
1533908809.82
#进程uid信息
>>> p.uids()
puids(real=0, effective=0, saved=0)
#进程gid信息
>>> p.gids()
pgids(real=0, effective=0, saved=0)
#进程CPU时间信息,包括user、system两个CPU时间
>>> p.cpu_times()
pcputimes(user=0.0, system=0.02)
#get进程CPU亲和度,如要设置进程CPU亲和度,将CPU号作为参数即可
>>> p.cpu_affinity()
[0]
#进程内存利用率
>>> p.memory_percent()
0.22893646482172475
#进程内存rss、vms信息
>>> p.memory_info()
pmem(rss=4415488, vms=115519488)
#进程IO信息,包括读写IO数及字节数
>>> p.io_counters()
pio(read_count=67866, write_count=52290, read_bytes=1716224, write_bytes=218906624)
#返回打开进程socket的namedutples列表,包括fs、family、laddr等信息
>>> p.connections()
[pconn(fd=3, family=2, type=1, laddr=('0.0.0.0', 1993), raddr=(), status='LISTEN')]
#进程开启的线程数
>>> p.num_threads()
1
2)popen类的使用
#通过psutil的Popen方法启动的应用程序,可以跟踪该程序运行的所有相关信息
>>> import psutil
>>> from subprocess import PIPE
>>> p = psutil.Popen(["/usr/bin/python", "-c", "print('hello')"], stdout=PIPE)
>>> p.name()
'python'
>>> p.username()
'root'
>>> p.communicate()
('hello\n', None)
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。