1. 首页
  2. 运维开发
  3. Python

Python获取程序进程信息psutil模块使用(二)

上一篇《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官方文档。

参考连接:http://blog.nbqykj.cn/?p=2043.html

评论列表(0条)

联系我们

0574-55011290

QQ:248687950

邮件:admin@nbhao.org

工作时间:周一至周五,9:00-18:00,节假日休息

QR code