索引(复习备用):

kill [-9] 进程号
killall 进程名称 (支持通配符,比如杀死以A开头的所有进程就是A)
(一个终端对应一个bash进程)
pstree [-pu](显示进程树,-p显示PID,-u显示进程所属用户)
终止进程:
kill [选项] 进程号
常用选项:-9 表示强制终止进程
killall 进程名称 (支持通配符,比如杀死以A开头的所有进程就是A
)**

案例1:
踢掉某个非法登录的用户

先ps -aux | grep sshd来查询所有使用sshd登录的进程:

centos 自动关闭某个java centos停止程序_linux

然后kill 4010终止这个进程

centos 自动关闭某个java centos停止程序_linux_02

也就是说,如果想要中断某个用户对服务器(系统)的sshd连接(操作),可以先通过
ps -aux | grep sshd命令,查询到相关的进程,然后找出这个用户对应的进程,执行kill命令,杀死进程即可。(坏坏的。。。)

案例2:
终止远程登录服务sshd,在适当的时候再重启sshd服务
这里kill的是 sbin目录下的那个sshd进程,因为这个进程是系统自带的,所以应该杀死sbin目录下的这个。
kill之后,操作系统就没有了sshd进程,也就没有了和外界终端用户的sshd接口,外界进程无法通过sshd进程和操作系统通信。

centos 自动关闭某个java centos停止程序_bash_03

杀死这个进程即可。
如果想重新启动sshd进程,输入/usr/sbin/sshd -D 命令即可。

案例3:
终止多个gedit编辑器
killall gedit即可
killall就是通过 进程的名称,来一次性杀死多个进程,就相当于杀死特定名称的进程,这样在一些情况下更加方便。
也可以直接kill掉一个父进程,以此来杀死这个父进程的所有子进程,效率较高。

案例4:
强制杀掉一个终端(kill -9 终端号)

(先打开2个终端)

ps -aux | grep bash寻找现在所有的终端

bash是shell的一种

centos 自动关闭某个java centos停止程序_bash_04

通过启动时间可以知道,两个终端的不同。

先通过kill 终端号 来试试,发现并没有成功杀死:

centos 自动关闭某个java centos停止程序_linux_05

用kill -9 终端号,发现成功杀死:

centos 自动关闭某个java centos停止程序_centos 自动关闭某个java_06

这个会话(终端)也显示断开连接,说明终端进程终止成功。

centos 自动关闭某个java centos停止程序_父进程_07

显示进程树:

pstree [选项]

常用选项:

centos 自动关闭某个java centos停止程序_bash_08


centos 自动关闭某个java centos停止程序_linux_09

这里可以看到1号进程systemd是进程树的根,之后研究一下systemd进程。

centos 自动关闭某个java centos停止程序_bash_10

pstree -pu | less
分页显示