gpt4 book ai didi

python - 如何在 linux 上的 python 中使用 %cpu 在给定时间内杀死特定进程?

转载 作者:IT王子 更新时间:2023-10-29 01:27:03 30 4
gpt4 key购买 nike

我在 linux 上的 python 中有这个脚本,它在本地部署 vnc,在这个 vnc 屏幕上做一些图形工作,然后终止 vnc。有时在作业完成后,名为 gnome-panel 的进程挂起并保持 100% 的 CPU 使用率。然后我需要通过 putty 登录并手动终止所有这些进程(有时实际上有很多)。我想在我的 python 脚本完成它的工作时添加几行,这不仅会杀死 vnc(它已经这样做了),而且如果它在给定时间段内消耗一定数量的 cpu,也会杀死 gnome-panel。我不能简单地杀死所有 gnome-panels,因为其中一些工作正常(我同时部署了 4 个 vnc 屏幕)。

所以我在 python 中需要这个条件:

如果进程名称是 gnome-panel 并且消耗超过 80% 的 cpu 并且运行超过 1 分钟,则终止进程 id

谢谢!

最佳答案

您可以使用 psutil库来获取进程的 cpu 百分比并最终杀死它们。该库可在 32 位和 64 位 Linux、Windows、Solaris、FreeBSD 和 OS X 上使用 Python 2.4 到 3.3(和 PyPy)。

以下(未经测试的)代码应该可以满足您的要求:

gnome_panel_procs = []
for process in psutil.process_iter():
# I assume the gnome-panel processes correctly set their name
# eventually you could use process.cmdline instead
if process.name == 'gnome-panel':
gnome_panel_procs.append(process)

for proc in gnome_panel_procs:
for _ in range(60):
# check cpu percentage over 1 second
if proc.get_cpu_percent(1) < 80 or not proc.is_running():
# less than 80% of cpu or process terminated
break
else:
# process used 80% of cpu for over 1 minute
proc.kill()

注意:调用 is_running() 可以防止 pid 重用问题,这可能发生在其他提出的解决方案中(即使发生的可能性很小)。


如果你想检查进程是否在一分钟前启动,并且此时使用超过 80% 的 CPU,那么可以使用更简单的方法:

import time
import psutil

for proc in psutil.process_iter():
if proc.name == 'gnome-panel' and time.time() - proc.create_time > 1:
if proc.get_cpu_percent() > 80:
proc.kill()

这将杀死任何 gnome-panel 进程,即使它在最后一分钟内没有使用太多 CPU,但只是在最后几秒内。

关于python - 如何在 linux 上的 python 中使用 %cpu 在给定时间内杀死特定进程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18460147/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com