Python-自动化运维-psutil模块

Python-自动化运维-psutil模块

  • 第二部分-python常用模块
    • [1 系统基础信息-psutil 模块](#1 系统基础信息-psutil 模块)
      • [1-1 获取内存信息](#1-1 获取内存信息)
      • [1-2 获取CPU信息](#1-2 获取CPU信息)
      • [1-3 获取磁盘信息](#1-3 获取磁盘信息)
      • [1-4 获取网络信息](#1-4 获取网络信息)
      • [1-5 获取其他信息](#1-5 获取其他信息)
      • [1-6 获取进程信息](#1-6 获取进程信息)
      • [1-7 popen类的使用](#1-7 popen类的使用)

第二部分-python常用模块

1 系统基础信息-psutil 模块

复制代码
主要获取两部分信息:
	系统进程
	获取系统利用率-内存、CPU、磁盘、网络等

常见命令:

进程相关:ps、top、lsof

网络相关:netstat、ifconfig

用户相关:who

磁盘相关:df

内存相关:free

IO相关:ionice、iostat、iotop

运行时相关:uptime

终端相关:tty

模块安装

pip install psutil

导包

import psutil

1-1 获取内存信息

使用方法:

获取内存的基本信息

psutil.virtual_memory()

获取交换内存的基本信息

psutil.swap_memory()

python 复制代码
# 引入模块
import psutil

# 1 获取内存的基本信息
mem_info = psutil.virtual_memory()
# 1-1 获取全部内存信息
print("内存的基本信息:{}".format(mem_info))
# 1-2获取部分内存信息
mem_total = mem_info.total
print("内存的总量:{}".format(mem_total))
mem_used = mem_info.used
print("内存的使用:{}".format(mem_used))
mem_free = mem_info.free
print("内存的空闲:{}".format(mem_free))
# 2 获取swap内存的基本信息
swap_info = psutil.swap_memory()
# 2-1 获取全部swap内存信息
print("swap内存的基本信息:{}".format(swap_info))

1-2 获取CPU信息

python 复制代码
import psutil
cpu_info = psutil.cpu_times()
print("CPU的基本信息:{}".format(cpu_info))
cpu_user = cpu_info.user
print("CPU的用户进程占比:{}%".format(cpu_user))
cpu_system = cpu_info.system
print("CPU的系统进程占比:{}%".format(cpu_system))
cpu_iowait = cpu_info.iowait
print("CPU的IO等待占比:{}%".format(cpu_iowait))

1-3 获取磁盘信息

python 复制代码
# 引入模块
import psutil
# 获取磁盘信息
# 1 磁盘分区的使用
disk_info = psutil.disk_partitions()
print("所有分区的详情:{}".format(disk_info))

# 1-1 根分区的部分信息
disk_root = psutil.disk_usage('/')
print("根分区的信息:{}".format(disk_root))
# 2 磁盘挂载点信息
# psutil.disk_usage()
# 3 磁盘IO相关信息
disk_per = psutil.disk_io_counters(perdisk=True)
print("每个分区的IO信息:{}".format(disk_per))
# 4 获取具体分区详情

1-4 获取网络信息

python 复制代码
# 引入模块
import psutil
# 获取网络数据传输信息
net_info = psutil.net_io_counters()
print("网卡的数据传输信息:{}".format(net_info))

# 1-2 获取部分信息
network_recv = net_info.bytes_recv
print("网卡接收的数据信息:{}".format(network_recv))
network_send = net_info.bytes_sent
print("网卡发送的数据信息:{}".format(network_send))
network_packet_sent = net_info.packets_sent
print("网卡的发送数据包信息:{}".format(network_packet_sent))
network_packet_recv = net_info.packets_recv
print("网卡的接收数据包信息:{}".format(network_packet_recv))

# 2 获取其他信息
network_addrs = psutil.net_if_addrs()
print("网卡的地址信息:{}".format(network_addrs))
network_stats = psutil.net_if_stats()
print("网卡的状态信息:{}".format(network_stats))
network_conn = psutil.net_connections()
print("网卡的链接信息:{}".format(network_conn))

1-5 获取其他信息

python 复制代码
# 引入模块
import psutil
import datetime

# 获取其他系统信息
# 1-1 获取用户信息
user_info = psutil.users()
print("当前登录系统的用户信息:{}".format(user_info))

# 1-2 获取开机时间
up_time = psutil.boot_time()
print("开机时间:{}".format(up_time))

# 1-3 加工linux的时间戳
up_time_1 = datetime.datetime.fromtimestamp(up_time).strftime("%Y-%m-%d %H:%M:%S")
print("开机时间加工后:{}".format(up_time_1))

1-6 获取进程信息

python 复制代码
# 引入模块
import datetime

import psutil
import time

# 获取进程信息
# 1-1 获取进程PID
pid_list = psutil.pids()
print("进程IP:{}".format(pid_list))

# 1-2 判断指定进程是否存在
pid_num = 1219
result = psutil.pid_exists(pid_num)
print("{} 进程是否是运行状态:{}".format(pid_num,result))

# 1-3 获取指定进程相关的信息
pid_info = psutil.Process(pid_num)
print("进程信息:{}".format(pid_info))

# 1-4 获取指定进程的部分信息
pid_name = pid_info.name()
print("进程的名称是:{}".format(pid_name))
pid_stat = pid_info.status()
print("进程的状态是:{}".format(pid_stat))
pid_uptime = pid_info.create_time()
pid_uptime_fromat = datetime.datetime.fromtimestamp(pid_uptime).strftime('%Y-%m-%d %H:%M:%S')
print("进程的创建时间是:{}".format(pid_uptime_fromat))
pid_exe = pid_info.exe()
print("进程的bin路径:{}".format(pid_exe))
pid_cwd = pid_info.cwd()
print("进程的绝对路径:{}".format(pid_cwd))
pid_cpu_time = pid_info.cpu_times()
print("进程的CPU时间:{}".format(pid_cpu_time))

1-7 popen类的使用

python 复制代码
# 引入模块
import psutil
from subprocess import PIPE
# 创建用户程序
# psutil.Popen(["执行命令","参数","内容"],stdout=信息接收器)
my_process = psutil.Popen(["/usr/bin/python3","-c","print('hello world')"],stdout=PIPE)
print("用户进程的名称:{}".format(my_process.name()))
print("用户进程的启动用户:{}".format(my_process.username()))
print("用户进程的输出信息:{}".format(my_process.communicate()))
相关推荐
java1234_小锋12 分钟前
TensorFlow2 Python深度学习 - TensorFlow2框架入门 - 神经网络基础原理
python·深度学习·tensorflow·tensorflow2
JJJJ_iii13 分钟前
【深度学习03】神经网络基本骨架、卷积、池化、非线性激活、线性层、搭建网络
网络·人工智能·pytorch·笔记·python·深度学习·神经网络
玉石观沧海18 分钟前
高压变频器故障代码解析F67 F68
运维·经验分享·笔记·分布式·深度学习
JJJJ_iii22 分钟前
【深度学习05】PyTorch:完整的模型训练套路
人工智能·pytorch·python·深度学习
程序员小远1 小时前
常用的测试用例
自动化测试·软件测试·python·功能测试·测试工具·职场和发展·测试用例
IT学长编程1 小时前
计算机毕业设计 基于EChants的海洋气象数据可视化平台设计与实现 Python 大数据毕业设计 Hadoop毕业设计选题【附源码+文档报告+安装调试】
大数据·hadoop·python·毕业设计·课程设计·毕业论文·海洋气象数据可视化平台
辣椒http_出海辣椒2 小时前
Python 数据抓取实战:从基础到反爬策略的完整指南
python
荼蘼2 小时前
使用 Flask 实现本机 PyTorch 模型部署:从服务端搭建到客户端调用
人工智能·pytorch·python
(时光煮雨)2 小时前
【Python进阶】Python爬虫-Selenium
爬虫·python·selenium
要做朋鱼燕2 小时前
【AES加密专题】1.AES的原理详解和加密过程
运维·网络·密码学·c·加密·aes·嵌入式工具