連載
» 2017年08月24日 05時00分 公開

【 nohup 】コマンド――端末を閉じてもログアウトしても処理を続けるLinux基本コマンドTips(137)

本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、端末を閉じたりログアウトしたりしても処理を続行させるための「nohup」コマンドです。

[西村めぐみ,@IT]

この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。

「Linux基本コマンドTips」のインデックス

Linux基本コマンドTips一覧

 本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、端末を閉じたりログアウトしたりしても処理を続行させるための「nohup」コマンドです。

nohupコマンドとは?

 コマンドを実行している際に、仮想端末(Terminal)の画面を閉じたりログアウトしたりすると、実行中のコマンドも終了してしまいます(コマンドをバックグラウンド実行していても終了する)。

 コマンド起動時に「nohup コマンド &」と指定することで、このような場合でもそのままコマンドの実行を続けることができます。

 例えば、リモート先で時間のかかる処理を始めたい場合に、「sshでログインし、nohup付きでコマンドを実行し、ログアウトする」という形で活用します。



nohupコマンドの書式

nohup コマンド [引数] &

※[ ]は省略可能な引数を示しています。





nohupの主なオプション

 nohupには動作オプションがありません。ヘルプを表示する「--help」と、バージョンを表示する「--version」のみ使用できます。



nohupコマンドの使いどころ

 コマンドを実行している際に、仮想端末を閉じたりログアウトしたりすると、そのシェルで実行中のプロセスには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 コマンド > ファイル名 &」のようにリダイレクトを指定した上でコマンドを実行するとよいでしょう。

※2 rsyncはディレクトリの同期を行うコマンド(第82回第83回)。「rsync -a ~ /mnt/0824/」は自分のホームディレクトリを、/mntにマウントしたディスクの/0824ディレクトリ下にコピーするという意味。今回の例ではバックグラウンドで実行するという前提があるため、メッセージを出力していない。実行中の処理内容を出力したい場合は「-v」オプションを併用する。


コマンド実行例

nohup コマンド &

nohup rsync -a ~ /mnt/0824/ &




nohupコマンドの動作を試す

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。