Skip to content

原文(日本語に翻訳)

macOSでターミナル切断後に孤立したClaudeプロセスが残っていた問題を修正

原文(英語)

Fixed orphaned CC processes after terminal disconnect on macOS

概要

macOSでターミナルセッションが切断(クローズやSSHセッションの終了など)された後も、Claude Code(CC)のプロセスがバックグラウンドで動き続けてしまう問題が修正されました。このような「孤立プロセス」はシステムリソース(CPU・メモリ)を消費し続けるため、パフォーマンスに悪影響を与えていました。修正により、ターミナルが切断された際にClaudeプロセスが適切に終了するようになります。

基本的な使い方

bash
# 修正前: ターミナルを閉じてもClaudeプロセスが残り続けることがあった
# ps aux | grep claude で確認できた

# 修正後: ターミナル切断時にClaudeプロセスが適切に終了する
# ターミナルを閉じた後:
ps aux | grep claude
# → Claudeプロセスは表示されない(正常終了)

実践例

ターミナル切断後のプロセス確認

bash
# 別ターミナルからプロセスを確認する方法(修正前の問題の確認)
ps aux | grep -i claude | grep -v grep

# 修正前は以下のような孤立プロセスが表示されていた
# username  1234  99.0  5.0  claude --session xxx

# 修正後: ターミナルを閉じると自動的にプロセスが終了する

SSHセッションでのClaude Code使用

bash
# リモートサーバーにSSH接続してClaude Codeを使用するシナリオ
ssh user@remote-server
claude

# SSHセッションが切断された場合(ネットワーク障害、タイムアウトなど)
# 修正後: Claude Codeプロセスはセッション切断を検知して適切に終了する

# サーバー側でプロセスが残っていないことを確認
ssh user@remote-server "ps aux | grep claude"

tmux/screenセッションとの組み合わせ

bash
# tmuxセッションでClaude Codeを実行している場合
tmux new-session -s claude-session
claude

# tmuxセッションを「デタッチ」して後で再接続する場合は
# tmux detach で正常にデタッチ(プロセスは継続)
# Ctrl+B D

# ターミナルウィンドウ自体を閉じた場合(強制切断):
# 修正後: Claudeプロセスは適切に終了する

# 注意: tmuxのdeatchはCtrl+B Dで行うこと。
# ターミナルウィンドウを直接閉じると孤立プロセスが発生しにくくなった

注意点

  • この修正はmacOS環境特有の問題への対処です
  • Linuxでは同様の問題の影響が異なる場合があります
  • ターミナル「切断」とウィンドウ「クローズ」の違い: 正常なCloseはSIGHUPシグナルを送りますが、ネットワーク切断などは異常切断となります
  • tmuxscreen などのターミナルマルチプレクサを使用している場合、デタッチ(detach)ではプロセスは継続します(これは意図的な動作です)
  • macOSのActivity Monitorでプロセスを監視することで、修正の効果を確認できます

関連情報