mcpField
P
process-cleanup

process-cleanup

github.com/paulrberg云与 DevOps10278 次安装今天更新
代码仓库

关于 process-cleanup

process-cleanup 是一项 Agent 技能,使用 `/bin/ps` 检测僵尸进程,并可选择通知其父进程回收子进程。默认仅检测;若父进程忽略 `SIGCHLD`,需经用户确认后才能终止。

主要功能

  1. 01使用 `/bin/ps` 检测僵尸进程
  2. 02列出进程状态与父进程 ID
  3. 03默认采用仅检测模式
  4. 04通过 `--kill` 发送 `SIGCHLD`
  5. 05终止父进程前须获用户确认

适用场景

  1. 01检查主机上的僵尸进程
  2. 02请求父进程回收已退出的子进程
  3. 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 僵尸进程——它已经死了。只有以下补救方法:

  1. 向父进程发送信号,发送 SIGCHLD,使其回收子进程
  2. 终止父进程,让 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