簡體   English   中英

如何在沒有 root 訪問權限的服務器上殺死其他人的 Python 進程?

[英]How can I kill someone else's Python processes on a server without root access?

我今天在下班時間工作,發現有人在共享機器上使用了不合理數量的 memory 和 GPU memory,而他們在假期離開時留下了一個進程。 我知道他們備份了他們的結果,並且腳本可以隨時恢復,所以我想殺死它以運行我自己的東西。

服務器正在運行 CentOS 版本 7.9.2009。

如果重要的話,我想殺死的腳本正在運行啟用了檢查點的 PyTorch 和 TensorFlow 訓練腳本。

我嘗試的一種方法涉及分配如此多的 memory 以至於其他進程只需正常運行就會得到 OOM,但它並不十分成功。

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

它填滿了 memory 並很快交換,但不會在那里停留很長時間。 問題似乎是 Linux 殺死了進程,而不是 Python 引發異常並觸發except子句,而是顯示一行:

Killed

我不知道這是否是最好的方法,但至少我嘗試過。

如果服務器得到妥善管理,您不能:

  • 不應允許單個進程吃掉所有可用的 memory,因為應該限制允許用戶執行的操作
  • 任何體面的多用戶系統都不會允許非管理員用戶殺死其他人的進程

這是安全的基礎。 但是,如果您認為您的同事正在濫用系統資源並因此阻止其他用戶工作,您應該能夠向管理團隊發送一條消息來解釋這一點。 他們當然可以終止進程,但不能。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM