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" 来确保搜索到的结果唯一
linux基础命令 - kill
最新推荐文章于 2023-03-29 22:10:09 发布