本文为joshua317原创文章,转载请注明:转载自joshua317博客 https://www.joshua317.com/article/187
一、简介
Linux里的kill命令用来终止指定的进程(terminate a process)的运行,是Linux下进程管理的常用命令。
通常,终止一个前台进程可以使用Ctrl+C键,但是,对于一个后台进程就须用kill命令来终止,我们就需要先使用ps/pidof/pstree/top等进程查看工具获取进程PID,然后使用kill命令来杀掉该进程。
kill命令可将指定的信号发送给相应的进程或工作。 kill命令默认使用信号为SIGTERM(15),用于结束进程或工作。如果进程或工作忽略此信号,则可以使用信号 SIGKILL(9) ,强制杀掉进程。
二、格式说明
kill [-s signal|-p] [-q sigval] [-a] [--] pid...
kill -l [signal]
kill [参数] [进程号]
三、选项说明
-l 列出系统支持的信号
-s 指定向进程发送的信号
-a 处理当前进程时不限制命令名和进程号的对应关系
-p 指定kill命令只打印相关进程的进程号,而不发送任何信号
-u 指定用户
使用 kill -l 命令列出所有可用信号,最常用的信号是:
1 (HUP):重新加载进程。
9 (KILL):杀死一个进程。
15 (TERM):正常停止一个进程。
四、命令功能
用来删除执行中的程序或工作
五、常见用法
5.1 显示系统支持的信号列表
# 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
HUP 1 重新加载进程
INT 2 中断(同 Ctrl + C)
QUIT 3 退出(同 Ctrl + \)
TERM 15 终止
KILL 9 强制终止
CONT 18 继续(与STOP相反, fg/bg命令)
STOP 19 暂停(同 Ctrl + Z)
5.2 查找进程,并用kill杀掉
# ps aux|grep nginx
root 7591 0.0 0.0 112816 972 pts/0 S+ 10:46 0:00 grep --color=auto nginx
www 13548 0.0 0.3 80608 26372 ? S Sep15 0:32 nginx: worker process
www 13549 0.0 0.3 80608 26860 ? S Sep15 1:14 nginx: worker process
www 13550 0.0 0.3 80608 27184 ? S Sep15 0:43 nginx: worker process
www 13551 0.0 0.3 80608 27496 ? S Sep15 1:48 nginx: worker process
root 30802 0.0 0.0 48828 5212 ? Ss Apr15 0:00 nginx: master process nginx
杀掉nginx主进程30802
# kill -9 30802
5.3 强制杀死进程
# kill -KILL 30802
5.4 重新加载进程
# kill -HUP 30802
5.5 杀死指定用户所有进程
# kill -9 $(ps -ef | grep www) //方法一 过滤出www用户进程
# kill -u www //方法二
5.6 拓展
init进程是不可杀的
init是Linux系统操作中不可缺少的程序之一。所谓的init进程,它是一个由内核启动的用户级进程。内核自行启动(已经被载入内存,开始运行,并已初始化所有的设备驱动程序和数据结构等)之后,就通过启动一个用户级程序init的方式,完成引导进程。所以,init始终是第一个进程(其进程编号始终为1)。 其它所有进程都是init进程的子孙。init进程是不可杀的!
本文为joshua317原创文章,转载请注明:转载自joshua317博客 https://www.joshua317.com/article/187