Supervisord "exit-status 1 nicht zu erwarten" php-Skript
Bin ich mit Problem versuchen zu konfigurieren, supervisor, um ein php-Skript. Ausführen von supervisor im debug-Modus gibt mir diese:
2015-03-09 08:53:06,342 INFO supervisord started with pid 2030
2015-03-09 08:53:06,358 INFO spawned: 'worker1' with pid 2031
2015-03-09 08:53:06,423 INFO exited: worker1 (exit status 1; not expected)
2015-03-09 08:53:06,424 INFO received SIGCLD indicating a child quit
2015-03-09 08:53:07,440 INFO spawned: 'worker1' with pid 2032
2015-03-09 08:53:07,587 INFO exited: worker1 (exit status 1; not expected)
2015-03-09 08:53:07,589 INFO received SIGCLD indicating a child quit
2015-03-09 08:53:09,604 INFO spawned: 'worker1' with pid 2033
2015-03-09 08:53:09,756 INFO exited: worker1 (exit status 1; not expected)
2015-03-09 08:53:09,758 INFO received SIGCLD indicating a child quit
2015-03-09 08:53:12,775 INFO spawned: 'worker1' with pid 2034
2015-03-09 08:53:12,973 INFO exited: worker1 (exit status 1; not expected)
2015-03-09 08:53:12,974 INFO received SIGCLD indicating a child quit
2015-03-09 08:53:13,976 INFO gave up: worker1 entered FATAL state, too many start retries too quickly
Den supervisord Konfiguration:
[program:worker1]
command=php myScript.php
directory=/home/path/to/script/
user=root
autostart=true
autorestart=true
stderr_logfile=/var/log/worker1.err.log
stdout_logfile=/var/log/worker1.out.log
redirect_stderr=true
environment=PATH="/usr/bin"
Für diesen test myScript.php einfach ausdrucken echo "test".PHP_EOL;
Gibt es keine logs Fehlermeldungen von php, und wenn ich das Skript ausführen thru cli funktioniert es wie erwartet. Der supervisord anmelden so melden Sie die gleiche Ausgabe wie debuggin.
Habe ich auch versucht, mit absoluten Pfaden wie /usr/bin/php /home/path/to/script/myScript.php
aber es ändert sich nichts.
Datei, die Erlaubnis für myScript.php eingestellt sind -rwxrwxr-x 1 root apache
Weiß wirklich nicht, was ich sonst noch überprüfen könnte. Danke für die Unterstützung!
UPDATE_1
Ich habe auch versucht zu überwachen anderen Programm wie /bin/cat oder ein bash-Skript und funktioniert wie ein Charme. Das problem scheint zu sein, beschränkt auf die php.
UPDATE_2
B. N. B. wies darauf hin, in der Kommentare, die ich geändert habe das test-script Aussehen mehr lange-laufen-job:
while(true){
echo "test".PHP_EOL;
sleep(10);
}
Gleiche wie zuvor, begibt er sich in TÖDLICHE Zustand.
Nope, nichts. Es ist noch nicht angelegt...
haben Sie versucht, den vollständigen Pfad zum Skript in der "command" - Zeile?
Yep, versucht, läuft es wie: /usr/bin/php /home/path/to/script/myScript.php. Kein Unterschied.
redirect_stderr umleiten, um Sie stdout, nehme ich an es gibt nichts in Ihrem stdout als auch?
InformationsquelleAutor Luciano | 2015-03-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nur so konnte ich reproduzieren dieses Verhaltens mit exit-code 1, ist die Verwendung einer ungültigen Pfad zu der Datei. Also zuerst bitte überprüfen, ob der Pfad korrekt ist. Aber ich denke, dass Sie dies getan haben, bevor.
Ich mehr davon ausgehen, dass die Datei liegt unter Ihrem home-Verzeichnis und die root-Benutzer ist nicht in der Lage, Zugriff auf und führen Sie es. Also ich würde versuchen, und ändern Sie den Speicherort des Skripts.
Für die Prüfung, können Sie Ihr Skript unter
/tmp/myScript.php
:und ändern Sie Ihre supervisord config so:
Nun supervisored sollte in der Lage sein, um die Ausführung des Skripts.
Wenn dies funktioniert, sollten Sie überprüfen, welche Ordner verhindern, dass root-Zugriff auf das Skript. Dies könnte durch eine encypted (und montiert) - Ordner (home-Verzeichnis?), oder wenn die Lage montiert ist, von sonst wo (samba, nfs ...).
Um das Problem zu lösen, können Sie versuchen, ändern Sie den Benutzer von root auf deinen user (ich würde das nicht empfehlen) oder ändern Sie den Projekt-Standort in einen anderen Ordner, der befindet sich nicht unter Ihrem home-Verzeichnis.
Dies war sehr hilfreich, danke! Ich war mit dem supervisor-conf ausführen, um eine bash-Skript (um zu vermeiden, Pfad Probleme) und fehlte sowohl "Benutzer wechseln" und ändern Sie das Verzeichnis
InformationsquelleAutor skroczek
Habe ich mit Supervisord für eine Weile, und dies ist, was ich in meine config:
Grund, warum ich Schreibe dies als eine anwser ist wegen der Formatierung.
Versuchen Sie auch, dieses Skript:
Und fügen Sie es der Aufsicht. Es sollte neu gestartet werden, nachdem es seinem echo.
InformationsquelleAutor N.B.
Versuchen
startsecs = 0
:InformationsquelleAutor Andy Wong