Python模块也可以是Linux运维神器

科技   科技   2024-09-20 18:01   河北  

     你好,我是李逸皓,我的梦想是:运维,永不背锅!

放个链接,万一有人关注呢

优质文章推荐

↓ ↓ ↓ ↓ 

开启Linux新时代

冷门但好用的Linux网络工具

yum源已成历史,Linux又一次蜕变

又一款Linux发行版,Kali Linux迎来劲敌

开源!最骚的Linux对象存储



`psutil`(**Process and System Utilities**)是一个跨平台的Python库,提供了获取系统和进程信息的API接口。它可以方便地获取CPU、内存、磁盘、网络等系统资源的使用情况,还可以操作系统中的进程。因此,它被广泛用于系统监控、性能分析和资源管理等场景。
1. 安装`psutil`模块
在开始使用`psutil`之前,需要先进行安装。`psutil`可以通过`pip`轻松安装:
pip install psutil
2. 主要功能概述
`psutil`模块可以用于以下几大方面:
- 获取系统信息:包括CPU、内存、磁盘、网络等资源的使用情况。
- 管理进程:可以查看和操作系统中运行的进程。
- 系统监控:`psutil`可以用来编写系统监控程序,自动获取系统资源使用情况,并做出相应处理。
- 跨平台支持:支持Windows、Linux、macOS等多个操作系统。
3. `psutil`常用方法及其应用
a. CPU信息
`psutil`提供了丰富的API来获取CPU的使用情况和统计信息:
- 获取CPU的利用率:
  import psutil  cpu_percent = psutil.cpu_percent(interval=1)  print(f"CPU使用率: {cpu_percent}%")
  `cpu_percent()` 方法可以返回CPU的使用率,通过设置`interval`参数,可以指定每隔多少秒采集一次数据。
- 获取CPU核心信息:
  cpu_count = psutil.cpu_count(logical=True)  # 获取逻辑核心数  print(f"CPU逻辑核心数: {cpu_count}")
  `cpu_count()` 方法返回CPU的核心数量,`logical=True`表示返回逻辑核心数。
b. 内存信息
`psutil`允许轻松获取系统的内存使用情况:
- 虚拟内存使用情况:
  memory_info = psutil.virtual_memory()  print(f"总内存: {memory_info.total / (1024 ** 3):.2f} GB")  print(f"已用内存: {memory_info.used / (1024 ** 3):.2f} GB")  print(f"可用内存: {memory_info.available / (1024 ** 3):.2f} GB")  print(f"内存使用率: {memory_info.percent}%")
  通过`virtual_memory()`方法,用户可以获取总内存、已用内存、可用内存等详细的内存信息。
- 交换内存(Swap Memory)信息:
  swap_info = psutil.swap_memory()  print(f"交换内存总量: {swap_info.total / (1024 ** 3):.2f} GB")  print(f"已用交换内存: {swap_info.used / (1024 ** 3):.2f} GB")  print(f"交换内存使用率: {swap_info.percent}%")
  `swap_memory()`方法返回交换内存的详细信息,包括总量和使用率。
c. 磁盘信息
磁盘使用情况是系统资源监控的重要部分,`psutil`提供了查看磁盘使用情况和分区信息的功能:
- 获取磁盘使用情况:
disk_usage = psutil.disk_usage('/')  print(f"磁盘总容量: {disk_usage.total / (1024 ** 3):.2f} GB")  print(f"已用磁盘: {disk_usage.used / (1024 ** 3):.2f} GB")  print(f"剩余磁盘: {disk_usage.free / (1024 ** 3):.2f} GB")  print(f"磁盘使用率: {disk_usage.percent}%")
  `disk_usage()` 方法用于获取磁盘的使用率,传入参数`'/'`表示根目录的磁盘使用情况。
- 获取磁盘分区信息:
 
 partitions = psutil.disk_partitions()  for partition in partitions:      print(f"设备: {partition.device}")      print(f"挂载点: {partition.mountpoint}")      print(f"文件系统类型: {partition.fstype}")
  `disk_partitions()` 方法返回系统中所有磁盘分区的详细信息,包括分区设备、挂载点和文件系统类型。
d. 网络信息
`psutil`还能获取网络接口的流量和连接状态等信息:
- 网络接口流量:
 net_io = psutil.net_io_counters()  print(f"发送字节数: {net_io.bytes_sent}")  print(f"接收字节数: {net_io.bytes_recv}")
  `net_io_counters()` 方法返回网络接口的流量统计,包括发送和接收的字节数。
- 网络连接状态:
  connections = psutil.net_connections(kind='inet')  for conn in connections:      print(f"协议: {conn.type}, 本地地址: {conn.laddr}, 远程地址: {conn.raddr}")
  `net_connections()` 方法可以获取当前系统的所有网络连接,`kind='inet'`表示仅获取IPv4和IPv6连接。
e. 进程管理
除了系统资源监控,`psutil`还可以操作进程,查看进程信息,甚至终止进程。
- 获取当前运行的进程列表:
  process_list = psutil.pids()  print(f"当前运行的进程ID列表: {process_list}")
  `pids()` 方法返回当前所有正在运行的进程ID列表。
- 查看单个进程的信息:
  p = psutil.Process(1234)  # 假设进程ID为1234  print(f"进程名: {p.name()}")  print(f"进程状态: {p.status()}")  print(f"进程CPU时间: {p.cpu_times()}")  print(f"进程内存信息: {p.memory_info()}")
  `Process(pid)` 返回指定进程的详细信息,可以查询该进程的状态、CPU和内存使用情况等。
- 终止进程:
  p.terminate()  print(f"进程{p.pid} 已终止")
  `terminate()` 方法可以终止指定进程。
4. 实际应用场景
`psutil`在以下场景中有广泛应用:
- 系统监控工具:通过`psutil`可以轻松编写一个监控工具,实时获取系统的CPU、内存、磁盘、网络等资源的使用情况。
- 进程管理与监控:可以编写脚本来监控特定进程的运行状态,判断进程是否异常,并在必要时采取措施(如重启或终止进程)。
- 服务器健康检查:`psutil`可以用来定期检查服务器的健康状态,判断是否有过载或资源不足的问题。
- 资源分配优化:通过监控系统资源的使用情况,可以调整系统或应用程序的资源分配,确保系统的高效运行。
`psutil`模块为Python程序员提供了一个功能强大的工具,用于访问和管理系统资源。它不仅支持获取CPU、内存、磁盘、网络等信息,还可以进行进程管理。在系统监控、服务器运维、性能调优等方面,`psutil`是一个非常实用的库。通过简洁的API设计和跨平台的支持,它成为了Python系统编程领域不可或缺的利器。

单击进入:粉丝进群传送门

欢迎新的小伙伴加入!在这里,我们鼓励大家积极参与群内讨论和交流,分享自己的见解和经验,一起学习和成长。同时,也欢迎大家提出问题和建议,让我们不断改进和完善这个平台。

   点个在看,无需赞赏!

运维book思议
李小白,一个北漂的运维。希望能够通过本公众号与业内各位大神交流技术问题。
 最新文章