LinuCレベル1 Linuxのインストールと仮想マシン・コンテナの利用 問30
Linuxのインストールと仮想マシン・コンテナの利用/プロセスの生成、監視、終了時間のかかる処理を端末から開始し、その端末からログアウトした後も処理を実行し続けさせたい。方法として適切なものはどれか。
当サイトのオリジナル問題(LinuCレベル1の出題範囲「Linuxのインストールと仮想マシン・コンテナの利用」に対応。実際の試験問題ではありません)
- Aexec コマンド のように、execを付けて実行する
- Bnohup コマンド & のように、nohupを付けて実行する
- Ctime コマンド & のように、timeを付けて実行する
- Dnice コマンド & のように、niceを付けて実行する
正解:B
解説
端末からログアウトすると、その端末から起動したプロセスには通常SIGHUP(ハングアップ)シグナルが送られ、多くのプログラムはこれで終了します。nohup はSIGHUPを無視するように設定してコマンドを実行するため、末尾に & を付けてバックグラウンドで起動すれば、ログアウト後も処理が続きます。標準出力が端末の場合、出力は既定でカレントディレクトリの nohup.out に書き込まれます。同じ目的には、端末セッションそのものを切り離して後から再接続できる screen や tmux も使えます。
選択肢ごとの解説
- A誤り。execは現在のシェルをそのコマンドで置き換えて実行する組み込みコマンドで、SIGHUPを無視させる働きはありません。
- B正しい。nohupはSIGHUPを無視させてコマンドを実行するため、& と組み合わせればログアウト後も処理が続きます。
- C誤り。timeはコマンドの実行にかかった時間を計測して表示するもので、ログアウト後の継続実行とは関係ありません。
- D誤り。niceはプロセスの実行優先度(nice値)を変えて起動するもので、ログアウト時に終了するかどうかには影響しません。