Claude Code 開発時にバックグラウンド起動の維持でつらかったけど tmux で良い感じになったメモ 2026 年 4 月時点
Claude Code 開発時にバックグラウンド起動の維持でつらかったけど tmux で良い感じになったメモ 2026 年 4 月時点 です。
背景
Claude Code で開発しているときに開発環境として使うときに、よくバックグラウンド起動するじゃないですか。
仮に index.js で何かしらサーバーが常時起動してほしいとして、バックグラウンドとして起動してとお願いすると node index.js & あたりでバックグラウンドプロセスで Claude Code が起動してくれる。けれど、その Claude Code セッションに紐づいてるので、なんか不穏なタイミングで道連れになって落ちてる。
本番環境時は pm2 で常時起動で頑張るという着地は見えてきてるのですが、問題は開発環境のときで、まだまだ開発内容が本番ほど固めきらないのに pm2 であれこれやるのは、まだ大変だったりします。
バックグラウンド起動の維持でつらかったけど tmux で良い感じになった
ここで tmux です。ターミナルの中にぶら下げて、独立した作業空間を作れるツールですね。
これが入っている前提なんですが、Claude Code に「tmux 前提で~~~のバックグラウンド起動をしてください」とお願いすると、Claude Code セッションとは独立して起動プロセスが立ち上がっているので管理がしやすくなります。
# 起動
tmux new-session -d -s dev 'node index.js'
# 確認
tmux ls
tmux capture-pane -t dev -p
# 停止
tmux kill-session -t dev
ポイントは -d でデタッチ起動、-s dev で名前をつけることです。名前があるから後から操作できます。便利。
なお、デタッチ起動とは tmux の空間でプロセスは動いているけど、自分のターミナルには出てこない状態。バックグラウンドで静かに動いてる状態にする起動です。まさにうってつけ。
私はよく「セッションは dev で今回の起動方法でデタッチ起動でお願いします。」とかお願いして、だいたいうまく動いてくれてますね。
{
"scripts": {
"dev": "tmux new-session -d -s dev 'node index.js'",
"dev:stop": "tmux kill-session -t dev",
"dev:status": "tmux ls",
"dev:restart": "npm run dev:stop; npm run dev"
}
}
pm2 の start/stop/status/restart 風にして、軽く npm scripts 内で封じ込めたいときは、少し発展させてこうしています。
でもしっかりやるなら冪等性(何度やっても同じ結果が得れる硬さ)が大事なので、npm run dev を2回叩くと duplicate session: dev エラーではじかれるのを避けるため、手堅くやるなら、
# 冪等にするなら
tmux kill-session -t dev 2>/dev/null || true
tmux new-session -d -s dev 'node index.js'
こういった形で 2>/dev/null || true で「なければスルー」にするやりかたにします。これで何回叩いても同じ結果になりますね。
{
"scripts": {
"dev": "tmux kill-session -t dev 2>/dev/null || true && tmux new-session -d -s dev 'node index.js'",
"dev:stop": "tmux kill-session -t dev",
"dev:status": "tmux ls",
"dev:restart": "npm run dev:stop; npm run dev"
}
}
それも踏まえた npm scrtips の例も置いときます。ただ、いきなり開発初頭から頑張らなくてもいいかも。私はよく使ってます~。