Python对Linux系统的操作模块

1、pip安装(pip 是“A tool for installing and managing Python packages.”,也就是说pip是python的软件安装工具)
yum -y install epel-release
yum -y install python-pip
yum -y install python-devel
yum -y install gcc*

2、下载psutil(或使用 pip install psutil 安装)
wget https://pypi.python.org/packages/source/p/psutil/psutil-3.2.2.tar.gz
tar zxvf psutil-3.2.2.tar.gz
cd psutil-3.2.2/
python setup.py install

3、清除缓存
yum clean all

4、python进入python命令行
[[email protected] ~]# python
Python 2.7.5 (default, Sep 15 2016, 22:37:39) 
[GCC 4.8.5 20150623 (Red Hat 4.8.5-4)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
导入psutil
>>> import psutil

5、cpu完整信息(命令top -bn 1 -i -c、vmstat等)
psutil.cpu_times()
scputimes(user=471.21, nice=104.58, system=276.85, idle=28935.3, iowait=391.02, irq=0.0, softirq=16.35, steal=0.0, guest=0.0, guest_nice=0.0
>>> psutil.cpu_times(percpu=True)
[scputimes(user=249.03, nice=61.25, system=156.09, idle=20729.97, iowait=195.16, irq=0.0, softirq=7.25, steal=0.0, guest=0.0, guest_nice=0.0),
 scputimes(user=231.55, nice=43.33, system=140.27, idle=20633.5, iowait=196.1, irq=0.0, softirq=9.24, steal=0.0, guest=0.0, guest_nice=0.0)]
获取单个数据,如用户的cpu时间
>>> psutil.cpu_times().user
471.25
获取cpu物理和逻辑个数,默认logical值为True
>>> psutil.cpu_count()
2
>>> psutil.cpu_count(logical=False)
2

6、内存信息
>>> mem = psutil.virtual_memory()
获取内存完整信息
>>> mem
svmem(total=2082361344L, available=1130319872L, percent=45.7, used=1805217792L, free=277143552L, active=664281088, inactive=797175808, buffers=0L, cached=853176320)
获取内存总数
>>> mem.total
2082361344L
获取空闲存数
>>> mem.free
277143552L
获取swap分区信息
>>> psutil.swap_memory()
sswap(total=2147479552L, used=8335360L, free=2139144192L, percent=0.4, sin=3416064, sout=11354112)

可以换算一下单位
>>> print (mem.total/8/1024)
127874
>>> print (mem.total/1024/1024)

其中percent表示实际已经使用的内存占比,即(2082361344-1130319872)/2082361344*100% 。available表示还可以使用的内存。

7、磁盘信息
磁盘信息主要有两部分,一个是磁盘的利用率,一个是io,他们分别可以通过disk_usage和disk_io_counters方法获取。
如下先获取分区信息,然后看下根分区的使用情况。
获取磁盘完整信息
>>> 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‘)]
获取分区使用情况
>>> psutil.disk_usage(‘/‘)
sdiskusage(total=18746441728, used=5844000768, free=12902440960, percent=31.2)
获取总的IO个数、读写信息
>>> psutil.disk_io_counters()
sdiskio(read_count=146151, write_count=203807, read_bytes=4112552448, write_bytes=11684216320, read_time=2269317, write_time=39627462)
perdisk=Ture获取单个分区IO个数、读写信息
>>> psutil.disk_io_counters(perdisk=True)
{‘fd0‘: sdiskio(read_count=0, write_count=0, read_bytes=0, write_bytes=0, read_time=0, write_time=0),
 ‘sr0‘: sdiskio(read_count=0, write_count=0, read_bytes=0, write_bytes=0, read_time=0, write_time=0), 
 ‘sda2‘: sdiskio(read_count=71699, write_count=82805, read_bytes=2054048768, write_bytes=5806939648, 
 read_time=1124424, write_time=11573392), ‘sda1‘: sdiskio(read_count=1952, write_count=2255, read_bytes=5081600, 
 write_bytes=70337024, read_time=10686, write_time=27267), ‘dm-0‘: sdiskio(read_count=71452, write_count=115975, 
 read_bytes=2048183296, write_bytes=5795585536, read_time=1129014, write_time=25763350),
 ‘dm-1‘: sdiskio(read_count=1048, write_count=2772, read_bytes=5238784, write_bytes=11354112, read_time=5193, write_time=2263453)}
 
8、网络信息
获得网络总的IO信息,默认pernic=False
>>> psutil.net_io_counters()
snetio(bytes_sent=17640593, bytes_recv=837836495, packets_sent=227041, packets_recv=594110, errin=0, errout=0, dropin=0, dropout=0)
pernic=True输出每个网络接口的IO信息
>>> psutil.net_io_counters(pernic=True)
{‘eno16777736‘: snetio(bytes_sent=17641429, bytes_recv=837839462, packets_sent=227046, packets_recv=594142, 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),
 ‘virbr0-nic‘: snetio(bytes_sent=0, bytes_recv=0, packets_sent=0, packets_recv=0, errin=0, errout=0, dropin=0, dropout=0),
 ‘lo‘: snetio(bytes_sent=0, bytes_recv=0, packets_sent=0, packets_recv=0, errin=0, errout=0, dropin=0, dropout=0)}
 
9、其他系统信息
查看当前登录用户
>>> psutil.users()
[suser(name=‘wolf‘, terminal=‘:0‘, host=‘localhost‘, started=1477147392.0),
 suser(name=‘wolf‘, terminal=‘pts/0‘, host=‘localhost‘, started=1477147520.0), 
 suser(name=‘wolf‘, terminal=‘pts/4‘, host=‘192.168.3.26‘, started=1477190016.0), 
 suser(name=‘wolf‘, terminal=‘pts/6‘, host=‘192.168.3.26‘, started=1477190144.0)]
>>> import psutil, datetime
查看时间(linux格式时间戳)
>>> psutil.boot_time()
1477177417.0
linux时间戳转换成自然时间格式
>>> datetime.datetime.fromtimestamp(psutil.boot_time()).strftime("%Y-%m-%d %H:%M:%S")
‘2016-10-23 07:03:37‘

