GNU/Linux >> Linux の 問題 >  >> Linux

LinuxのNohupコマンドを使用すると、ログアウトした後でもコマンドを実行できます

Nohupは「電話を切らない」の略です。ログアウトした後でもプロセスを実行できるようにするのは非常に便利なコマンドです。

最も一般的な使用法の1つは、SSH接続を介して時間のかかるコマンドを実行することです。 SSHセッションがドロップする可能性があると思われる場合は、次のようにnohupを指定してコマンドを使用できます。

nohup your_command &

nohupコマンドとは何ですか?

Nohupはラッパーと見なすことができます。コマンドの前に nohupを付けます このように:

nohup COMMAND ARGS ....

Nohup の目的は、 SIGHUPを傍受して防止することです。 コマンドに到達することからの信号 。

コマンドの前に nohupを付ける場合 、入力は読み取り不可能なファイルからリダイレクトされます( nohup COMMAND )。簡単に言うと、 nohupでコマンドを呼び出さないでください そのコマンドに入力を送信する必要がある場合。 nohup コマンドの場合、無人で実行できる必要があります。

Nohup 最初に出力を。/nohup.outにリダイレクトしようとします または、 〜/ nohup.outに送信します 必要なら。次のように、出力をリダイレクトする場所を決定することもできます。

nohup COMMANDS >/path/to/output/file

nohupについて言うことはあまりありません 、オプションの長いリストはありません。 –ヘルプのみがあります および–バージョン

nohupコマンドの使用例

nohupを使用してスクリプトを実行するのはこれと同じくらい簡単です。

nohup ./nhp.sh

nohup プロセスをバックグラウンドにフォークしませんでした。 Nohup SIGHUPを傍受するためだけにあります 信号。コマンドが実行されたら、続行してターミナルを閉じることができます。プロセスが実行中であることを警告します。殺したいことを確認してください。

端末を閉じると、すべての子プロセスがSIGHUPシグナルを受信しました。 Nohupは、その信号が私のコマンドに到達するのを防ぎました。次の図は、端末がまだ実行されている間のコマンドに関するプロセス情報を示しています。

PPIDが表示されますか?これが親プロセスIDです。ターミナルを閉じるようにリクエストすると、PPIDのすべての子が SIGHUPを受け取りました。 信号。 Nohup その信号がスクリプトに到達するのを防ぎました。親プロセスが終了し、スクリプトが孤立しました。プロセスが孤立すると、自動的に1(systemdまたはinit)が親として割り当てられます。

ご覧のとおり、 nohupの使用法を示すことはそれほど難しくありません。 。非常に簡単なコマンド。次のように、バックグラウンドでプロセスをフォークできます:

nohup ./nhp.sh &

同様に、出力をどこにリダイレクトするかを決定することもできます:

nohup ./nhp.sh >/path/to/file &

Linuxシステムをシャットダウンまたは再起動すると、コマンドが強制終了されることに注意してください。シャットダウンまたは再起動を要求すると、すべてのプロセスが SIGTERMを受け取ります。 次にSIGKILL 。これらの信号は nohupによって傍受されません

SSH接続を介したNohup

nohupを学ぶとすぐに頭に浮かぶ使用法の1つ SSHを介してリモートコンピュータでプロセスを開始できるようにすることです。論理的には、 nohupでコマンドを実行します SSH接続からログオフしても、プロセスは引き続き実行されます。

nohup COMMAND &

一般的な問題の1つは、ログオフ中にSSHが「ハング」することがあることです。これは、SSHがバックグラウンドプロセスとの間のデータストリームの損失を拒否することが多いためです。その後、プロセスが終了するまで「ハング」します。

この問題は、多くの場合、3つのデータストリームすべてをリダイレクトすることで対処できます。

nohup COMMAND >./nohup.out 2>./nohup.err &

この簡単な記事がSSHセッションのより良い使用に役立つことを願っています。ご質問やご提案がございましたら、下にコメントを残してください。


Linux
  1. Linuxエコーコマンド

  2. Linux で絶対に実行してはならない 10 の致命的なコマンド

  3. Nohup コマンドの例 – ログアウト後も実行し続けるコマンドを実行する

  1. 知っておく必要のある10の基本的なLinuxコマンド

  2. Linux:再起動後にコマンドを 1 回実行するようにスケジュールする (RunOnce と同等)

  3. ユーザーのログアウト後も nohup を使用してコマンドを実行し続ける方法は?

  1. Linuxコマンドでの(!)記号または演算子の10の驚くべき不思議な使用法

  2. Linuxdfコマンドを最大限に活用するための4つのヒント

  3. AからZのLinuxコマンド