ich versuchte pid des Prozesses zu bekommen ich mit setsid
lief und das sollte im Hintergrund wie folgt auszuführen:
test.sh:
#/bin/bash
setsid nohup ./my_program &
echo $!
wenn ich ./test.sh
führen Sie es druckt eine pid von my_program
Prozess und es ist genau was ich brauche. Aber wenn führen diese Befehle einen nach dem anderen in meiner Schale wie folgt aus:
$ setsid nohup ./my_program &
$ echo $!
Es gibt mir eine pid von setsid
Befehl (oder etwas anderes sein, aber es fast allen Zeiten gibt mir pid von my_program
minus eins) .
Was passiert hier? Warum unterscheiden sich die Ergebnisse von Befehlen, die ich im Terminal selbst ausgeführt habe, von den Ergebnissen von test.sh
?
Btw, können Sie einige einfache Art des Prozesses wissen, die ich mit Sesid begann und die ich im Hintergrund ausführen muss?
Vielleicht hat es mit Sesid's Forking Verhalten zu tun? Es gibt nur Forks aus, wenn es der Prozessgruppenleiter ist; siehe [hier] (http://stackoverflow.com/a/9685973/1735215). – 0range
Um die PID eines Prozesses über Sezid zu erhalten, können Sie [dies] versuchen (http://Stackoverflow.com/a/19767312/1735215) – 0range
@ 0range yeah, ich denke, erste Link ist genau das, was ich brauchte. Danke vielmals! Könnten Sie das bitte als Antwort schreiben, damit ich es annehmen kann? – PepeHands