Python获取程序进程信息psutil模块使用(二)
发表时间:2015-09-07 11:30 | 分类:Python | 浏览:7,122 次
上一篇《Python获取系统基础信息psutil模块使用》文章主要介绍了psutil模块获取系统的基础信息,包括cpu、内存、磁盘io和网络io。psutil模块还可以查看系统进程信息,主要使用psutil.Process()和psutil.Popen()两个方法。
Process
使用方法如下所示:
>>> #导入模块,失败的说明安装失败 >>> import psutil >>> #列出当前所有进程的pid,返回一个list >>> psutil.pids() [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 23, 24, 25, ...] >>> #实例化一个Process对象,指定某个进程pid >>> p=psutil.Process(10405) >>> #进程名称 >>> p.name() 'java' >>> #进程pid >>> p.pid 10405 >>> #父进程pid >>> p.ppid() 10403 >>> #返回父进程,如果不存在父进程,则返回None。 >>> p.parent() <psutil.Process(pid=10403, name='javatest.sh') at 30842192> >>> #进程bin路径 >>> p.exe() '/usr/lib/jvm/java-6-openjdk-amd64/jre/bin/java' >>> #进程工作目录绝对路径 >>> p.cwd() '/home/sijitao.net/javatest' >>> #返回哪个用户运行的进程 >>> p.username() 'sijitao.net' >>> #进程状态 >>> p.status() 'sleeping' >>> #进程创建时间,时间戳格式 >>> p.create_time() 1441074440.74 >>> #改成常规时间格式 >>> import datetime >>> datetime.datetime.fromtimestamp(p.create_time()) datetime.datetime(2015, 9, 1, 10, 27, 20, 740000) >>> print datetime.datetime.fromtimestamp(p.create_time()) 2015-09-01 10:27:20.740000 >>> datetime.datetime.fromtimestamp(p.create_time()).strftime("%Y-%m-%d %H:%M:%S") '2015-09-01 10:27:20' >>> #进程uid信息 >>> p.uids() puids(real=1003, effective=1003, saved=1003) >>> #进程gid信息 >>> p.gids() pgids(real=1002, effective=1002, saved=1002) >>> #进程cpu时间信息,包括user和system两个时间。 >>> p.cpu_times() pcputimes(user=17914.4, system=1444.41) >>> #进程占用内存利用率百分比 >>> p.memory_percent() 25.29625956853707 >>> #进程内存使用的详细信息 >>> p.memory_info() pmem(rss=2117931008, vms=6930079744) >>> #a为进程使用的实际内存rss,b为使用的虚拟内存vms >>> a, b = p.memory_info() >>> print "a=%s,b=%s" % (a,b) a=2104492032,b=6930079744 >>> #进程的io信息,包括读写io数和字节数 >>> p.io_counters() pio(read_count=1028798665, write_count=1448643, read_bytes=278528, write_bytes=31179665408) >>> #进程开启的线程数 >>> p.num_threads() 74 >>> #返回打开进程socket的namedutples列表,包括fs,family,laddr等信息 >>> p.connections() [pconn(fd=178, family=10, type=1, laddr=('::ffff:xxx.xxx.xxx.xxx', 41154), raddr=('::ffff:xxx.xxx.xxx.xxx', 80), status='CLOSE_WAIT'), pconn(......]
Popen
除了Process,psutil还有一个Popen类,他可以获取用户启动的应用程序进程信息,且可以跟踪程序进程的运行状态。
类似如下:
>>> from subprocess import PIPE >>> p1=psutil.Popen(["/usr/bin/python","-c","print('hello')"],stdout=PIPE) >>> p1.name() 'python' >>> p1.username() 'root' >>> p1.communicate() ('hello\n', None) >>> p1.cpu_times() pcputimes(user=0.01, system=0.01)
具体使用方法参考psutil官方文档。
参考连接:https://zhangnq.com/2043.html
现在只有1个回复
Comment (1)
Trackbacks (0)
-
还没有Trackbacks
好方法