索引(复习备用):
kill [-9] 进程号
killall 进程名称 (支持通配符,比如杀死以A开头的所有进程就是A)
(一个终端对应一个bash进程)
pstree [-pu](显示进程树,-p显示PID,-u显示进程所属用户)
终止进程:
kill [选项] 进程号
常用选项:-9 表示强制终止进程
killall 进程名称 (支持通配符,比如杀死以A开头的所有进程就是A)**
案例1:
踢掉某个非法登录的用户
先ps -aux | grep sshd来查询所有使用sshd登录的进程:
然后kill 4010终止这个进程
也就是说,如果想要中断某个用户对服务器(系统)的sshd连接(操作),可以先通过
ps -aux | grep sshd命令,查询到相关的进程,然后找出这个用户对应的进程,执行kill命令,杀死进程即可。(坏坏的。。。)
案例2:
终止远程登录服务sshd,在适当的时候再重启sshd服务
这里kill的是 sbin目录下的那个sshd进程,因为这个进程是系统自带的,所以应该杀死sbin目录下的这个。
kill之后,操作系统就没有了sshd进程,也就没有了和外界终端用户的sshd接口,外界进程无法通过sshd进程和操作系统通信。
杀死这个进程即可。
如果想重新启动sshd进程,输入/usr/sbin/sshd -D 命令即可。
案例3:
终止多个gedit编辑器
killall gedit即可
killall就是通过 进程的名称,来一次性杀死多个进程,就相当于杀死特定名称的进程,这样在一些情况下更加方便。
也可以直接kill掉一个父进程,以此来杀死这个父进程的所有子进程,效率较高。
案例4:
强制杀掉一个终端(kill -9 终端号)
(先打开2个终端)
ps -aux | grep bash寻找现在所有的终端
bash是shell的一种
通过启动时间可以知道,两个终端的不同。
先通过kill 终端号 来试试,发现并没有成功杀死:
用kill -9 终端号,发现成功杀死:
这个会话(终端)也显示断开连接,说明终端进程终止成功。
显示进程树:
pstree [选项]
常用选项:
这里可以看到1号进程systemd是进程树的根,之后研究一下systemd进程。
pstree -pu | less
分页显示