Linux ps -aux
command wrapper by python, 用 Python 对命令 ps -aux
进行简单的封装。
异常类,当文件、进程等找不到时会抛出该异常
异常类,当电泳 Shell 命令出错,或者输出结果不符合预期时会抛出该异常
进程类,将 ps -aux
输出的每一列作为进程对象的属性。进程对象的方法如下:
更新进程信息。该方法会在初始化对象时默认被调用一次。由于进程的运行信息是动态变化用,可以用该方法实时更新进程的信息。
杀死进程。该方法持续向进程发送 SIGTERM 信号,直到进程被关闭。
将进程信息转化为 dict。该方法仅仅为了某些场合的方便,一般情况不建议调用,因为 Python 的字典是弱引用,大量的调用该方法可能会出现内存泄露。
获取所有进程信息,返回一个迭代器。该方法在调用时先捕获该时刻 ps -aux
列出的所有进程的 pid,然后再迭代这些进程的信息。
调用该函数时需要注意:
由于调用 processes() 与通过迭代器迭代到一个进程的信息之间存在一定的时间间隔,所以你获得的信息是迭代时的实时信息,而不是调用 processes() 时的信息。因此,该方法存在这样的一些缺陷:在调用 processes() 时捕获到的进程,在迭代时获取不到该进程的信息,因为该进程可能已经退出;无法捕获到迭代过程中新产生的进程。
实际上我认为该方法的应用场景不多,也不建议使用该方法。我们大多数情况下只需要获取某一个进程的信息。
返回系统总的内存占用百分比。通过读取 /proc/meminfo
文件获取,计算公式为:
(MemTotal - MemFree - Buffers - Cached)/MemTotal * 100
返回 CPU 总的使用率百分比。通过读取 /proc/stat
获取,计算公式为:
total_cputime = total_cputime_2 - total_cputime_1
idle_cputime = idle_cputime_2 - idle_cputime_1
percent = ((total_cputime - idle_cputime) / total_cputime) * 100
即对总 cpu 时间和空闲 cpu 时间进程分段采样(采样的时间间隔为 0.1 秒),然后再求差值。
注: 所有接口仅在 Ubuntu 环境下测试通过。
ps -aux
命令说明该命令用于列出系统中所有的进程。-a
表示列出所有进程,不区分用户;-u
表示以进程属主为主的格式来显示程序状况;-x
表示不去分前台还是后台进程。
Linux 上的进程包含 5 种状态:
ps
工具对应 5 种状态的状态码(在 stat 列显示):
ps
工具还有其他的进程状态码:
ps -aux
命令列出进程的各列的含义如下
利用 pps 模块写了一个简单的示例,在 example 目录中,即 watchpmc.py。该示例监控指定进程的内存和 CPU 占用,当进程的内存占用超出指定阀值并且总的内存和 CPU 占用超过 90% 时就杀掉该进程。
v0.1: 2016-07-09
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )