この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、端末を閉じたりログアウトしたりしても処理を続行させるための「nohup」コマンドです。
コマンドを実行している際に、仮想端末(Terminal)の画面を閉じたりログアウトしたりすると、実行中のコマンドも終了してしまいます(コマンドをバックグラウンド実行していても終了する)。
コマンド起動時に「nohup コマンド &」と指定することで、このような場合でもそのままコマンドの実行を続けることができます。
例えば、リモート先で時間のかかる処理を始めたい場合に、「sshでログインし、nohup付きでコマンドを実行し、ログアウトする」という形で活用します。
nohup コマンド [引数] &
※[ ]は省略可能な引数を示しています。
nohupには動作オプションがありません。ヘルプを表示する「--help」と、バージョンを表示する「--version」のみ使用できます。
コマンドを実行している際に、仮想端末を閉じたりログアウトしたりすると、そのシェルで実行中のプロセスにはHUPシグナル(SIGHUP:制御している端末の終了を伝えるシグナル)が送られます ※1。
※1 シグナルについては、「“応用力”をつけるためのLinux再入門」の第16回を参照。
「nohup コマンド &」のようにnohupを付けてコマンドを実行すると、このHUPシグナルを無視させます。つまり、仮想端末を閉じたりログアウトしたりしても、コマンドは終了せず、そのまま処理を続行します。
例えば、「rsync -a ~ /mnt/0825/」を実行してすぐログアウトしたいが、最後までrsyncの処理を続けて欲しい、というような場合には「nohup rsync -a ~ /mnt/0825/ &」のように実行します ※2。
仮想端末を閉じてしまいますから、コマンドからの出力をファイルに保存する仕組みが用意されています。まずはカレントディレクトリの「nohup.out」に保存を試み、ファイルを作成できない場合は、ホームディレクトリにnohup.outを作成します。他のファイル名で保存したい場合は、「nohup コマンド > ファイル名 &」のようにリダイレクトを指定した上でコマンドを実行するとよいでしょう。
nohup コマンド &
nohup rsync -a ~ /mnt/0824/ &
Copyright © ITmedia, Inc. All Rights Reserved.