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) ---------------------------------------------------------------------------------------------------------------------- 我们尊重原创,也注重分享,文章来源于微信公众号:小柒博客,建议关注公众号查看原文。如若侵权请联系qter@qter.org。 ---------------------------------------------------------------------------------------------------------------------- |