2017-06-28 4 views
1

バックグラウンドで--forkを使用してプロセスを開始しようとしていますが、起動しますが、PIDを使用してプロセスを終了したいとします。そのために、私は

echo $!> pidfile

を使用してを.pidファイルにフォークプロセスのPIDを格納したい。しかし、これは単に空の文字列を与え、機能していません。私もコードスニペットを添付しています。助けてください。 ありがとうございます!

#!/bin/bash 
start() { 
    mongod --shardsvr --dbpath /user/JCBLivelink/MongoDB/shardA --port 27020 --logpath /user/JCBLivelink/MongoDB/shardA.log --logappend --fork 
    echo $!>/user/JCBLivelink/MongoDB/shardA.pid 
} 
+0

あなたはプロセスのpidを取得するのpgrep monod' '使用できるためにそれを行う持っているmongodから--pidfilepathを指定することができると述べた

。きちんとした解決策ではなく、複数のインスタンスが存在する場合は正しいとは限りませんが、一時的な回避策があります。 –

+0

デーモンは通常2回フォークします。 – ceving

答えて

2

$!は、バックグラウンドプロセスを作成するシェルがある場合にのみ機能します。この場合、mongodはそれを実行しており、シェルはそれについて何も知らない。 、あなたはそれはあなたが

+0

--pidfilepathがトリックを行いました。ありがとう、トン。 –

関連する問題