kill 命令是向进程发送信号的通信机制,能否终止取决于进程是否响应;默认发送 SIGTERM(-15),允许优雅退出;仅当进程不响应时才用不可捕获的 SIGKILL(-9)。

kill 命令不是“一刀毙命”的暴力工具,而是向进程发送信号的通信机制;**能否终止成功,取决于进程是否响应信号**。多数情况下,用 kill 1234(即默认 SIGTERM)就足够了;只有当进程完全无响应、不处理信号时,才该考虑 kill -9。
怎么查到要杀的进程 PID
没 PID 就没法用 kill,而 PID 是动态变化的,不能靠记忆或猜。
-
pgrep firefox:直接输出匹配进程的 PID,适合已知确切进程名(如firefox、python3) -
pidof nginx:返回所有同名进程的 PID,空格分隔,可直接用于kill后续操作 -
ps aux | grep -v grep | grep vim:手动筛选时务必排除grep自身,否则会多出一条干扰行 - 注意:
ps输出中第二列是 PID,但不同系统(如 Alpine vs Ubuntu)列顺序可能微调,别硬记“第几列”,用ps -o pid,comm,args显式指定更稳
kill 默认发的是什么信号
kill 1234 实际等价于 kill -15 1234 或 kill -TERM 1234,即发送 SIGTERM —— 它允许进程执行清理动作(比如保存文件、关闭 socket、释放锁),再退出。
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
- 很多服务(如
nginx、redis-server)收到SIGTERM会优雅关闭,这是推荐的第一步 - 如果进程卡在内核态(比如等待不可中断的 I/O)、或主动忽略
SIGTERM(极少见但存在),那它就不会退出 -
kill -l可列出所有信号名和编号,kill -l TERM会返回15,kill -l KILL返回9
什么时候必须用 kill -9
kill -9 1234 发送 SIGKILL,它无法被捕获、阻塞或忽略,内核会立即回收进程资源。但它也意味着:进程没机会做任何清理。
- 只在
kill(无参数)后ps -p 1234仍显示该进程时才用 —— 表明它已僵死(zombie 状态除外,zombie 是子进程退出后父进程未 wait,此时杀父进程才有用) -
kill -9杀数据库写入中的进程,可能导致数据损坏;杀编辑器未保存的文档进程,会丢内容 -
kill -9 -1会尝试杀死当前用户所有进程(包括 shell),慎用;普通用户通常只能杀自己的进程,root 才能跨用户操作
别混淆 killall 和 pkill 的行为差异
它们都支持按名操作,但匹配逻辑完全不同,容易误杀。
-
killall vim:只匹配可执行文件名(/usr/bin/vim),不匹配vimrc或含vim的路径;大小写敏感 -
pkill vim:默认按进程名(comm字段)模糊匹配,pkill -f "python.*server"还能匹配完整命令行参数 -
pkill -u $USER chrome和killall -u $(id -u) chrome功能类似,但killall -u在部分旧系统上不支持用户名,只认 UID - 所有命令加
-n(dry-run)参数并不真发信号,先看会匹配哪些进程 ——pkill -n firefox、killall -n vim都支持,强烈建议先试
rsync 进程,SIGTERM 会让它完成当前文件再停;而 SIGKILL 一来,缓存丢失、目标文件可能损坏。信号不是开关,是对话——你得先试试说人话,再说狠话。

















