七、使用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)相同
- pids以列表的形式返回当前正在运行的进程
>>> psutil.pids()[:5]
3)pid_exists判断给定的pid是否存在
在Linux下,很多程序会将进程的pid保存在一个文本文件中。在Python语言中,如果想判断该进程是否存在或者获取进程的详细信息,可以从文本文件中读入进程的pid,并使用pid_exists判断进程是否存在。如果进程存在,则以进程的pid为参数创建一个Process对象,然后使用该对象获取进程的详细信息,并发送信号给进程。
>>> psutil.pid_exists(1024)
- process_iter 迭代器当前正在运行的进程,需要注意的是,process_iter直接返回Process对象,而pids返回进程的pid列表