参考
安装
1 | pip install psutil |
测试
1 | import psutil |
输出:1
2
3
4
5
6
7USER PID %CPU %MEM VSZ RSS TTY START TIME COMMAND
root 1 0.0 0.2 182700 3140 ? Jul03 00:04 systemd
root 2 0.0 ? ? ? ? Jul03 00:00 kthreadd
root 3 0.0 ? ? ? ? Jul03 00:07 ksoftirqd/0
root 5 0.0 ? ? ? ? Jul03 00:00 kworker/0:0H
root 7 0.0 ? ? ? ? Jul03 06:43 rcu_sched
...
cpu部分
测试代码:
1 | import psutil |
输出:
1 | scputimes(user=8888.84, nice=358.84, system=9442.12, idle=287258.54, iowait=171.63, irq=0.1, softirq=207.79, steal=0.0, guest=0.0, guest_nice=0.0) |
相关的名词解释:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19> user:CPU执行用户进程所花费的时间
> nice:系统调整进程优先级所花费的时间
> system:CPU在内核运行时间,包括IRQ和softirq时间
> idle:系统处于空闲期,等待进程运行所花费的时间
> iowait:CPI在等待I/O操作完成所花费的时间
> irq:系统处理硬中断所花费的时间
> softirq:系统处理软中断中断所花费的时间
> steal:被强制等待(involuntary wait)虚拟CPU的时间,此时hypervisor在为另一个虚拟处理器服务
> guest:虚拟CPU上所花费的时间
> guest_nice:虚拟机调整进程优先级所花费的时间
测试代码:
1 | import psutil |
输出:1
24
2
测试代码:
1 | import psutil |
输出:
1 | 0.2 |
测试代码:1
2
3
4
5import psutil
#获取每个每个逻辑cpu的cpu时间
cts = psutil.cpu_times(percpu=True)
for item in cts:
print item
输出:
1 | scputimes(user=2238.06, nice=93.16, system=2428.54, idle=72457.66, iowait=42.92, irq=0.08, softirq=97.32, steal=0.0, guest=0.0, guest_nice=0.0) |
内存部分
测试代码:
1 | import psutil |
输出:
1 | svmem(total=2081054720L, available=424890368L, percent=79.6, used=1977294848L, free=103759872L, active=731291648, inactive=692670464, buffers=25604096L, cached=295526400) |
相关的名词解释:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17>total:可识别的内存总数,不含页面文件,有时候会略微少于物理内存,是因为被硬件保留。
>available:空闲的内存数量,已经被操作系统控制但未被具体分配的内存,这实际是的空闲内存。
>percent:使用内存占用的百分比。
>used:使用的物理内存总量。
>free:没有被系统所使用的内存,这部分内存暂时不会被任何应用或者内核所使用,可以说这部分内存实际上是被浪费掉了
>active:活跃内存。
>inactive:非活跃内存。
>buffers:用作内核缓存的内存量。
>cached:缓冲的交换区总量。 内存中的内容被换出到交换区,而后又被换入到内存,但使用过的交换区尚未被覆盖, 该数值即为这些内容已存在于内存中的交换区的大小。相应的内存再次被换出时可不必再对交换区写入。
测试代码:
1 | import psutil |
输出:
1 | sswap(total=1071640576L, used=664248320L, free=407392256L, percent=62.0, sin=1829502976, sout=2796204032) |
相关的名词解释:1
2
3>sin:每秒交换回内存(Swap in)的总量。
>sout:每秒交换出内存(Swap out)的总量。
硬盘分区部分
测试代码:
1 | import psutil |
输出:1
2
3
4
5
6
7
8
9
sdiskpart(device='/dev/disk/by-uuid/1690f26d-4893-4c2f-8e0e-3ef22b1f4d14', mountpoint='/', fstype='ext4', opts='rw,relatime,errors=remount-ro,data=ordered')
挂在设备:/dev/disk/by-uuid/1690f26d-4893-4c2f-8e0e-3ef22b1f4d14,挂载点:/
sdiskpart(device='/dev/sr0', mountpoint='/media/shixin/CDROM', fstype='iso9660', opts='ro,nosuid,nodev,relatime,uid=1000,gid=1000,iocharset=utf8,mode=0400,dmode=0500')
挂在设备:/dev/sr0,挂载点:/media/shixin/CDROM
sdiskpart(device='/dev/sr1', mountpoint='/media/shixin/Ubuntu-Kylin 15.04 amd64', fstype='iso9660', opts='ro,nosuid,nodev,relatime,uid=1000,gid=1000,iocharset=utf8,mode=0400,dmode=0500')
挂在设备:/dev/sr1,挂载点:/media/shixin/Ubuntu-Kylin 15.04 amd64
sdiskpart(device='/dev/fd0', mountpoint='/media/floppy0', fstype='vfat', opts='rw,nosuid,nodev,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro')
挂在设备:/dev/fd0,挂载点:/media/floppy0
相关的名词解释:1
2
3
4
5
6
7>mountpoint:文件卷在目录层次内存在的位置
>fstype:指定挂载设备的文件系统类型
>device:挂载设备
>opts:挂载参数
网络部分
测试代码:
1 | import psutil |
输出:1
2snetio(bytes_sent=363926917, bytes_recv=363926917, packets_sent=390824, packets_recv=390824, errin=0, errout=0, dropin=0, dropout=0)
snetio(bytes_sent=219786003, bytes_recv=537915337, packets_sent=540269, packets_recv=1044552, errin=0, errout=0, dropin=6491, dropout=0)
相关的名词解释:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15> bytes_sent:发送总量
> bytes_recv:接收总量
> packets_sent:发送包总量
> packets_recv:接收包总量
> errin:接收错误次数
> errout:发送错误次数
> dropin:接收丢包次数
> dropout:发送丢包次数
测试代码:
1 | import psutil |
输出:
1 | sconn(fd=37, family=2, type=1, laddr=('127.0.0.1', 38280), raddr=(), status='LISTEN', pid=88102) |
相关的名词解释:1
2
3
4
5
6
7
8
9
10
11
12
13> fd:文件描述
> family:参数代表地址家族,可为AF_INET或AF_UNIX。AF_INET家族包括Internet地址,AF_UNIX家族用于同一台机器上的进程间通信
> type:参数代表套接字类型,可为SOCK_STREAM(流套接字)和SOCK_DGRAM(数据报套接字)
> laddr:laddr表示本机地址
> raddr:raddr表示远程地址
> status:套接字状态
> pid:进程识别号
用户部分
测试代码:
1 | import psutil |
输出:1
2
3suser(name='shixin', terminal=':0', host=':0', started=1435191680.0)
suser(name='shixin', terminal='pts/5', host=':0', started=1435904768.0)
suser(name='shixin', terminal='pts/7', host=':0', started=1435977216.0)
相关的名词解释:1
> pts:为用户打开的伪终端或虚拟终端