系统信息

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. linux及安全第八周总结

    进程的调度时机与进程的切换 操作系统原理中介绍了大量进程调度算法,这些算法从实现的角度看仅仅是从运行队列中选择一个新进程,选择的过程中运用了不同的策略而已. 对于理解操作系统的工作机制,反而是进程的调 ...

  2. Python 中的字符串(str)、字典(dict)详解及操作方法

    一.字符串 在python中字符串是一种重要数据类型.其他数据类型分别为: 数字-number -------- int.long.float.complex这几种 字符串-string ------ ...

  3. C/C++关键字 new/delete和malloc/free

    基本上new/delete来自于C++,作为对对象的创建.因此在使用new创建对象时候new会调用对象的构造函数,同样delete会调用对象的析构函数释放对象.而malloc/free操作的是直接的内 ...

  4. [转帖]IIS内虚拟站点配置信息说明

    web.config配置详细说明 https://www.cnblogs.com/zhangxiaolei521/p/5600607.html 原作者总结的很详细 但是没有完全的看完 自己对IIS 的 ...

  5. Linux 文件系统概览

    本文导航 -定义07% -文件系统的基本功能12% -目录结构26% -Linux 统一目录结构50% -文件系统类型74% -挂载81% -结论90% -下个月92%   本文旨在高屋建瓴地来讨论 ...

  6. pandas创建一个日期

    1.通过指定周期和频率,使用date.range()函数就可以创建日期序列. 默认情况下,范围的频率是天. 2.bdate_range()用来表示商业日期范围,不同于date_range(),它不包括 ...

  7. linux 单引号,双引号,反引号的小总结。

    还是老惯例说说事情的起因,由于最开始对linux下面的各种引号并不是特别敏感,导致有一天我在添加数据库字段的时候出现的错误,当时出现错误的原因是我在最外层使用了单引号进行包裹,然后一句话里面需要转意的 ...

  8. React Native & Web APP

    React Native Build native mobile apps using JavaScript and React https://facebook.github.io/react-na ...

  9. QueryParser 是对一段话进行分词的 用于收集客户端发来的

  10. python 操作系统模块 -- OS

    os,语义为操作系统,模块提供了访问多个操作系统服务的功能,可以处理文件和目录这些我们日常手动需要做的操作.os和它的子模块os.path还包括一些用于检查.构造.删除目录和文件的函数,以及一些处理路 ...