Windows system >> Windowsの知識 >  >> Linuxシステムチュートリアル >> LinuxシステムFAQ >> Linuxはどのようにバックグラウンドでプロセスを実行するか

Linuxはどのようにバックグラウンドでプロセスを実行するか

  

Linuxは現在のコマンドが終了した後に直接プロセスを実行するか、シェルウィンドウを閉じて、プロセスは終了します。

バックグラウンドでプロセスを実行する方法

方法1

nohupコマンドを使用すると、nohupコマンド自体はno hung upを意味し、シェルは閉じられず閉じられません。プロセスを中止します。

nohupコマンドを使用して、コマンドをバックグラウンドで実行します。ジョブ-lを実行するとバックグラウンドが実行されます。

ピットを比較する場所は、シェルが直接閉じられている場合はバックグラウンドコマンドも閉じますシェルを終了するには、最初にコマンドを実行してからバックグラウンドで実行するために閉じる必要があります。

方法2

スクリプトを使用してバックグラウンドで実行します。たとえば、mongod --dbpath =" abc"を実行してmongodbを起動します。

最初にスクリプトtest.shを作成します。内容は次のようになります。

#!/bin /sh

mongod --dbpath =" abc> start mongodb& < Br>

#これは重要です。そうしないと、現在のコマンドを終了できません。

次にtest.shを直接実行します。この時点でmongodbはシャットダウンシェルを起動して実行しても停止しません。問題が発生しています。なぜなら、test.shで実行している

が即座に終了すると説明しているのです。バックグラウンドで実行し、test.shを実行している親プロセスが現在のシェルです(シェルのプロセス番号を表示するにはecho $$を参照)、test.shは実行されますが、mongodは実行されず、test.shは非常に責任があります。 Mongodはps -efを介してシステムのinitプロセスにホストされています。 Grep mongodは、mongodの親プロセスが1であることがわかります。

方法3

setsidを介してmongodの親プロセスをinitプロセスに直接設定します。

setsid mongod --dbpath =" abc" mongodbを起動し、mongodプロセスを確認して見つけます。親プロセスは1です。

参照:http://www.cnblogs.com/lwm-1988/archive/2011/08/20/2147299.html

Copyright © Windowsの知識 All Rights Reserved