10、系统进程管理
列出所有进程PID
>>> psutil.pids()
[[1, 2, 3, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, ....]
实例化一个process对象,参数为一进程PID
>>> p=psutil.Process(1)
进程名          
>>> p.name()                                 
‘systemd‘
>>> p=psutil.Process(76242)
>>> p.name()
‘pickup‘
进程bin路径
>>> p.exe()
‘/usr/libexec/postfix/pickup‘
进程工种目录绝对路径
>>> p.cwd()
‘/var/spool/postfix‘
进程状态
>>> p.status()
‘sleeping‘
进程创建时间
>>> p.create_time()
1477208086.18
进程uid
>>> p.uids()
puids(real=89, effective=89, saved=89)
进程gid
>>> p.gids()
pgids(real=89, effective=89, saved=89)
进程cpu时间信息,包括user、system两个cpu时间
>>> p.cpu_times()
pcputimes(user=0.02, system=0.02)
get进程CPU亲和度,如果设置进程CPU亲和度,将CPU号作为时间参数即可
>>> p.cpu_affinity()
[0, 1]
进程内存利用率
>>> p.memory_percent()
0.19276577581340273
进程内存css,vms信息
>>> p.memory_info()
pmem(rss=4014080, vms=95567872)
进程IO信息,包括读写IO数及字节数
>>> p.io_counters()
pio(read_count=149, write_count=160, read_bytes=0, write_bytes=0)
返回打开进程socker的namedutples列表,包含fs、family、laddr等信息
>>> p.connections()
[]
进程开启的线程数
>>> p.num_threads()
1

popen类作用:获取用户启动的应用程序进程信息,以便跟踪程序进程的运行状态。
>>> from subprocess import PIPE
通过psutil的Popen方法启动的应用程序,可以跟踪该程序的所有相关信息
>>> p = psutil.Popen(["/usr/bin/python","-c","print(‘hello‘)"],stdout=PIPE)
>>> p.name()
‘python‘
>>> p.username()
‘root‘
>>> p.communicate()
(‘hello\n‘, None)
>>> psutil.cpu_times()
scputimes(user=499.47, nice=104.58, system=335.63, idle=69964.99, iowait=391.57, irq=0.0, softirq=16.75, steal=0.0, guest=0.0, guest_nice=0.0)

时间: 2024-11-13 10:48:05

Python对Linux系统的操作模块的相关文章

【Python】linux系统more基本命令python源码分享

此python源码是linux系统more基本命令的实现.实现linux中more的基本功能,当more后加一个文件名参数时候,分屏显示按空格换页,按回车换行',在左下角显示百分比:以处理管道参数的输入,处理选项+num:从指定行开始显示,+/string :查找字符串,从指定字符串之后开始显示 运行环境:安装有PYTHON的linux系统 调用示例:more.py [+num ] [+/pattern] filenamecommand|./more.py [+num ] [+/pattern]

Linux 系统添加操作记录--命令审计功能

**Linux 系统添加操作记录审计 1.mkdir -p /usr/local/domob/records/ chmod 777 /usr/local/domob/records/ chmod +t /usr/local/domob/records/ 2.vi /etc/profile 在最后添加下面的代码 if [ ! -d /usr/local/domob/records/${LOGNAME} ] then mkdir -p /usr/local/domob/records/${LOGNA

python paramiko模块SSH自动登录linux系统进行操作

1). Linux系统首先要开启SSH服务:service ssh status 如果没安装的话,则要:apt-get install openssh-server service ssh restart 2). pip install paramiko example 1: import paramikossh = paramiko.SSHClient()ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())ssh.connect('

嵌入式linux驱动开发之给你的linux系统添加温度传感器模块

忙了几天,终于可以让ds18b20在自己的开发板的linux系统上跑了!虽然ds18b20不是什么新鲜玩意,但是想想知己可以给linux系统添加模块了还是有点小鸡冻呢! 虽然说现在硬件的资源非常丰富而且剩余很多,可以用软件资源来代替硬件资源,比如说可以用视频编解码软件取代硬件来工作.但有很多模块需要实时的采集数据这都是软件永远无法代替的,而且随着互联网的进一步发展,智能化也是一个必然的趋势,因此大量的传感器和控制芯片将被应用到生产生活中,所以个人觉得驱动开发还是个不错的方向.同时,作为学习者,再

通过Python获取Linux系统所有分区和分区已使用空间占总空间的百分比

#!/usr/bin/env python # -*- coding: utf-8 -*- # 作者:昨夜星辰 # 脚本作用:获取系统所有分区和分区已使用空间占总空间的百分比. # 注意事项:该脚本只能在Linux系统下执行,适用于Python 2. import os import re # 获取系统所有分区 def getAllPartitionOfSystem():     result = []     f = os.popen('mount')     text = f.readlin

Linux系统挂载操作mount详解

在Linux系统中,文件系统不挂载是无法使用的.挂载,即是让文件系统在操作系统中可用.在Linux中使用mount命令来挂载文件系统,有永久性挂载和临时性挂载两种挂载方式. 1. 永久性挂载: 修改配置文件/etc/fstab,将需要挂载的文件系统写入这个配置文件中,再使用命令 mount -a 让配置信息生效,挂载的文件即可使用. 下图为配置文件/etc/fstab的内容,圈出来的一行便是我们需要加上去的信息. 挂载后,可使用mount查看相关信息,使用命令df -h 查看可用分区. 2. 临

python在linux系统中的使用

python在linux中已经默认安装,但版本较低,比如在Centos6.3上默认为Python2.6.6 这里我重新安装Python3.4.4,从官网下载Python3.4.4 解压文件,tar zxvf Python-3.4.4.tgz 编译安装 ./configure make makeinstall python2.6的路径为/usr/bin/python python3.4的路径为/usr/local/bin/python3 输入python3,执行新的Python版本 执行Pytho

python基础——Linux系统下的文件目录结构

单用户操作系统和多用户操作系统 单用户操作系统:指一台计算机在同一时间只能由一个用户使用,一个用户独自享用系统的全部硬件和软件资源. 多用户操作系统:指一台计算机在同一时间可以由多个用户使用,多个用户共同享用系统的全部硬件和软件资源. UNIX和Linux的涉及初衷就是多用户操作系统. 在Linux中是没有盘符的概念,只有一个根目录/,所有的目录都是在它的下面. Linux目录速查表 /:根目录,一般根目录下只存放目录,在 linux 下有且只有一个根目录,所有的东西都是从这里开始 当在终端里输

请不要重复犯我在学习Python和Linux系统上的错误

本人已经在运维行业工作了将近十年,我最早接触Linux是在大二的样子,那时候只追求易懂,所以就选择了Ubuntu作为学习.使用的对象,它简单.易用.好操作.界面绚丽,对于想接触Linux的新手来说是非常不错的.后来因为个人的知识有限,玩不转Linux的种种配置.各种插件以及软件缺失,加之没有持之以恒的坚持下去,使用了一段时间后感觉Bug多.没游戏.办公写文档也不方便,很多软件需要现学,最终希望用大学时光学习Linux的愿望夭折了. 后来一段时间里,自己接触了Python语言,Python语言让我