系統基礎信息包括 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數 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'