听我说一句:这是我的学习笔记,仅供参考
你是管理员 需要 sudo
1 四种方法
在Linux系统中,每个用户都可以拥有多个进程。有时,我们需要终止一个用户的所有进程,这可能是因为该用户已经离开了系统,而他的进程仍在运行,占用了大量的系统资源。在某些情况下,这也可能是因为该用户的进程正在导致系统性能下降,需要终止这些进程来恢复系统的正常运行。
网上有4种方法,我们以kill用户ttlsa为例
- pkill方式
pkill -u ttlsa
- killall方式
killall -u ttlsa
- ps方式
ps列出ttlsa的pid,然后依次kill掉,比较繁琐.
ps -ef | grep ttlsa | awk '{ print $2 }' | sudo xargs kill -9
- pgrep方式
pgrep -u参数查出用户的所有pid,然后依次kill
pgrep -u ttlsa | sudo xargs kill -9
网友评论:如果在服务器上跑程序,使用了vnc的话,最好别用1和2方法吧,直接连vnc杀掉了
什么是vnc? 参考资料1:https://www.xinruiyun.cn/zhishiku/2917.html
VNC (Virtual Network Computing)是虚拟网络计算机的缩写。VNC 是一款优秀的远程控制工具软件,由著名的 AT&T 的欧洲研究实验室开发的。VNC 是在基于 UNIX 和 Linux操作系统的免费的开源软件,远程控制能力强大,高效实用,其性能可以和 Windows 或 MAC 中的任何远程控制软件媲美。在 Linux 中,VNC 包括以下四个命令:vncserver,vncviewer,vncpasswd,和 vncconnect。大多数情况下只需要其中的两个命令:vncserver 和 vncviewer。目前,原来的AT&T版本已经不再使用,因为更多有重大改善的分支版本已经出现, 像是RealVNC, VNC tight 和UltraVNC。 Real VNC 是当前最活跃和强大的主流应用。
参考资料2:https://gnu-linux.readthedocs.io/zh/latest/Chapter02/98_vnc.html
VNC 是基于 RFB(Remote FrameBuffer)的一款开源的远程桌面控制软件。它由客户端、服务端和一个协议组成。
2 用这个方法最保险
要在服务器上杀掉特定用户的某个进程,可以使用以下步骤:
- 找到该用户的
vi
进程ID(PID)。 - 杀掉该进程。
以下是详细的步骤和命令:
2.1 找到进程ID
首先,使用ps
命令列出所有vi
进程,并找到特定用户(user002
)正在编辑特定文件(CX_header.vcf
)的进程ID。
ps aux | grep "user002" | grep "vi CX_header.vcf"
ps aux
:
ps
:显示当前系统的进程状态。a
:显示所有用户的进程(而不仅仅是当前用户)。u
:以用户为中心的格式显示进程信息,包括用户、PID、CPU和内存使用率等。x
:显示所有进程,包括没有控制终端的进程。
这条命令将列出系统上所有正在运行的进程及其详细信息。
此命令会列出所有包含user002
和vi CX_header.vcf
的进程信息。你会看到类似以下输出:
user002 12345 0.0 0.1 123456 7890 ? S 12:34 0:00 vi CX_header.vcf
其中第二列 12345
是进程ID(PID)。
插曲
#插曲,用-ef也可以
# -e:显示系统上所有进程。
# -f:以完整格式显示进程信息,包括用户、PID、父进程ID(PPID)、启动时间、终端、CPU时间和命令等详细信息。
ps -ef | grep username
2.2 杀掉进程
找到进程ID后,可以使用kill
命令杀掉该进程:
kill -9 12345
用你找到的具体PID替换12345
。
示例命令
假设ps
命令的输出中进程ID为12345
,完整的命令如下:
# 找到进程ID
ps aux | grep "user002" | grep "vi CX_header.vcf"
# 杀掉进程
kill -9 12345
这会强制终止user002
用户正在编辑文件CX_header.vcf
的vi
进程。
不带-9
选项优雅地终止进程
-
使用
kill -9
会强制终止进程,可能导致未保存的工作丢失。通常建议先尝试使用kill
命令(不带-9
选项)优雅地终止进程:kill 12345
-
在多用户环境中,请确保只终止与目标任务相关的进程,以免影响其他用户和进程。