python 獲取系統基礎信息

系統基礎信息包括 Linux基本性能,塊設備,網卡接口,系統信息,網絡地址庫等信息。

使用的是psutil模塊。

安裝方法十分簡單   pip install psutil  就好



 內存信息

查看物理內存的total值和物理內存的used值。

>>> import psutil
>>> mem = psutil.virtual_memory()
>>> print 'total:',mem.total/1024/1024,'Mb',' used:',mem.used/1024/1024,'Mb'
total: 3774 Mb  used: 1043 Mb

不僅僅total和used。其他的也可以獲取到。

>>> mem
svmem(total=3958308864, available=2556866560, percent=35.4, used=1094393856, free=1518125056, active=891387904, inactive=927453184, buffers=40960, cached=1345748992, shared=11018240)
>>> mem.free/1024/1024
1447
>>> psutil.swap_memory()
sswap(total=2147479552, used=6463488, free=2141016064, percent=0.3, sin=471040, sout=6836224)


 CPU信息

Linux操作系統下CPU的利用率有以下幾個部分。

User Time,執行用戶進程的事件百分比

System Time,執行內核進程和中斷的時間百分比

Wait IO,由於IO等待而使CPU處於idle(空閒)狀態的時間百分比

Idle,CPU處於idle的時間百分比

下面是顯示CPU狀態的

>>> psutil.cpu_times()
scputimes(user=7846.72, nice=27.52, system=2248.4, idle=42798.1, iowait=187.2, irq=0.0, softirq=28.21, steal=0.0, guest=0.0, guest_nice=0.0)

顯示每一個CPU狀態

>>> psutil.cpu_times(percpu=True)
[scputimes(user=3963.92, nice=14.5, system=1133.28, idle=21375.0, iowait=93.69, irq=0.0, softirq=13.62, steal=0.0, guest=0.0, guest_nice=0.0), scputimes(user=3883.61, nice=13.01, system=1115.68, idle=21487.44, iowait=93.51, irq=0.0, softirq=14.6, steal=0.0, guest=0.0, guest_nice=0.0)]

獲取單項數據

>>> psutil.cpu_times().user
7850.13

獲取CPU的核數

>>> psutil.cpu_count()
2
>>> psutil.cpu_count(logical=False)
2

 磁盤信息

  在磁盤利用率方面,一般關注的是磁盤的利用率及IO信息。其中磁盤的利用率使用psutil.disk_usage方法獲取。IO的其他信息讀取如下。
讀IO數    read_count()
寫IO數  write_count()
IO讀字節數  read_bytes()
IO寫字節數  write_bytes()
磁盤讀時間  read_time()
磁盤寫時間  write_time()
>>> psutil.disk_partitions()
[sdiskpart(device='/dev/mapper/centos-root', mountpoint='/', fstype='xfs', opts='rw,seclabel,relatime,attr2,inode64,noquota'), sdiskpart(device='/dev/sda1', mountpoint='/boot', fstype='xfs', opts='rw,seclabel,relatime,attr2,inode64,noquota'), sdiskpart(device='/dev/sr0', mountpoint='/run/media/root/CentOS 7 x86_64', fstype='iso9660', opts='ro,nosuid,nodev,relatime,uid=0,gid=0,iocharset=utf8,mode=0400,dmode=0500')]
>>> 
>>> 
>>> psutil.disk_usage('/')
sdiskusage(total=61696114688, used=20093308928, free=41602805760, percent=32.6)
>>> 
>>> 
>>> psutil.disk_io_counters()
sdiskio(read_count=50217, write_count=17009, read_bytes=4081980416, write_bytes=167176192, read_time=1126392, write_time=1281732, read_merged_count=25, write_merged_count=696, busy_time=360413)
>>> 
>>> 
>>> psutil.disk_io_counters(perdisk=True)
{'sdb1': sdiskio(read_count=1325, write_count=350, read_bytes=81351680, write_bytes=12537856, read_time=22693, write_time=46455, read_merged_count=1, write_merged_count=38, busy_time=16554), 'sr0': sdiskio(read_count=22, write_count=0, read_bytes=270336, write_bytes=0, read_time=58, write_time=0, read_merged_count=0, write_merged_count=0, busy_time=58), 'sda2': sdiskio(read_count=23669, write_count=6774, read_bytes=1945483776, write_bytes=69984768, read_time=535274, write_time=521397, read_merged_count=24, write_merged_count=658, busy_time=165491), 'sda1': sdiskio(read_count=310, write_count=2063, read_bytes=29149184, write_bytes=2130944, read_time=8584, write_time=1088, read_merged_count=0, write_merged_count=0, busy_time=6811), 'dm-0': sdiskio(read_count=24763, write_count=7822, read_bytes=2024631808, write_bytes=82522624, read_time=558691, write_time=712792, read_merged_count=0, write_merged_count=0, busy_time=170591), 'dm-1': sdiskio(read_count=128, write_count=0, read_bytes=1093632, write_bytes=0, read_time=1092, write_time=0, read_merged_count=0, write_merged_count=0, busy_time=908)}
>>> 

 網絡信息

  系統的網絡信息與磁盤IO類似。涉及的重點也是 bytes_sent(發送字節數)、bytes_recv(接收字節數)、packets_sent(發送數據包)、packets_recv(接收數據包)

>>> psutil.net_io_counters()
snetio(bytes_sent=1932224, bytes_recv=8510735, packets_sent=10540, packets_recv=21391, errin=0, errout=0, dropin=0, dropout=0)
>>> 
>>> 
>>> psutil.net_io_counters(pernic=True)
{'eno16777736': snetio(bytes_sent=18985, bytes_recv=805201, packets_sent=230, packets_recv=9673, errin=0, errout=0, dropin=0, dropout=0), 'ens38': snetio(bytes_sent=1901551, bytes_recv=7701193, packets_sent=10302, packets_recv=11802, errin=0, errout=0, dropin=0, dropout=0), 'lo': snetio(bytes_sent=14488, bytes_recv=14488, packets_sent=54, packets_recv=54, errin=0, errout=0, dropin=0, dropout=0), 'virbr0-nic': snetio(bytes_sent=0, bytes_recv=0, packets_sent=0, packets_recv=0, errin=0, errout=0, dropin=0, dropout=0), 'virbr0': snetio(bytes_sent=0, bytes_recv=0, packets_sent=0, packets_recv=0, errin=0, errout=0, dropin=0, dropout=0)}

 其他信息

 獲取用戶登陸,開機時間。

>>> psutil.users()
[suser(name='root', terminal=':0', host='root', started=1510042496.0, pid=3371), suser(name='root', terminal='pts/0', host='root', started=1510042880.0, pid=4448)]
>>> datetime.datetime.fromtimestamp(psutil.boot_time()).strftime("%Y-%m-%d %H:%M:%S")
'2017-11-07 16:12:30'


 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章