Linux基础命令-kill向进程发送信号

Linux基础命令-setfacl设置文件ACL策略规则

Kill

一.命令介绍

先使用帮助文档查看命令的信息

NAME
kill - terminate a process

kill命令的主要功能就是向进程发送信号,这里我们主要用来终止结束进程的,与它的英文单词含义相同,在Linux系统中如果需要不使用某个进程,可以使用此命令立刻结束进程,当然也可使用servicesystemctl管理命令stop(停止)服务。

二. 命令语法

此命令的基本语法是:kill 【参数】【进程号】

SYNOPSIS
kill [-s signal|-p] [-q sigval] [-a] [–] pid…
kill -l [signal]

三. 基本参数

1.命令的常用参数

以表示形式显示

-l 列出系统支持的信号
-s 指定向进程发送的信号
-a 不限制命令和进程号的对应关系
-p 不发送任何信号

kill常用信号的含义

使用kill -l 显示所有信号

[root@localhost ~]# kill -l
 1) SIGHUP	 2) SIGINT	 3) SIGQUIT	 4) SIGILL	 5) SIGTRAP
 6) SIGABRT	 7) SIGBUS	 8) SIGFPE	 9) SIGKILL	10) SIGUSR1
11) SIGSEGV	12) SIGUSR2	13) SIGPIPE	14) SIGALRM	15) SIGTERM
16) SIGSTKFLT	17) SIGCHLD	18) SIGCONT	19) SIGSTOP	20) SIGTSTP
21) SIGTTIN	22) SIGTTOU	23) SIGURG	24) SIGXCPU	25) SIGXFSZ
26) SIGVTALRM	27) SIGPROF	28) SIGWINCH	29) SIGIO	30) SIGPWR
31) SIGSYS	34) SIGRTMIN	35) SIGRTMIN+1	36) SIGRTMIN+2	37) SIGRTMIN+3
38) SIGRTMIN+4	39) SIGRTMIN+5	40) SIGRTMIN+6	41) SIGRTMIN+7	42) SIGRTMIN+8
43) SIGRTMIN+9	44) SIGRTMIN+10	45) SIGRTMIN+11	46) SIGRTMIN+12	47) SIGRTMIN+13
48) SIGRTMIN+14	49) SIGRTMIN+15	50) SIGRTMAX-14	51) SIGRTMAX-13	52) SIGRTMAX-12
53) SIGRTMAX-11	54) SIGRTMAX-10	55) SIGRTMAX-9	56) SIGRTMAX-8	57) SIGRTMAX-7
58) SIGRTMAX-6	59) SIGRTMAX-5	60) SIGRTMAX-4	61) SIGRTMAX-3	62) SIGRTMAX-2
63) SIGRTMAX-1	64) SIGRTMAX	

通过上图能看到kill能支持的信号真的很多,但基本上我们用不到那么多信号,以下这些是较为常用的。

1)SIGHUP 重新加载进程
2)SIGINT 将进程中断,类似ctrl+c快捷键
3)SIGQUIT 退出进程
9)SIGKILL 强制结束进程,非必要情况下不建议使用,因有可能强制结束会导致数据出现丢失,或终端无法恢复到支持状态
15)SIGTERM 正常结束进程,是kill命令的默认指令

四. 参考实例

1.结束MySQL进程

我们使用·topps或者netstat查看MySQL的进程PID,直接正常结束进程。

[root@localhost ~]# netstat -antp | grep mysqld
tcp6       0      0 :::3306                 :::*                    LISTEN      4561/mysqld         
[root@localhost ~]# ps -ef | grep mysql
mysql      4561      1  0 14:43 ?        00:00:01 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid
root      55203   2853  0 15:23 pts/1    00:00:00 grep --color=auto mysql
[root@localhost ~]# kill 15 4561
[root@localhost ~]# ps -ef | grep mysql
root      55242   2853  0 15:24 pts/1    00:00:00 grep --color=auto mysql
[root@localhost ~]# netstat -antp | grep mysqld

可以看到服务进程已经结束,如果还不确定服务是否已经关闭,也可使用systemctl查看服务状态。

[root@localhost ~]# systemctl status mysqld
● mysqld.service - MySQL Server
   Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
   Active: inactive (dead) since 三 2023-03-08 15:25:43 CST; 5s ago
     Docs: man:mysqld(8)
           http://dev.mysql.com/doc/refman/en/using-systemd.html
  Process: 55384 ExecStart=/usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid $MYSQLD_OPTS (code=exited, status=0/SUCCESS)
  Process: 55361 ExecStartPre=/usr/bin/mysqld_pre_systemd (code=exited, status=0/SUCCESS)
 Main PID: 55387 (code=exited, status=0/SUCCESS)

3月 08 15:25:26 localhost.localdomain systemd[1]: Starting MySQL Server...
3月 08 15:25:27 localhost.localdomain systemd[1]: Started MySQL Server.

2.强制结束进程

可以在kill后面加上-9参数,彻底结束不用的进程。

kill -9 55790

五. kill的扩展命令

kill命令还有其他与之相似的命令,如:pkillkillall,下面一起来看下这些命令的使用。这里就简单的写下这些扩展命令如何使用。

1. pkill

pkill命令:process kill,主要功能是根据进程名结束指定进程

> 用法:pkill 【参数】进程名
> 常用的命令参数
>  -P:	指定父进程号
>  -g:	指定进程组
>  -t:	指定开启进程的终端
>  -u:	结束指定用户的进程
> 例子:pkill prometheus   #直接pkill在后面加进程名删除
> 例子:pkill -u host   #根据拥有者终止进程

2. killall

killall命令:Kill all,主要功能是通过名称来结束进程,说到前面的kill命令只能一个一个的关闭进程与它的子进程,这样就太繁琐了,这个killall命令只要给它一个要关闭的服务名,就会自动找到对应的全部进程信息,并且直接关闭,这个命令能实现的功能有很多,一起来看下

> 语法格式:killall 【参数】名称
> 常用的命令参数
>  -e:	 	对长名称进行精确匹配
>  -l :		打印所有已知的信号列表
>  -p:	 	结束进程所属的进程组
>  -i :	交互式结束进程,结束进程前需要进行确认
>  -r :	使用正则表达式匹配要结束的进程名称
>  -s :    用指定的进程号代替默认型号"SIGTERM"
>  -u :    结束指定用户的进程
>  
>  例子:[root@localhost ~]# killall -i vim  #交互式确认是否结束
		 杀死 vim(55790) ? (y/N) y
		 [root@localhost ~]# killall httpd  #指定服务结束所有进程
		 [root@localhost ~]# killall -l     #显示所有已知的信号列表
		 HUP INT QUIT ILL TRAP ABRT IOT BUS FPE KILL USR1 SEGV USR2 PIPE ALRM TERM
STKFLT CHLD CONT STOP TSTP TTIN TTOU URG XCPU XFSZ VTALRM PROF WINCH IO PWR SYS
UNUSED

总结

kill命令的用处实际就是用来结束某一个进程的,若不想使用进程,用这个命令就对了,若觉得内容还行的,可以点赞支持一下!
Linux基础命令-kill向进程发送信号_第1张图片

你可能感兴趣的:(基础命令,linux,运维,bash)