宮崎智広 この記事の監修:宮崎智広(Linux実務・教育歴20年以上・受講者3,100名超)
「SSHでサーバーに接続して長時間かかるコマンドを実行していたが、接続が切れたら処理が止まってしまった」という経験はないだろうか。

この問題の根本はLinuxのプロセスとターミナルセッションの関係にある。SSH接続が切れるとHUPシグナルが送られ、セッションに紐付いたプロセスがすべて終了してしまう。

これを防ぐために使うのがnohupbgdisownだ。それぞれ仕組みが異なり、状況に応じた使い分けが重要になる。本記事で3つのコマンドの違いと使い方を体系的に整理しよう。

【この記事でわかること】
・nohup・bg・disown それぞれの仕組みと使い分け
・SSH切断後もプロセスを継続させる方法
・バックグラウンド実行とジョブ管理の基本
・出力のリダイレクト先の管理方法

「このままじゃマズい」と感じていませんか?
参考書を開く気力もない、同年代に取り残される不安——
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
図解60P/登録10秒/解除も3秒 / 詳細はこちら

プロセスとHUPシグナルの関係


SSH接続が切れると、そのセッションに属するすべてのプロセスにSIGHUP(ハングアップシグナル)が送られる。多くのプロセスはSIGHUPを受け取ると終了する。これが「SSH切断 → 処理が止まる」という現象の原因だ。

nohup を使う方法


nohupはコマンドの前に付けて実行することで、HUPシグナルを無視してプロセスを継続させる。

[pakira@Tiger ~]$ nohup コマンド名 &

末尾の&でバックグラウンド実行にする。標準出力は自動的にnohup.outに書き出される。

[pakira@Tiger ~]$ nohup ./batch.sh > /var/log/batch.log 2>&1 & [1] 12345

出力先を明示的に指定するほうが管理しやすい。

bg コマンドを使う方法


すでにフォアグラウンドで実行中のコマンドを途中からバックグラウンドに移動させるには、Ctrl+Zでサスペンド(一時停止)してからbgコマンドを使う。

[pakira@Tiger ~]$ ./long_process.sh ^Z [1]+ Stopped ./long_process.sh [pakira@Tiger ~]$ bg %1 [1]+ ./long_process.sh &

ただしbgだけではHUP対策にならない。SSH切断時に止まる点は変わらないため、disownと組み合わせる必要がある。

disown を使う方法


disownはジョブをシェルのジョブリストから外し、HUPシグナルが送られないようにするコマンドだ。bgでバックグラウンドにしたあとにdisownを実行することで、SSH切断後もプロセスを継続させられる。

[pakira@Tiger ~]$ ./long_process.sh & [1] 12345 [pakira@Tiger ~]$ disown %1

3つの手法の比較


手法タイミングHUP対策出力管理
nohup コマンド &実行前ありnohup.outまたは指定先
Ctrl+Z → bg → disown実行後あり端末に出力される場合あり
コマンド &のみ実行前なし端末に出力される

実務での使い分け


・長時間バッチ処理を最初からバックグラウンドで動かしたい → nohup
・途中で「あ、これ長くかかりそうだ」と気づいた → Ctrl+Z → bg → disown
・ターミナルを閉じても続けたい → どちらもdisownまたはnohupが必要

まとめ


コマンド例動作
nohup コマンド &HUP無視でバックグラウンド実行する
bg %ジョブ番号サスペンド中のジョブをバックグラウンドで再開する
disown %ジョブ番号ジョブをシェルリストから外してHUP対策をする

SSH接続中の長時間処理は必ずnohupdisownを組み合わせて実行する習慣をつけよう。これだけで「接続切れで全部やり直し」という悲劇を防げる。

Linuxのプロセス管理をもっと体系的に学びたくないですか?

コマンドの断片を覚えるだけでは、本番環境のトラブルには対応できません。
ネットの切れ端の情報をコピペするだけでなく、現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、『Linuxサーバー構築入門マニュアル(図解60P)』を完全無料でプレゼントしています。

「独学の時間がもったいない」「プロから直接、現場の技術を最短で学びたい」という本気の方には、2日で実務レベルのスキルが身につく【初心者向けハンズオンセミナー】も開催しています。

無料メルマガで学習を続ける

Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。

登録無料・いつでも解除できます

暗記不要・1時間後にはサーバーが動く

3,100名以上が実践した「型」を無料で公開中

プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。

登録10秒/合わなければ解除3秒 / 詳細はこちら

Linux無料マニュアル(図解60P) 名前とメールで30秒登録
宮崎 智広

この記事を書いた人

宮崎 智広(みやざき ともひろ)

株式会社イーネットマーキュリー代表。現役のLinuxサーバー管理者として15年以上の実務経験を持ち、これまでに累計3,100名以上のエンジニアを指導してきたLinux教育のプロフェッショナル。「現場で本当に使える技術」を体系的に伝えることをモットーに、実践型のLinuxセミナーの開催や無料マニュアルの配布を通じてLinux人材の育成に取り組んでいる。

趣味は、キャンプにカメラ、トラウト釣り。好きな食べ物は、ラーメンにお酒。休肝日が作れない、酒量を減らせないのが悩み。最近、ドラマ「フライトエンジェル」を観て涙腺が崩壊しました。