如何在没有 root 访问权限的情况下在服务器上杀死其他人的 Python 进程?

Posted

技术标签:

【中文标题】如何在没有 root 访问权限的情况下在服务器上杀死其他人的 Python 进程?【英文标题】:How can I kill someone else's Python processes on a server without root access? 【发布时间】:2022-01-23 14:21:13 【问题描述】:

我今天在下班时间工作,发现有人在共享计算机上使用了不合理数量的内存和 GPU 内存,而他们在休假时离开的进程仍在运行。我知道他们备份了他们的结果,并且脚本可以随时恢复,所以我想杀死它以运行我自己的东西。

服务器运行 CentOS 版本 7.9.2009。

如果重要的话,我要杀死的脚本正在运行启用了检查点的 PyTorch 和 TensorFlow 训练脚本。

我尝试的一种方法涉及分配如此多的内存,以至于其他进程只需正常运行就会得到 OOM,但它并不十分成功。

l = []
n = int(1e5)
import time
while n > 0:
    try:
        l.append(' ' * n)
    except:
        n //= 8
        time.sleep(10)

它会很快填满内存并进行交换,但不会在那里停留很长时间。问题似乎在于,不是 Python 引发异常并触发 except 子句,Linux 会终止进程,显示一行:

Killed

我不知道这是否是最好的方法,但至少我尝试过。

【问题讨论】:

在管理良好的系统上,这应该是不可能的。我看到的唯一方法是您是否可以写入该用户空间并(暂时)消耗所有硬盘配额,迫使进程停止。 断路器面板是否锁定? @stark 不幸的是,我在家工作,没有心灵感应能力。 【参考方案1】:

如果服务器管理得当,您不能:

不应允许单个进程占用所有可用内存,因为应限制允许用户执行的操作 任何体面的多用户系统都不会允许非管理员用户杀死其他人的进程

这是安全的基础知识。但是,如果您认为您的同事 滥用 系统资源并因此阻止其他用户工作,您应该能够向管理团队发送消息解释这一点。 他们当然可以终止进程,但不能。

【讨论】:

以上是关于如何在没有 root 访问权限的情况下在服务器上杀死其他人的 Python 进程?的主要内容,如果未能解决你的问题,请参考以下文章

如何在没有 root 用户的情况下在 Linux (CentOS) 中安装软件包并进行自动依赖处理?

有没有办法在没有root的情况下在linux中制作键盘记录器?

如何在没有ROOT访问的Android上执行SQL注入

如何在没有root访问权限的情况下部署NodeJS应用程序,以便在服务器重新启动后保持在线状态?

如何在没有 root 访问权限的情况下获取已安装应用程序的 APK?

如何在没有 root 访问权限的情况下安装 python 模块?