系统信息

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系统信息的更多相关文章

  1. 使用 python 获取 Linux 系统信息(通过dmidecode命令)

    通过 dmidecode 命令可以获取到 Linux 系统的包括 BIOS. CPU.内存等系统的硬件信息,这里使用 python 代码来通过调用 dmidecode 命令来获取 Linux 必要的系 ...

  2. 【转】 使用 Python 获取 Linux 系统信息

    在本文中,我们将会探索使用Python编程语言工具来检索Linux系统各种信息.走你. 哪个Python版本? 当我提及Python,所指的就是CPython 2(准确的是2.7).我会显式提醒那些相 ...

  3. 使用 Python 获取 Linux 系统信息

    探索platform模块 platform模块在标准库中,它有很多运行我们获得众多系统信息的函数.让我们运行Python解释器来探索它们中的一些函数,那就从platform.uname()函数开始吧: ...

  4. Python脚本获取Linux系统信息

    # -*- coding:utf-8 -*- import os import subprocess import re import hashlib #对字典取子集 def sub_dict(for ...

  5. 运用Python语言编写获取Linux基本系统信息(三):Python与数据库编程,把获取的信息存入数据库

    运用Python语言编写获取Linux基本系统信息(三):Python与数据库编程 有关前两篇的链接: 运用Python语言编写获取Linux基本系统信息(一):获得Linux版本.内核.当前时间 运 ...

  6. 运用Python语言编写获取Linux基本系统信息(二):文件系统使用情况获取

    本文跟着上一篇文章继续写,上一篇文章的链接 运用Python语言编写获取Linux基本系统信息(一):获得Linux版本.内核.当前时间 一.随便说说 获取文件系统使用情况的思路和上一篇获取主要系统是 ...

  7. linux 获取文件系统信息(磁盘信息)

    源代码例如以下: #include <stdio.h> #include <stdlib.h> #include <string.h> #include <s ...

  8. 运用Python语言编写获取Linux基本系统信息(一):获得Linux版本、内核、当前时间

    申请博客有一段时间了,然而到现在还一篇没有写过..... 主要因为没有想到需要写些什么,最近在学习Python语言,照着书上看了看最基础的东西,发现根本看不进去,而且光看的话今天看了觉得都理解懂了,过 ...

  9. 使用 python 收集获取 Linux 系统主机信息

    使用 python 代码收集主机的系统信息,主要:主机名称.IP.系统版本.服务器厂商.型号.序列号.CPU信息.内存等系统信息. #!/usr/bin/env python #encoding: u ...

随机推荐

  1. 小学生四则运算APP核心代码公布

    Mainactivity类: package com.example.XXSCYS; import java.io.ByteArrayOutputStream; import java.io.File ...

  2. 2017 浙大校赛 [Cloned]

    https://vjudge.net/contest/285902#overview A.Marjar Cola #include <bits/stdc++.h> using namesp ...

  3. Minify or format javascript file by web or notepad++

    Notepad++ plugin manager install 'JSTOOL' http://tool.oschina.net/codeformat/js https://www.cnblogs. ...

  4. Axios插件和loading的实现

    axios插件就是一个ajax插件 axios具有ajax的所有方法如 get post delete put等等的方法 使用时只需要引入即可 如import Axios form 'axios' 不 ...

  5. [转帖]Marvell兵败中国4G 创始人去职未来几何

    Marvell兵败中国4G 创始人去职未来几何 (2016-04-12 09:08:30) 2016年的帖子. http://blog.sina.com.cn/s/blog_1542ef86c0102 ...

  6. CentOS virt-manager 安装Win2008r2的一种GUI方法

    1. 必须在物理机上面安装CentOS机器. 安装方法上一个blog里面简单写过. 注意一点,重复安装时 总是提示no disk found 我的解决办法使用 windows 安装盘 格式化了下磁盘重 ...

  7. CSS 范围选择器(自编)

    选择第一个到第六个li元素ul li:nth-child(n+3):not(:nth-child(n+6)){} 选择第二个到最后一个ul li:nth-child(2)~li{} 选择除了第一个和最 ...

  8. ionic创建项目失败

    × Downloading and extracting blank starter - failed![ERROR] Network connectivity error occurred, are ...

  9. python 协程库gevent学习--gevent数据结构及实战(三)

    gevent学习系列第三章,前面两章分析了大量常用几个函数的源码以及实现原理.这一章重点偏向实战了,按照官方给出的gevent学习指南,我将依次分析官方给出的7个数据结构.以及给出几个相应使用他们的例 ...

  10. BZOJ5343[Ctsc2018]混合果汁——主席树+二分答案

    题目链接: CTSC2018混合果汁 显然如果美味度高的合法那么美味度低的一定合法,因为美味度低的可选方案包含美味度高的可选方案. 那么我们二分一个美味度作为答案然后考虑如何验证? 选择时显然要贪心的 ...