七、使用psutil开源库监控Linux进程

Psutil 提供的功能函数一般是用来获取系统信息,尤其是与监控相关信息,此外psutil还提供了其他与进程管理相关的函数,包含获取进程列表,判断进程是否存在以及进程管理的类封装;

1)Proccess类对进程的封装,可以使用该类的方法获取进程的详细信息,或者给进程发送信号

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import psutil
init_process = psutil.Process(1)
print(init_process)

Proccess类包含了很多方法来获取进程的详细信息:

  • name: 获取进程名字
  • cmdline: 获取启动进程的命令行的参数
  • create_time: 获取进程的创建时间
  • num_fds: 进程打开的文件个数
  • num_threads: 进程的子进程的个数
  • is_running: 判断进程是否正在运行
  • send_signal: 给进程发送信号,其作用与os.kill(pid,sig)相同
  • kill: 发送SIGKILL信号结束进程,其作用与os.kill(pid,signal.SIGKILL)相同
  • terminate: 发送SIGTERM信号结束进程,其作用与os.kill(pid,signal,SIGTERM)相同
  1. pids以列表的形式返回当前正在运行的进程
>>> psutil.pids()[:5]

3)pid_exists判断给定的pid是否存在

在Linux下,很多程序会将进程的pid保存在一个文本文件中。在Python语言中,如果想判断该进程是否存在或者获取进程的详细信息,可以从文本文件中读入进程的pid,并使用pid_exists判断进程是否存在。如果进程存在,则以进程的pid为参数创建一个Process对象,然后使用该对象获取进程的详细信息,并发送信号给进程。

>>> psutil.pid_exists(1024)
  1. process_iter 迭代器当前正在运行的进程,需要注意的是,process_iter直接返回Process对象,而pids返回进程的pid列表
posted @ 2018-06-10 14:56  云原生运维社区  阅读(963)  评论(0编辑  收藏  举报