Linuxシステムのシェルを終了すると、通常、実行中のすべてのプロセスが終了するか、ハングアップします。では、シェル/ターミナルを出てもプロセスを実行し続けたい場合はどうしますか?ここでnohupコマンド 入ってくる。
Nohupコマンド
Nohup、ハングアップなしの略は、シェルまたはターミナルを終了した後もプロセスを実行し続けるLinuxシステムのコマンドです。
Nohupは、プロセスまたはジョブがSIGHUP(Signal Hang UP)シグナルを受信するのを防ぎます。これは、端末を閉じるか終了するときにプロセスに送信される信号です。このガイドでは、nohupコマンドを確認し、その使用方法を示します。
Nohupコマンド構文
Nohupコマンドの構文は次のとおりです;
nohup command arguments
または
nohup options
コマンドがどのように機能するか見てみましょう
Nohupのバージョンを確認する
以下の構文を使用して、Nohupのバージョンを確認することから始めることができます
nohup --version
出力
Nohupを使用してプロセスを開始する
プロセス/ジョブを実行し続けたい場合は、コマンドの前にnohup
を付けてください 以下に示すように。ジョブは引き続きシェルで実行され、シェルまたはターミナルを終了しても強制終了されません。
nohup ./hello.sh
出力
上記の出力から、コマンドの出力はnohup.out
に保存されています。 この実行を確認するには、
cat nohup.out
出力
さらに、図のように出力を別のファイルにリダイレクトすることを選択できます
nohup ./hello.sh > output.txt
もう一度、ファイルの実行を表示するには
cat output.txt
出力
ファイルにリダイレクトし、標準エラーと出力にリダイレクトするには、 > filename 2>&1
を使用します 示されている属性
nohup ./hello.sh > myoutput.txt >2&1
出力
Nohupを使用してバックグラウンドでプロセスを開始する
バックグラウンドでプロセスを開始するには、&
を使用します コマンドの最後にある記号。この例では、google.comにpingを送信してバックグラウンドに送信しています。
nohup ping google.com &
出力
シェルを再開するときにプロセスを確認するには、pgrep
を使用します 示されているコマンド
pgrep -a ping
出力
実行中のプロセスを停止または強制終了する場合は、kill
を使用してください 示されているように、コマンドの後にプロセスIDが続きます
kill 2565
出力
概要
- nohupコマンドを使用して実行されるすべてのプロセスは、シェルを終了してもSIGHUP信号を無視します。
- nohupコマンドを使用してジョブを開始または実行すると、ユーザーはstdinを使用できなくなります。
- デフォルトでは、
nohup.out
stdoutおよびstderrのデフォルトファイルとして使用されます。