2017-06-28 1 views
1

Ich versuche, einen Prozess im Hintergrund mit --fork zu starten und es wird gestartet, aber ich möchte auch den Prozess mit PID töten. Dafür möchte ich die PID von gegabelten Prozess speichern in .pid Datei

echo $!> pidfile

verwenden, aber dies nicht funktioniert, nur eine leere Zeichenfolge zu geben. Ich füge das Code-Snippet auch bei. Bitte helfen Sie. Vielen Dank im Voraus!

#!/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

zu tun haben könnte, verwenden Sie 'pgrep monod' die pid des Prozesses zu erhalten. Es ist keine ordentliche Lösung und auch nicht korrekt, wenn es mehr als eine Instanz gibt. Es handelt sich jedoch um eine temporäre Problemumgehung, die für Sie funktionieren könnte. –

+0

Daemons Gabeln normalerweise zweimal. – ceving

Antwort

2

$! funktioniert nur, wenn die Schale ist es, was die backgrounded Prozess erstellt. In diesem Fall macht mongod es und die Shell weiß nichts darüber.

Das heißt, Sie --pidfilepath-mongod angeben können dafür sorgen, dass für Sie

+0

--pidfilepath hat den Trick gemacht. Danke vielmals. –

Verwandte Themen