概要
端末切断に影響されにくい形でコマンドを起動します。長時間処理をログアウト後も継続させたい時の基本手段です。
基本構文
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分ミッション
少しでも手を動かすと定着しやすくなります。終わった項目にチェックを入れてください。
-
nohupとリダイレクトを組み合わせ、nohup.outへ依存しない実行を試します。
-
sleep付きの短い処理をnohupで起動し、ジョブ一覧とログを確認します。
資格試験との関連
-
LinuC レベル1
範囲: 1.01.4 プロセスの生成、監視、終了根拠: officialLinuCレベル1では、プロセスの確認、監視、終了の基礎が問われます。
-
LPIC-1
範囲: 103.5 Create, monitor and kill processes根拠: officialLPIC-1では、プロセスの確認、監視、終了の基礎が問われます。
-
共通基礎
範囲: Linuxコマンド基礎根拠: editorial試験横断で、nohupはLinux運用の基礎体力を支える重要なコマンドです。
実行結果サンプル
-
nohup sh -c "sleep 2; echo done" > nohup-demo.log 2>&1 & waitdone
戻り値コード
- 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のほうが適しています。
参照リンク
- カテゴリー: Process And Jobs
- レベル: Practical
- 対応試験: LinuC, LinuC レベル1, LPIC, LPIC-1, 共通基礎