nohup-Prozess wird immer heruntergefahren

447
Wesley Schravendijk

Ich versuche, 10.000 Prozesse auszuführen, um Telefonkonten mit Sternchen zu erstellen. Dies ist zum Stresstest unseres Asterisk-Servers.

Ich rief mit php eine exec () - Funktion an, um einen Linux-Befehl zu erstellen.

nohup /usr/src/pjproject-2.3/pjsip-apps/bin/pjsua-x86_64-unknown-linux-gnu --id=sip:%s@13.113.163.3 --registrar=sip:127.0.0.1:25060 --realm=* --username=%s --password=123456 --local-port=%s --null-audio --no-vad --max-calls=32 --no-tcp >>/dev/null 2>>/dev/null & $(echo -ne \'\r\')" 

Alles funktioniert perfekt und das Skript macht genau das, was ich erwartet habe. Aber hier kommt auch das nächste Problem; Nachdem Sie die 10.000 Konten erstellt haben, werden alle Prozesse plötzlich beendet.

Warum ist das?

Ist es nicht so, dass die Nohup-Funktion die Prozesse am Leben erhält? Nach dem Aufruf der Nohup-Funktion rufe ich auch die Disown-Funktion auf.

Danke für die Hilfe

[edit] Ich habe dieses Projekt auch mit dem Funktionsbildschirm ausprobiert, die Bildschirmfunktionen funktionieren wie ein Zauber, aber das Problem ist die CPU-Nutzung. Um 10.000 Bildschirme zu erstellen, lässt sich ein Linux-Server verrückt machen, deshalb wähle ich für nohup.

0
Ersetzen Sie ">> / dev / null 2 ​​>> / dev / null" durch ">> /tmp/pjsua.log 2> & 1". Die Ausgabe zeigt Ihnen möglicherweise an, was passiert ist. Was erwarten Sie von "$ (echo -ne \ '\ r \')"? Warum die Single am Ende Ihres Befehls? Gerard H. Pille vor 5 Jahren 0
Es wurde verwendet, um eine Eingabe zu platzieren, nachdem der codierte Code eingegeben wurde. Ich habe es auch ohne probiert, aber das hat auch nicht funktioniert. Alles funktioniert, was wir wollen, nur die Prozesse werden beendet, nachdem die PHP-Datei fertig ist. Wesley Schravendijk vor 5 Jahren 0
Der Code läuft im Hintergrund. Wenn es Eingaben erfordert, wird es aufhören. Sie können Eingaben über "Eingabeumleitung" wie "<" oder "<<" (vor dem "&" !!) vornehmen. Gerard H. Pille vor 5 Jahren 0
Ich dachte das gleiche, aber wenn ich das Skript ohne PHP laufen lasse, gibt es kein Problem. Ich kann es für unbegrenzte Zeit inaktiv halten. Wesley Schravendijk vor 5 Jahren 0
Warum dann kompliziert? Wer ruft PHP an und wie? Bist du sicher, dass das exec () der PHP-Shell die Shell-Syntax versteht? Gerard H. Pille vor 5 Jahren 0
Es ist unmöglich, 10.000 Konten von Hand zu führen. Ich rufe den php selbst an. Das Skript hat überhaupt kein Problem, der Account wird angelegt, die Ausgabe wird auf dem Bildschirm angezeigt. Es ist kurz nachdem das PHP-Skript fertig ist, es beendet die Prozesse, sie bleiben nicht im Hintergrund. Wesley Schravendijk vor 5 Jahren 0
Hast du shell_exec () ausprobiert? Gerard H. Pille vor 5 Jahren 0
Ich habe nicht, sind sie nicht gleich? Wesley Schravendijk vor 5 Jahren 0
Nein, und es gibt auch System (). Nicht, dass es wichtig ist, tötet php seine Kinder, wenn sie fertig sind. Schreiben Sie einfach ein Shell-Skript, um Ihre 10000 Programme zu starten. Gerard H. Pille vor 5 Jahren 1

0 Antworten auf die Frage