linux nohupコマンドによるバックグラウンドでのプログラムの実行方法
linuxオペレーティングシステムでバックグラウンドからプログラムを実行する方法は、nohupコマンドを使用します。
Unix/Linuxでは、例えば、あるプログラムをバックグラウンドで実行させたい場合、多くは&プログラムの最後にプログラムを自動的に実行させるために使用されます。
たとえばmysqlをバックグラウンドで実行するには、次の手順に従います。 コードのコピーしかし、多くのプログラムがmysqldのようにデーモンプロセスを作るのではなく、プログラムは普通のプログラムにすぎない可能性があります。一般的には、このプログラムは&エンドを使用しますが、端末が閉じると、プログラムも閉じられます。
バックグラウンドで実行できるようにnohupというコマンドを使用することができます。例えばtestがあります。phpはバックグラウンドで実行する必要があり、バックグラウンドで定期的に実行したい場合はnohupを使用します。nohup /root/test.php &
shellで車に戻った後のヒント:
[~]$ appending output to nohup.out
元のプログラムの標準出力は自動的に現在のディレクトリの下のnohupに変更される.outファイルは、logの役割を果たしています。
しかし、このステップで問題が発生する場合があります。端末を閉じると、プロセスが自動的に閉じられ、nohupが表示されます。out可
端末を閉じた瞬間にサービスが自動的に閉じられるのを見ます。
赤旗Linuxエンジニアに相談した後も、彼は理解できず、私の端末で実行した後、彼が起動したプロセスは端末を閉じた後も運行していた。2回目のプレゼンテーションでは、私と彼が端末を操作したときの詳細が異なることに気づきました。彼はshellにnohupが成功したことを提示した後、端末のキーボードの任意のキーを押してshell入力コマンドウィンドウに戻り、shellにexitを入力することで端末を終了する必要があります。私はnohupが成功するたびにプログラムボタンを閉じて端末を閉じます。そのため、このコマンドに対応するセッションが切断され、nohupに対応するプロセスがshutdownを必要とすることが通知されます。この細部には私と同じように気づかなかった人がいるので、ここに記録しておきました。添付:nohupコマンドリファレンス
Nohupコマンド
用途:コマンドを中断せずに実行します。
構文:nohup Command[Arg...][&]
説明:nohupコマンドは、Commandパラメータと関連するArgパラメータによって指定されたコマンドを実行し、すべての切断(SIGHUP)信号を無視します。ログアウト後にnohupコマンドを使用してバックグラウンドのプログラムを実行します。バックグラウンドのnohupコマンドを実行するには、コマンドの末尾に&(andを表す記号)を追加します。
Nohupコマンドの出力を端末にリダイレクトかどうかにかかわらず、出力は現在のディレクトリのnohupに付加される.outファイルにあります。現在のディレクトリのnohup.outファイルは書き込み不可で、出力は$HOME/nohupにリダイレクトします。outファイルにあります。追加用にファイルを作成または開くことができない場合は、Commandパラメータで指定したコマンドは呼び出せません。標準エラーが端末である場合、指定したコマンドが標準エラーに書かれたすべての出力を標準出力として同じファイル記述子にリダイレクトします。
≪終了ステータス|Exit Status|oem_src≫:コマンドは、次のエクスポート値を返します。
126 Commandパラメータで指定されたコマンドを検索できますが呼び出すことはできません。
127 nohupコマンドでエラーが発生したか、Commandパラメータで指定されたコマンドを検索できません。
それ以外の場合、nohupコマンドの終了状態はCommandパラメータ指定コマンドの終了状態です。
Nohupコマンドとその出力ファイル
nohupコマンド:プロセスを実行しており、アカウントを終了してもプロセスが終了しないと思う場合は、nohupコマンドを使用します。このコマンドは、アカウントを終了/終了した後、対応するプロセスを実行し続けることができます。Nohupとは掛けないという意味です(no hang up)。
このコマンドの一般的な形式は、次のとおりです。nohup command &
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]+ Stopped dd if=/dev/zero of=/dev/null bs=8k count=100000000
[3]- Stopped dd if=/dev/zero of=/dev/null bs=8k count=100000000
一時停止したいタスクを後で実行する場合は、bg%jobnumberを使用して一時停止したタスクをバックグラウンドで実行し続けるとrunningになります。
私の上の2つのタスク番号2と3の後ろにそれぞれ'+'と'-'が付いていることに気づいた人もいるかもしれませんが、この'+'はどういう意味ですか?この'+'は、現在のウィンドウの下でバックグラウンドでデフォルトで呼び出されたタスクを表し、少し違和感を感じて実験をします。