python3 获取Linux系统信息
系统信息
import platform
platform.uname()
platform.architecture()
CPU信息
/proc/cpuinfo文件包含了系统处理器单元的信息。
#!/usr/bin/env/ python """
/proc/cpuinfo as a Python dict
"""
from __future__ import print_function
from collections import OrderedDict
import pprint def cpuinfo():
"""
Return the information in /proc/cpuinfo
as a dictionary in the following format:
cpu_info['proc0']={...}
cpu_info['proc1']={...}
""" cpuinfo=OrderedDict()
procinfo=OrderedDict() nprocs = 0
with open('/proc/cpuinfo') as f:
for line in f:
if not line.strip():
# end of one processor
cpuinfo['proc%s' % nprocs] = procinfo
nprocs=nprocs+1
# Reset
procinfo=OrderedDict()
else:
if len(line.split(':')) == 2:
procinfo[line.split(':')[0].strip()] = line.split(':')[1].strip()
else:
procinfo[line.split(':')[0].strip()] = '' return cpuinfo if __name__=='__main__':
cpuinfo = cpuinfo()
print(cpuinfo)
for processor in cpuinfo.keys():
print(cpuinfo[processor]['model name'])

cpu使用率:/proc/stat
1、匹配文件中CPU0,计算cpu_total1=user+nice+system+idle+iowait+irq+softirq
2、计算cpu_used1=user+nice+system+irq+softirq
3、记录cpu_total1和cpu_used1,sleep 15秒
4、同样方法重新计算cpu_total2、cpu_used2
5、cpu0在15秒内的平均使用率:(cpu_used2- cpu_used1)/(cpu_total2 - cpu_total1)*100%
cpu负载:/proc/loadavg
cpu 核心数量: cat /proc/stat | grep cpu | sed 1d | wc -l
cpu 频率: cat /proc/cpuinfo | grep 'cpu MHz' | tail -n1 | awk -F':' '{print $2}'
内存信息
文件/proc/meminfo系统内存的信息
#!/usr/bin/env python from __future__ import print_function
from collections import OrderedDict def meminfo():
"""
Return the information in /proc/meminfo
as a dictionary
""" meminfo=OrderedDict() with open('/proc/meminfo') as f:
for line in f:
meminfo[line.split(':')[0]] = line.split(':')[1].strip()
return meminfo if __name__=='__main__':
print(meminfo())
meminfo = meminfo()
print('Total memory: {0}'.format(meminfo['MemTotal']))
print('Free memory: {0}'.format(meminfo['MemFree']))

/proc/meminfo
内存总量:MemTotal
内存使用量:MemTotal - MemFree
应用程序内存使用量:MemTotal - MemFree - Buffers - Cached
swap总量:SwapTotal
swap使用量:SwapTotal - SwapFree
private内存占用:所有/proc/进程ID/smaps文件的Private_Clean和Private_Dirty加起来
Virtual内存占用:所有/proc/进程ID/smaps文件的Size加起来
共享内存:/dev/shm目录下所有子文件大小
网络统计信息
/proc/net/dev文件
#!/usr/bin/env python
from __future__ import print_function
from collections import namedtuple def netdevs():
"""
RX and TX bytes for each of the network devices
""" with open('/proc/net/dev') as f:
net_dump = f.readlines() device_data={}
data = namedtuple('data',['rx','tx'])
for line in net_dump[2:]:
line = line.split(':')
if line[0].strip() != 'lo':
device_data[line[0].strip()] = data(float(line[1].split()[0])/(1024.0*1024.0),
float(line[1].split()[8])/(1024.0*1024.0)) return device_data if __name__=='__main__':
print(netdevs())
netdevs = netdevs()
for dev in netdevs.keys():
print('{0}: {1} MiB {2} MiB'.format(dev, netdevs[dev].rx, netdevs[dev].tx))

进程信息
/proc目录包含了所有正运行的进程目录。这些目录的名字和进程的标识符是一样的。所以,如果你遍历/proc目录下那些使用数字作为它们的名字的目录,你就会获得所有现在正在运行的进程列表。
#!/usr/bin/env python
"""
List of all process IDs currently active
""" from __future__ import print_function
import os
def process_list(): pids = []
for subdir in os.listdir('/proc'):
if subdir.isdigit():
pids.append(subdir) return pids if __name__=='__main__':
print(process_list())
pids = process_list()
print('Total number of running processes:: {0}'.format(len(pids)))

块设备
系统中的块设备可以从/sys/block目录中找到。因此可能会有/sys/block/sda、/sys/block/sdb等这样的目录。
#!/usr/bin/env python """
Read block device data from sysfs
""" from __future__ import print_function
import glob
import re
import os # Add any other device pattern to read from
dev_pattern = ['sd.*','mmcblk*'] def size(device):
nr_sectors = open(device+'/size').read().rstrip('\n')
sect_size = open(device+'/queue/hw_sector_size').read().rstrip('\n') # The sect_size is in bytes, so we convert it to GiB and then send it back
return (float(nr_sectors)*float(sect_size))/(1024.0*1024.0*1024.0) def detect_devs():
for device in glob.glob('/sys/block/*'):
for pattern in dev_pattern:
if re.compile(pattern).match(os.path.basename(device)):
print('Device:: {0}, Size:: {1} GiB'.format(device, size(device))) if __name__=='__main__':
detect_devs()

参考:http://www.oschina.net/translate/linux-system-mining-with-python
磁盘IO读:/proc/vmstat,pgpgin
磁盘IO写:/proc/vmstat,pgpgout
Linux 查看系统硬件信息一些命令
https://www.cnblogs.com/ggjucheng/archive/2013/01/14/2859613.html
python3 获取Linux系统信息的更多相关文章
- 使用 python 获取 Linux 系统信息(通过dmidecode命令)
通过 dmidecode 命令可以获取到 Linux 系统的包括 BIOS. CPU.内存等系统的硬件信息,这里使用 python 代码来通过调用 dmidecode 命令来获取 Linux 必要的系 ...
- 【转】 使用 Python 获取 Linux 系统信息
在本文中,我们将会探索使用Python编程语言工具来检索Linux系统各种信息.走你. 哪个Python版本? 当我提及Python,所指的就是CPython 2(准确的是2.7).我会显式提醒那些相 ...
- 使用 Python 获取 Linux 系统信息
探索platform模块 platform模块在标准库中,它有很多运行我们获得众多系统信息的函数.让我们运行Python解释器来探索它们中的一些函数,那就从platform.uname()函数开始吧: ...
- Python脚本获取Linux系统信息
# -*- coding:utf-8 -*- import os import subprocess import re import hashlib #对字典取子集 def sub_dict(for ...
- 运用Python语言编写获取Linux基本系统信息(三):Python与数据库编程,把获取的信息存入数据库
运用Python语言编写获取Linux基本系统信息(三):Python与数据库编程 有关前两篇的链接: 运用Python语言编写获取Linux基本系统信息(一):获得Linux版本.内核.当前时间 运 ...
- 运用Python语言编写获取Linux基本系统信息(二):文件系统使用情况获取
本文跟着上一篇文章继续写,上一篇文章的链接 运用Python语言编写获取Linux基本系统信息(一):获得Linux版本.内核.当前时间 一.随便说说 获取文件系统使用情况的思路和上一篇获取主要系统是 ...
- linux 获取文件系统信息(磁盘信息)
源代码例如以下: #include <stdio.h> #include <stdlib.h> #include <string.h> #include <s ...
- 运用Python语言编写获取Linux基本系统信息(一):获得Linux版本、内核、当前时间
申请博客有一段时间了,然而到现在还一篇没有写过..... 主要因为没有想到需要写些什么,最近在学习Python语言,照着书上看了看最基础的东西,发现根本看不进去,而且光看的话今天看了觉得都理解懂了,过 ...
- 使用 python 收集获取 Linux 系统主机信息
使用 python 代码收集主机的系统信息,主要:主机名称.IP.系统版本.服务器厂商.型号.序列号.CPU信息.内存等系统信息. #!/usr/bin/env python #encoding: u ...
随机推荐
- 使用YII框架的migrate迁移数据库
框架版本:2.0.13 官网手册说明:http://www.yiichina.com/doc/guide/2.0/db-migrations 创建迁移 命令的格式: php yii migrate/c ...
- mysql复杂查询
所谓复杂查询,指涉及多个表.具有嵌套等复杂结构的查询.这里简要介绍典型的几种复杂查询格式. 一.连接查询 连接是区别关系与非关系系统的最重要的标志.通过连接运算符可以实现多个表查询.连接查询主要包括内 ...
- JS文件的写入
1.引入filesaver.js插件: 2.JS: 方法一:var file = new File(["欢迎访问 hangge.com"], "文件导出测试.txt&qu ...
- delphi获取一个窗口的所有子窗口(包括嵌套)
unit Unit1; interface usesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, ...
- js cookies
cookie用於識別用戶,存儲在訪問者的計算機里,當用戶首次使用瀏覽器時,會發送cookie.用戶可以創建和獲取cookie. cookie可以存儲用戶名字.用戶密碼和訪問時間等. document. ...
- 微信小程序的界面下拉刷新
小程序的下拉刷新的值设置:需要设置app.json的window中 "navigationBarTextStyle":true
- query的set能添加多个
- ajax 提交字符串到后台 反序列化
MVC后台 或者 Webapi 都可以使用此方式 前台 @using (Html.BeginForm("Test","Test")) { <input t ...
- 【Luogu4630】【APIO2018】 Duathlon 铁人两项 (圆方树)
Description 给你一张\(~n~\)个点\(~m~\)条边的无向图,求有多少个三元组\(~(x, ~y, ~z)~\)满足存在一条从\(~x~\)到\(~z~\)并且经过\(~y~\)的 ...
- innerHTML、outerHTML、innerText、outerText的区别及兼容性问题
今天看了很多文章关于innerHTML.outerHTML.innerText.outerText的区别,都是很模糊的一个介绍,所以自己总结下这些区别以及一些重点内容.很多文章在描述这些区别的时候,都 ...