mcpField
P
process-cleanup

process-cleanup

github.com/paulrbergクラウド・DevOps10278 回インストール今日更新
リポジトリ

process-cleanup について

process-cleanupは、`/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 することはできません。対処方法は次の 2 つです。

  1. 親プロセスにシグナルを送ることで、SIGCHLD を受信させ、子プロセスを回収させます
  2. 親プロセスを終了させることで、孤児プロセスを init/launchd に引き継がせて回収させます

重要:プロセスの状態を確認する際は ps を使用してください

プロセスの状態を確認する際は、必ず BSD 版の ps を使用してください。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)は絶対に終了させないでください

コメント