103.5標準
long-taskをSIGHUPを無視する設定で開始する。
標準出力と標準エラーをtask.logへまとめ、現在のシェルは完了を待たない。
適切なコマンドはどれか。
× 不正解
nohupはコマンドがSIGHUPを無視するようにして起動する。シェルをすぐ使うには&を別途付け、出力先も明示する。
詳細解説
正しい
nohup long-task > task.log 2>&1 &nohupでSIGHUPを無視し、出力をまとめ、&で非同期実行する。
正解。全条件を満たす。
誤り
long-task > task.log 2>&1出力は保存できるが、SIGHUPの扱いを変えず完了も待つ。
nohupと&がない。
誤り
nohup long-task > task.log 2>&1SIGHUPは無視するが、&がないため現在のシェルは通常完了を待つ。
SIGHUP対策はあるが同期実行になる。
誤り
long-task &> task.logBashの出力統合はできるが、nohupによるSIGHUP対策がない。
出力と非同期だけでSIGHUP対策がない。
実際に確かめる
一時的な検証環境で実行できる例です。
nohup bash -c 'printf done' > /tmp/kp-nohup.log 2>&1 & TASK_PID=$!; wait "$TASK_PID"; cat /tmp/kp-nohup.log; rm /tmp/kp-nohup.log期待される結果
done理解のポイント
- nohupはSIGHUPを無視
- &は非同期実行
- 出力先を明示する
確認時の注意
- 確認環境: GNU coreutils 9.x / Bash 5.2
基礎のおさらい
nohup.out
標準出力が端末の場合、nohupは通常nohup.out等へ切り替える。明示リダイレクトの方が管理しやすい。
完全なデーモン化ではない
nohupはサービス監視や再起動を提供しない。長期サービスにはsystemd等を使う。
問題IDKP-103-082
確認環境GNU coreutils 9.x / Bash 5.2
最終技術確認2026-08-12
誤り・権利侵害を報告