如何创建一个看门狗脚本来暂停和继续进程,以防其他占用大量 CPU 的进程正在运行?

如何创建一个看门狗脚本来暂停和继续进程,以防其他占用大量 CPU 的进程正在运行?

我有一个非常大的测试设置,在我大学的许多团体使用的服务器上运行了几天。

我想通过 pid 暂停进程(以及进程执行的进程(如果当前有进程正在运行),并在 cpu 密集型进程停止时继续。当 cpu 密集型进程停止时,我会认为 cpu 密集型进程是相关的至少一个核心以 100% 运行超过 15 秒。

(我不太确定如何解释“top”输出,但经常会出现 cpu 使用率为 2300% 的进程,我将其解释为 23 个核心以 100% 运行,或 22 个核心以 (100%-x%)*22=2300% 运行ETC。)

要暂停进程,我必须在两个 bash 命令之间进行选择:

kill -TSTP [pid]

kill -STOP [pid]

要继续该过程,我将使用:

kill -CONT [pid]

自从我的python 脚本在测试设置中执行确实由其执行的进程的运行时测量我想问一下有没有办法仅测量进程运行时的时间? (我还通过我的 python 脚本执行的进程的内置函数来测量精确的计算时间,但由于一些可疑的结果(绝对时间是有问题的,相对时间似乎是正确的)我也会有一个不太精确但至少可以从外部进行一些可用的时间测量(python 脚本))

概括

  1. 我如何设计一个脚本来找到这些进程并做出相应的反应? (服务器上没有根用户,但我可以查看所有执行的进程并处理我自己的进程)
  2. 如何对这些进程进行精确的时间测量(+/- 10 秒),不包括进程暂停的时间?

相关内容