Red5 unter Debian, geben Sie PID aus

537
milks

Ich fummle mit diesem durch, als Neuling mit allen Sachen Linux also bitte Geduld :)

Ich möchte die Prozess-ID eines Programms in eine Datei ausgeben. Aus meinen Lesungen wird dies im Allgemeinen durch eine spezielle pling-Variable erreicht, die von linux beibehalten wird:

make_something_run.sh & echo $! > /var/run/someting.pid 

Wenn ich jedoch versuche, dies in meinem Startskript für red5 anzuwenden, wird die PID-Datei erfolgreich erstellt, es wird jedoch keine ID gefunden. Dies ist das spezifische Skript:

start) echo -n "Starting Red5" echo -n " " cd $RED5_HOME su -s /bin/bash -c "$RED5_HOME/$RED5_PROG.sh &" $RED5_USER echo "$RED5_HOME/$RED5_PROG.sh &" ## su -s /bin/bash -c "$RED5_HOME/$RED5_PROG.sh > start.log &" $RED5_USER echo $! > /var/run/red5.pid wait $! sleep 2 ;; 

Ich habe es mit und ohne wait $!(das glaube ich wartet, bis der Prozess startet, bevor die Datei geschrieben wird?) Ohne Erfolg versucht . Meine einzigen anderen Gedanken sind, etwas Besonderes mit grep und ps aux zu tun, um die Zahl zu extrahieren.

1

1 Antwort auf die Frage

2
Diblo Dk

Sie benötigen ein Echo hinzufügen
make_something_run.sh & echo $! > /var/run/someting.pid
                                                     ^

http://www.odi.ch/weblog/posting.php?posting=291

EDIT:
su -s /bin/bash -c "$/$.sh & echo \$! > /var/run/red5.pid" $RED5_USER

oder
https://stackoverflow.com/questions/6197165/getting-a-pid-from-a -background-process-run-as-another-user

Vielen Dank für die Antwort, ich habe den Beitrag so bearbeitet, dass er das weggelassene Echo in meinem Beispiel enthält. Es ist jedoch weiter unten in meinem Beitrag im Skript, mit dem ich Probleme habe, also nicht die Lösung für mein Problem milks vor 11 Jahren 0
Kannst du es mit su -s / bin / bash -c "$ / $ .sh &" $ RED5_USER "versuchen? Ich habe einen Echo-Test gesehen, aber es ist normal, {} zu verwenden, wenn es sein muss Setze die Variable zusammen mit dem Text Diblo Dk vor 11 Jahren 0
Sie müssen mich entschuldigen, aber ich bin ein bisschen verrostet auf sh und bash. Aber ich kann auch sehen, dass es ein Problem gibt, wenn Sie `bash 'in` su` verwenden. Versuchen Sie es auch mit `su -s / bin / bash -c" $ / $ .sh & echo $!> /Var/run/red5.pid "$ RED5_USER" Diblo Dk vor 11 Jahren 1
Ja, das ist Ihr Problem http://stackoverflow.com/questions/6197165/getting-a-pid-from-a-background-process-run-as-another-user Ich sehe nur, dass diese Frage gestellt werden muss stackoverflow.com Diblo Dk vor 11 Jahren 0
Das sieht kompliziert aus! Danke für Ihre Bemühungen, ich werde sehen, wie es mir geht milks vor 11 Jahren 0
@DibloDk: Dein letzter Befehl ist fast richtig, ändere in `su -s / bin / bash -c '$ / $ .sh & echo $! > /var/run/red5.pid "$ RED5_USER". Beachten Sie die einfachen Anführungszeichen, andernfalls wird das "$!" Bereits vor der Befehlsausführung erweitert und führt daher zu einer falschen PID. mpy vor 11 Jahren 0
war gerade dabei, ähnlich zu posten, am Ende habe ich es geschafft, indem ich dem $ entging! var: `su -s / bin / bash -c" $ / $ .sh> start.log & echo \ $!> /var/run/red5.pid "$ RED5_USER" milks vor 11 Jahren 2
Oh ja, sry :-) Diblo Dk vor 11 Jahren 0
@milks: Ich wollte nur meinen Kommentar korrigieren: Du hast absolut recht. Sie müssen dies über escaping_ tun, andernfalls wird $ nicht erweitert ... (Ich habe einen zu trivialen Befehl verwendet, um `;)` zu testen. mpy vor 11 Jahren 0
@DibloDk: Erwägen Sie bitte, Ihre Antwort zu erweitern, so dass die Lösung für `su ... '(dh die ursprüngliche Frage) direkt darin ist. Dann müssen einige spätere Besucher nicht durch die Kommentare `:)` graben mpy vor 11 Jahren 0