关于 process-cleanup
process-cleanup 是一项 Agent 技能,使用 `/bin/ps` 检测僵尸进程,并可选择通知其父进程回收子进程。默认仅检测;若父进程忽略 `SIGCHLD`,需经用户确认后才能终止。
主要功能
- 01使用 `/bin/ps` 检测僵尸进程
- 02列出进程状态与父进程 ID
- 03默认采用仅检测模式
- 04通过 `--kill` 发送 `SIGCHLD`
- 05终止父进程前须获用户确认
适用场景
- 01检查主机上的僵尸进程
- 02请求父进程回收已退出的子进程
- 03僵尸进程仍存在时查明父进程 PID
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ paulrberg/ agent-skills --skill process-cleanup安装后在 Claude Code 中输入/process-cleanup确认已加载。
附带文件scripts/kill-zombies.sh
详细介绍
进程清理
使用 /bin/ps 检测并回收僵尸进程。
背景
僵尸进程(状态为 Z)是指已经退出,但其父进程尚未调用 wait() 来收集退出状态的进程。僵尸进程不消耗 CPU 或内存,但会占用 PID 槽位,并且可能不断累积。你无法 kill 僵尸进程——它已经死了。只有以下补救方法:
- 向父进程发送信号,发送
SIGCHLD,使其回收子进程 - 终止父进程,让
init/launchd接管并回收孤儿进程
重要提示:使用 ps 查询进程状态
查询进程状态时始终使用 ps(BSD)。如果 ps 是别名,请使用 /bin/ps 绕过别名。
# List zombies
/bin/ps ax -o pid,state,ppid,user,command | awk '$2 ~ /Z/'
# List all processes with state
/bin/ps ax -o pid,state,ppid,etime,args
用法
运行辅助脚本扫描僵尸进程:
# Detect only (default) — list zombie processes
bash scripts/kill-zombies.sh
# Reap zombies — send SIGCHLD to parent processes
bash scripts/kill-zombies.sh --kill
安全性
- 默认模式为仅检测——不会向任何进程发送信号
- 使用
--kill时,脚本会向父进程发送SIGCHLD(以非破坏性的方式促使其回收子进程) - 如果父进程忽略
SIGCHLD,脚本会报告父进程 PID——在终止父进程前先向用户确认 - 绝不要终止 PID 1(
init/launchd)
评论
支持 Markdown