命令简介
kill
命令是一个用于发送信号给进程的命令。它可以用来终止、挂起或继续运行进程。在 Linux 系统中,kill
命令是管理进程的重要工具之一,对于系统管理员来说非常有用。
命令格式
1
| kill [options] <pid> [...]
|
其中 :
参数说明
参数 |
说明 |
备注 |
-s, –signal |
指定要发送的信号 |
默认为 TERM (15) |
-l, –list |
列出可用的信号名称 |
- |
-L, –table |
列出可用的信号名称及其说明 |
- |
-a, –all |
不区分进程是否属于当前用户,向所有进程发送信号 |
需要 root 权限 |
-p, –pid |
指定要操作的进程 ID |
- |
-u, –user |
终止指定用户的进程 |
- |
-c, –cpuvalue |
终止指定 CPU 值的进程 |
- |
-v, –verbose |
显示详细信息 |
- |
-q, –quiet |
禁止输出错误信息 |
- |
-w, –wait |
等待进程终止 |
- |
命令实例
基础用法
1.终止进程
1 2 3 4 5 6 7 8
| $ kill 1234
$ kill 1234 5678 9012
$ kill -9 1234
|
2.使用不同的信号终止进程
1 2 3 4 5
| $ kill -s TERM 1234
$ kill -s KILL 1234
|
3.列出可用的信号
1 2 3 4 5 6 7 8
| $ 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
|
4.列出信号的详细说明
1 2 3 4 5 6 7 8 9
| $ 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 ...
|
5.终止指定用户的进程
- 等待进程终止
扩展用法
1.使用 pkill
命令终止进程
pkill
命令可以根据进程名称终止进程,非常方便。
1 2 3 4 5
| $ pkill apache2
$ pkill ^http
|
2.使用 killall
命令终止进程
killall
命令也可以根据进程名称终止进程,但它与 pkill
的工作方式略有不同。
3.向进程组发送信号
使用 -
可以向进程组发送信号。
4.结合 ps 命令查看进程状态
1 2 3 4 5 6
| ps aux | grep sshd
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1234 0.0 0.1 1024 408 pts/0 S+ 11:23 0:00 sshd -D
|
5.结合 grep 命令过滤结果
1 2 3 4 5
| pidof java | grep -E "PID.+CPU.+50.0" | xargs kill
ps aux | grep -E "PID.+CPU.+50.0" | grep java | awk '{print $2}' | xargs kill
|
高级使用方法
1.终止僵尸进程
僵尸进程是一种已经终止但还未被父进程回收的进程。你可以使用 kill
命令向僵尸进程发送 SIGCHLD
信号,以便通知父进程回收资源。
1 2 3 4 5
| $ ps aux | awk 'BEGIN {FS=" "} /zombie/ {print $2}'
$ kill -s SIGCHLD <zombie_pid>
|
2.使用 pgrep
和 pkill
组合命令
pgrep
命令可以根据进程名称或其他条件查找进程 ID,然后将其传递给 pkill
命令。这种组合使用方式非常灵活和强大。
1 2 3 4 5 6 7 8
| $ pkill -f ^http
$ pkill -u john
$ pgrep -d ',' -u root -a --sort="-,rss" | awk '{if ($2 > 1073741824) print $1}' | xargs kill
|
3.使用 kill 命令实现进程的软重启
1 2
| kill -s USR2 $(pidof sshd)
|
4.使用 kill 命令监控进程状态
1 2 3 4 5 6 7 8 9
| while true; do pid=$(pidof sshd) cpu=$(ps -p $pid -o %cpu=) if [ "$cpu" -gt 50 ]; then kill -s HUP $pid fi sleep 1 done
|
以上就是关于 kill
命令的详细介绍和使用示例,希望对你有所帮助。如果还有任何疑问或需要进一步的帮助,欢迎随时提出。