Users

通過刪除頂部顯示的程序來清除一些記憶體

  • November 28, 2019

我的系統中有一個老使用者(bob)。根據“top”的輸出,該使用者似乎執行了許多程序(其中大多數的命令是“java”)。由於我具有 root 訪問權限,因此我刪除了該使用者,但程序仍然以“1000”使用者身份執行。如何阻止這些程序永久執行?

如果您刪除了使用者,並且還刪除了使用者可能擁有的任何 cronjobs 等,那麼重新啟動系統應該注意殺死他們的程序,而不是在系統再次啟動時重新啟動它們。

如果重新啟動不是一個選項,您可以使用 UID 1000 向屬於使用者的所有程序發送終止信號

sudu pkill -u 1000

您可能會在第一次執行時看到該命令會影響哪些程序

pgrep -u 1000

另請參閱man pkill

首先,我會將伺服器所有程序的目前狀態保存到一個文件中。

ps -wwfax -o uid=,pid=,ppid=,cmd=   > /root/list_of_process_as_today.txt

之後我將專注於我的不良使用者。

ps -wwfax -o uid=,pid=,ppid=,cmd=  | sed '/^ *1000  *\([0-9][0-9]*\) .*$/p;d'

輸出範例可以是:

1000  3096  3087      \_ sshd: em444@pts/0
1000  3099  3096          \_ -bash
1000  3543  3099              \_ ps -wwfax -o uid=,pid=,ppid=,cmd=
1000  3544  3099              \_ sed /^ *1000  *\([0-9][0-9]*\) .*$/p;d
1000 21628     1 SCREEN
1000 21629 21628  \_ /bin/bash

程序列表分析

我目前的外殼是程序 3099 。你可以看到一些子程序,我執行的命令3543和一個父程序3096

你可以看到我有程序 21628,他的父程序是程序1,程序1是所有程序的父程序。

在我可以使用這個命令殺死所有程序之後。

kill  $(/root/list_of_process_as_today.txt  | sed 's/^ *1000  *\([0-9][0-9]*\) .*$/\1/p;d')

引用自:https://unix.stackexchange.com/questions/554550