nohup ノーハップ

英語表記nohup

日本語表記ハングアップ無視実行

正式名称nohup

危険度安全

What does it mean?

端末切断に影響されにくい形でコマンドを起動します。長時間処理をログアウト後も継続させたい時の基本手段です。

Command Quest

nohup を今日の道具にする

端末切断に影響されにくい形でコマンドを起動します。長時間処理...

$ nohup コマンド [引数...]
関連用語0
次のコマンド0
FAQ2
参照5

概要

端末切断に影響されにくい形でコマンドを起動します。長時間処理をログアウト後も継続させたい時の基本手段です。

基本構文

nohup コマンド [引数...]

詳細解説

nohupは、端末切断時に送られるSIGHUPを無視してコマンドを実行するコマンドです。SSH接続を閉じた後も処理を続けたい場面でよく使われます。

多くの場合、裏で実行したいなら&と組み合わせます。また、標準出力と標準エラーはnohup.outなどへ向け直されることがあるため、出力先を明示するのが実務的です。

長期運用や自動起動が必要なら、systemdサービスやジョブスケジューラを使うべきです。

このコマンドを使う場面

SSH越しの長時間処理、ログ生成、手動実行の保守作業、途中で端末を閉じる可能性があるバッチ処理に使います。

まず安全に試す方法

1. nohup sh -c "sleep 5; echo done" > nohup-demo.log 2>&1 &
2. jobs -l
3. tail -f nohup-demo.log

3分ミッション

少しでも手を動かすと定着しやすくなります。終わった項目にチェックを入れてください。

  1. nohupとリダイレクトを組み合わせ、nohup.outへ依存しない実行を試します。

  2. sleep付きの短い処理をnohupで起動し、ジョブ一覧とログを確認します。

資格試験との関連

  • LinuC レベル1
    範囲: 1.01.4 プロセスの生成、監視、終了
    根拠: official
    LinuCレベル1では、プロセスの確認、監視、終了の基礎が問われます。
  • LPIC-1
    範囲: 103.5 Create, monitor and kill processes
    根拠: official
    LPIC-1では、プロセスの確認、監視、終了の基礎が問われます。
  • 共通基礎
    範囲: Linuxコマンド基礎
    根拠: editorial
    試験横断で、nohupはLinux運用の基礎体力を支える重要なコマンドです。

オプション

  • &
    背景で実行するためによく組み合わせます。
    nohup command &
  • 出力リダイレクト
    ログ保存先を明示します。
    nohup command > app.log 2>&1 &

実行結果サンプル

  • nohup sh -c "sleep 2; echo done" > nohup-demo.log 2>&1 & wait
    done

戻り値コード

  • 0 正常終了。コマンド起動に成功しました。
  • >0 起動対象不存在、権限不足などで起動できませんでした。

使用例

  • nohup long-task &
  • nohup sh -c "sleep 10; echo done" > run.log 2>&1 &

よくあるエラー

  • nohupしたのに端末を閉じると困る挙動になった
    原因: 出力先や標準入力の扱いを理解せず起動しました。
    対処: 出力リダイレクトを明示し、必要なら標準入力も閉じます。
  • nohupで常駐化したつもりだった
    原因: nohupは端末切断耐性を与えるだけで、サービス管理機能はありません。
    対処: 継続運用ならsystemdサービスなどを使います。

導入・互換性情報

POSIXで定義されていますが、シェル組み込みとして提供される場合もあります。標準出力や標準エラーの向き先は実装差に注意してください。

注意点 / セキュリティリスク

危険度は低いですが、nohupだけで永続運用できると思い込むと管理が甘くなります。出力先や停止方法まで含めて考える必要があります。

FAQ

  • Q. nohupだけでバックグラウンドになりますか。
    A. 通常は&と組み合わせて裏実行します。
  • Q. screenやtmuxの代わりになりますか。
    A. 一部は重なりますが、対話セッションの継続や再接続まで必要ならscreenやtmuxのほうが適しています。

参照リンク

関連記事