应优先用 pgrep 或带括号的 grep 定位 pid;kill 默认发 sigterm(15)以优雅终止,卡死时再用 sigkill(9);批量操作前务必加 -v 验证目标,注意大小写与用户权限。

直接用 ps 查不到你要杀的进程,大概率是没加过滤;kill 报 “No such process” 不一定是进程没了,更可能是 PID 记错了或权限不够。
怎么快速定位某个程序对应的 PID
别一上来就 ps aux | grep xxx,它会把 grep 自己也列出来,干扰判断。正确做法是用 pgrep 或带括号的 grep:
-
pgrep -f "python server.py"—— 按完整命令行匹配,返回纯数字 PID,适合脚本调用 -
ps aux | grep "[n]ginx"—— 方括号让grep进程名不匹配自身([n]ginx匹配nginx但不匹配grep [n]ginx) - 如果只记得端口,用
lsof -i :8080或ss -tulpn | grep ':8080',比查进程名更可靠
kill 命令发信号时该选哪个编号
kill 默认发 SIGTERM(15),这是“礼貌退出”信号,进程可以捕获并做清理;但有些卡死的进程根本不响应。这时候不能无脑 kill -9:
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
-
kill -15 <code>PID:首选,给程序机会优雅终止 -
kill -2 <code>PID:等价于 Ctrl+C,对前台进程有效,某些守护进程不响应 -
kill -9 <code>PID:强制终止,内核直接回收资源,但可能导致文件损坏、锁未释放、临时文件残留 - 别用
kill -0 <code>PID来“测试是否存在”——它只检查权限和 PID 是否有效,不保证进程还在运行中
批量杀进程容易踩的坑
用 killall 或 pkill 批量操作前,先加 -v 或 -e 看清楚范围:
-
pkill -f "node app.js" -v:显示将要杀死的进程,确认无误再删掉-v -
killall -q nginx:加-q静默模式,避免“no process found”报错干扰脚本逻辑 - 注意大小写:
killall Python≠killall python(取决于进程实际启动名) - 别在 root 下随便
pkill -u username,可能干掉 SSH 会话或系统服务依赖的子进程
最麻烦的不是找不到进程,而是杀完发现服务自动拉起、日志里没留痕迹、或者多个同名进程混在一起——动手前先看 ps -o pid,ppid,cmd -C python 确认父子关系,比硬杀安全得多。










