Windows system >> Windowsの知識 >  >> Linuxシステムチュートリアル >> Linuxについて >> LinuxシステムガイドのNohupコマンド

LinuxシステムガイドのNohupコマンド

  

Linuxシステムの動作、さまざまな理由により、実行中に一部のプログラムが切断されます。Linuxではnohupコマンドを使用する必要があります。このコマンドを使用してください。プログラムをバックグラウンドで実行し、一緒に学びましょう。メソッド

は、Linuxオペレーティングシステムでは、バックグラウンドからのプログラムを実行されている、それがnohupコマンドを使用することです。

たとえばUnix /Linuxでは、プログラムをバックグラウンドで実行する場合、多くのユーザーはプログラムの最後に&を使用してプログラムを自動的に実行します。

たとえば、mysqlをバックグラウンドで実行するには、次のようにします。

コードは次のとおりです。

/usr /local /mysql /bin /mysqld_safe– user = mysql&

しかし、多くのプログラムを追加することは、mysqldのようなデーモンではないかもしれません。通常、このプログラムは&で終わっていますが、端末が閉じられるとプログラムは閉じられます。

バックグラウンドで実行するには、nohupコマンドを使用できますたとえば、バックグラウンドで実行する必要があるtest.phpがあり、それをバックグラウンドで定期的に実行する場合は、nohupを使用します。

コードは次のとおりです。

nohup /root/test.php&

シェルプロンプトで復帰した後:

[〜] $ nohup.outへの$の出力を追加します。

オリジナルプログラムの標準出力は自動的にカレントディレクトリのnohup.outファイルにリダイレクトされます。これはログとして機能します。

ただし、この手順で問題が発生することがあります端末を閉じると、プロセスが自動的に閉じられますnohup.outを表示すると、端末を閉じるとサービスが自動的に閉じることを確認できます。

Red Flag Linuxエンジニアに相談したところ、彼は理解できませんでした私の端末で実行した後、彼が開始したプロセスは、端末が閉じられた後もまだ実行中でした。 2度目に見せたときに、端末の操作とは異なる詳細があることがわかりました。シェルでnohupをプロンプトした後も、端末のキーを押してシェル入力コマンドウィンドウに戻る必要があります。シェルでexitと入力して端末を終了し、nohupが正常に実行された後は毎回[プログラムの閉じる]ボタンをクリックして端末を閉じます。 。したがって、この時点でコマンドに対応するセッションは切断され、nohupに対応するプロセスは一緒にシャットダウンする必要があることが通知されます。この詳細は私には気付かれなかったので、ここで記録しました。

添付:nohupコマンドリファレンス

nohup command

目的:電話を切らずにコマンドを実行します。

構⽂:nohup Command [Arg…] [&]

説明:nohupコマンドは、Commandパラメータとそれに関連するArgパラメータで指定されたコマンドをすべてのハングアップを無視して実行します(SIGHUP)。シグナルログアウトした後に、nohupコマンドを使用してプログラムをバックグラウンドで実行します。 nohupコマンドをバックグラウンドで実行するには、コマンドの末尾に&('と'の記号)を追加します。

nohupコマンドの出力が端末にリダイレクトされるかどうかにかかわらず、出力は現在のディレクトリのnohup.outファイルに追加されます。現在のディレクトリのnohup.outファイルが書き込み可能でない場合、出力は$ HOME /nohup.outファイルにリダイレクトされます。追加用にファイルを作成または開くことができない場合、Commandパラメーターで指定されたコマンドは呼び出し可能ではありません。標準エラーが端末の場合、指定されたコマンドを標準エラーに書き込むすべての出力は、標準出力として同じファイル記述子にリダイレクトされます。

終了ステータス:このコマンドは次の終了値を返します。

126 Commandパラメーターで指定されたコマンドは見つかりますが、呼び出すことはできません。

127 nohupコマンドにエラーがあるか、Commandパラメーターで指定されたコマンドが見つかりません。

それ以外の場合、nohupコマンドの終了ステータスは、Commandパラメータで指定されたコマンドの終了ステータスです。

nohupコマンドとその出力ファイル

nohupコマンド:プロセスを実行していて、アカウントからログアウトしてもプロセスが終了しないと思われる場合は、nohupコマンドを使用できます。このコマンドは、アカウントからログアウトしたり端末を閉じたりした後も、対応するプロセスを実行し続けることができます。 Nohupは電話を切らないことを意味します。

コマンドの一般形式は次のとおりです。

コードは次のとおりです。

nohupコマンド&

nohupコマンドを使用したジョブの送信

nohupコマンドを使用してジョブを投入すると、デフォルトでは、出力ファイルが指定されていない限り、ジョブからのすべての出力はnohup.outというファイルにリダイレクトされます。

コードは次のとおりです。 >

nohup command》 myout.file 2》& 1&

上記の例では、出力はmyout.fileファイルにリダイレクトされます。

仕事を使って仕事を表示します。

fg%jobnumberを使用してタスクをフォアグラウンドで実行し、フォアグラウンドでタスクを閉じたい場合はCtrl + cキーを押しますが、タスクを一時停止する場合はCtrl + zキーを押します。タスクは一時停止状態になります。

[root @ wangdm〜22:51#81]#jobs

[2] + = /dev /null = /dev /nullの場合bd = 8k count = 100000000 < Br>

[3] - = /dev /zero of = /dev /null bs = 8k count = 100000000

一時停止したいタスクが後で実行され続ける場合は、bg%jobnumberを使用できます。この一時停止したタスクがバックグラウンドで実行され続けると、実行中になります。

上記の2と3の2つのタスク番号の後に‘ +’と‘ - &rsquoが表示されることがあります。;、これ‘ +’はどういう意味ですか?この‘ +’は、デフォルトで現在のウィンドウの下のバックグラウンドで呼び出されるタスクです。実験を実行するのは少し面倒です:

上記の2つのタスクはすべて停止状態、通常の状態です。バックグラウンドでタスクを実行したままにする場合は、bg%jobnumberコマンドを実行しますbgタスク2に直接入るとアクティブになります、つまりこのウィンドウでは、‘ +’のタスク2でバックグラウンドがアクティブになります。さて、これで3‘ +’を繰り返すことができます、今では理解されるはずです; fgはこの状況と同じです、興味のある友達が試すことができます

[root @ wangdm〜 23:09#86]#bg

[2] + dd if /dev /null = /dev /null bs = 8k = 100000000&

[root @ wangdm〜 23:09#87]#jobs

[2] - = /dev /zero = = /dev /nullの場合bs = 8k = 100000000&

[3] + = /dev /null = = /dev /nullの場合bd = 8kカウント= 100000000

[root @ wangdm〜23:09#88]#bg

[3] + dd = /dev /zero /= /dの場合Ev /null bs = 8k = 100000000&

[root @ wangdm〜23:11#89]#jobs

[2] - dd if = /dev /zero of = /dev /null bs = 8kカウント= 100000000&

[3] + = /dev /nullの場合= /dev /null bs = 8kカウント= 100000000&

さらに、ftpのアップロードとダウンロードをバックグラウンドで実装できる、一般的に使用されている2つのftpツールncftpgetとncftpputがあります。したがって、これらのコマンドを使用してバックグラウンドでファイルをアップロードおよびダウンロードできます。

上記はLinuxでのnohupの使用方法ですが、このコマンドを使用した後にプログラムが不正に切断されることはなく、常にバックグラウンドで実行されることになります。

Copyright © Windowsの知識 All Rights Reserved