kill
命令是 Unix 和 Linux 系统中用于发送信号给进程的工具。尽管名字叫 “kill”,但它不仅用于终止进程,还可以发送各种信号来控制进程的行为。
基本用法
kill [options] <pid>...
常用选项和信号
- 发送终止信号(SIGTERM,默认)
kill <pid>
例子:发送终止信号给进程 1234
。
kill 1234
-
发送指定信号
kill -s <signal> <pid>
例子:发送
SIGKILL
信号给进程1234
。kill -s SIGKILL 1234
-
使用信号编号发送信号
kill -<signal_number> <pid>
例子:发送 SIGKILL
信号(信号编号 9
)给进程 1234
。
kill -9 1234
-
发送信号给进程组
kill -<signal> -<pgid>
例子:发送
SIGTERM
信号给进程组1234
。
kill -TERM -1234
-
列出所有信号名称
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
常见信号
- SIGHUP (1) :挂起信号,通常用于通知进程重新读取配置文件。
- SIGINT (2) :中断信号,通常由
Ctrl+C
发送。 - SIGQUIT (3) :退出信号,通常由
Ctrl+\
发送,生成核心转储。 - SIGKILL (9) :强制终止信号,立即终止进程,无法被捕获或忽略。
- SIGTERM (15) :终止信号,默认信号,可以被捕获和处理或忽略。
- SIGSTOP (19) :停止进程信号,无法被捕获或忽略。
- SIGCONT (18) :继续执行被停止的进程。
示例
-
终止进程
终止进程1234
:kill 1234
-
强制终止进程
强制终止进程1234
:kill -9 1234
-
重启服务
假设进程1234
是一个服务,发送SIGHUP
信号让其重新读取配置文件:kill -1 1234
-
停止和继续进程
停止进程1234
:kill -STOP 1234
继续执行进程
1234
:kill -CONT 1234
发送信号给多个进程
可以一次性发送信号给多个进程:
kill 1234 5678 91011
通过进程名发送信号
可以使用 pkill
或 killall
命令根据进程名发送信号:
- pkill
pkill -f process_name
例子:发送 SIGTERM
信号给所有匹配 process_name
的进程。
pkill -f process_name
- killall
killall -s <signal> process_name
例子:发送 SIGKILL
信号给所有名为 process_name
的进程。
killall -s SIGKILL process_name
使用 xargs
发送信号
结合 ps
和 xargs
命令发送信号:
ps aux | grep process_name | awk '{print $2}' | xargs kill -9