Users
通過刪除頂部顯示的程序來清除一些記憶體
我的系統中有一個老使用者(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')