linux基础命令 - kill

kill - terminate a process
kill [-s signal|-p] [-q sigval] [-a] [--] pid...
kill -l [signal]

kill接上进程ID,用来平滑关闭某个进程,相当于系统通知某个进程,你该关闭了,然后该进程正常关闭,如果正常kill无法关闭,则可能需要使用kill -9 pid,表示强杀

[root@xingyongsheng ~]# 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
....


ps aux | grep mysql
kill 5417  <==>  kill -15  5417  <===> kill  -s SIGTERM 5417   <===>  kill -s 15 5417
kill -9 5417

根据要kill的具体进程不同,有时候用kill一个进程可能比较慢,尤其是不加-9参数的时候,比如kill一些比较重量的java进程的时候,此时我们可以等待几十秒,或者反复调用kill pid

[root@xingyongsheng ~]# ps aux | grep mysql
root      5417  0.0  0.0 112712   960 pts/0    R+   23:00   0:00 grep --color=auto mysql
polkitd  28138  0.2  3.0 4737408 498924 ?      Ssl  Feb17 107:22 mysqld
polkitd  28288  0.0  0.0      0     0 ?        Z    Feb17   0:00 [mysqld_safe] <defunct>

如果我们要kill的东西很多,比如运行了多个docker容器,可以下面这样
for i in `pgrep docker`; do echo "kill $i"; done;
for i in `pgrep docker`; do echo "kill $i" >> /tmp/tmp.sh; done;   把要执行的命令先放到脚本里
pgrep -a docker  和上面的内容对比,确认之后再执行脚本实际的kill
pgrep docker | xargs -n 1 kill

有时候我们需要非常精确的找到一个进程,以确保kill的时候不会出错,此时不妨执行这个进程的时候使用命令的绝对路径,并使用类似 ps aux | fgrep "keyword" 来确保搜索到的结果唯一
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

凯尔kyle

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值