如何在 ServerBox 里杀掉卡死或失控的进程
向进程发信号
在进程管理面板,点目标进程右侧的操作按钮(或右键进程),可以选择发送不同的信号:
| 信号 | ServerBox 里的按钮 | 效果 |
|---|---|---|
| SIGTERM | 终止(默认) | 优雅停止,让进程做清理工作 |
| SIGKILL | 强制终止 | 立刻杀掉,进程无法忽略 |
| SIGSTOP | 暂停 | 冻结进程,不再占用 CPU |
| SIGCONT | 继续 | 恢复被暂停的进程 |
| SIGHUP | 重载配置 | 某些服务收到后重新加载配置(nginx、apache) |
什么时候用哪个
优先 SIGTERM(终止):
- 大多数服务收到 SIGTERM 后会:关闭连接、保存数据、写日志、正常退出
- 这是 kill 命令不带参数的默认行为
- 等 3~5 秒进程还在 → 换 SIGKILL
SIGKILL(强制终止):
- 进程卡死了、不理 SIGTERM
- 确认不需要保存任何数据
- 注意:僵尸进程(Z 状态)无法被 SIGKILL,得先处理父进程
SIGSTOP(暂停):
- 不想杀掉进程,只是先让它停一下(节省 CPU)
- 排查看进程内部状态用得上,日常很少用到
批量杀进程
进程管理面板支持按关键词批量终止:
- 搜索框过滤出你要处理的进程(比如输 python 筛出所有 Python 进程)
- 全选匹配的进程
- 批量发送终止信号
这个功能在"某个服务 spawn 了一堆失控的子进程"时很有用。
和 kill 命令的对应
| 你想做的 | ServerBox | 命令行 |
|---|---|---|
| 优雅停止 PID 1234 | 点终止 | kill 1234 |
| 强杀 PID 1234 | 点强制终止 | kill -9 1234 |
| 杀掉所有 python 进程 | 搜索 python → 批量终止 | pkill python |
| 暂停然后恢复 | 暂停 → 继续 | kill -STOP 1234; kill -CONT 1234 |
安全注意
⚠️ ServerBox 能杀掉你有权限杀的任何进程,包括关键系统服务(sshd、systemd 本身、Docker 守护进程)。操作前确认:
- 知道这个进程是干什么的(看命令列)
- 不是关键服务(sshd 杀了就失联了)
- 最好先在 SSH 终端里
ps -fp <PID>确认一下
生产服务器上杀进程前,最好先用 strace -p <PID> 或 lsof -p <PID> 看看它在做什么,别盲目 kill。