node.js child_process.spawn ENOENT-Fehler - nur unter Aufsicht

Ich führe mit Node.js einen Befehl mit child_process.spawn aus:

#!/usr/bin/js

var spawn = require("child_process").spawn;

var stockfish = spawn("stockfish");

Dies funktioniert gut mit$js spawntest.js von der Kommandozeile; Es hängt nur so, wie Sie es erwarten würden, da der Unterbefehl auf Eingaben wartet.

Wenn ich dieses Skript als Supervisord-Programm einrichte, schlägt dies jedoch fehl:

$ sudo supervisorctl start spawntest
spawntest: ERROR (abnormal termination)

Hier ist der Inhalt des Stderror-Ausgabeprotokolls, das Supervisor in /var/log/supervisor/spawntest-stderr---supervisor-RyULL0.log speichert:

events.js:72
        throw er; // Unhandled 'error' event
              ^
Error: spawn ENOENT
    at errnoException (child_process.js:980:11)
    at Process.ChildProcess._handle.onexit (child_process.js:771:34)

events.js:72
        throw er; // Unhandled 'error' event
              ^
Error: spawn ENOENT
    at errnoException (child_process.js:980:11)
    at Process.ChildProcess._handle.onexit (child_process.js:771:34)

events.js:72
        throw er; // Unhandled 'error' event
              ^
Error: spawn ENOENT
    at errnoException (child_process.js:980:11)
    at Process.ChildProcess._handle.onexit (child_process.js:771:34)

events.js:72
        throw er; // Unhandled 'error' event
              ^
Error: spawn ENOENT
    at errnoException (child_process.js:980:11)
    at Process.ChildProcess._handle.onexit (child_process.js:771:34)

Das supervisorctl-Programm ist folgendermaßen konfiguriert:

[program:spawntest]
command=/home/gus/dev/spawntest.js
autostart=false
autorestart=false
user=gus

Warum schlägt dies nur unter Supervisor fehl? Gibt es Module / globale Variablen von Node.js usw., mit denen ich die Unterschiede zwischen dem direkten Aufrufen eines Skripts und dem Aufrufen über Supervisor feststellen kann?

Antworten auf die Frage(0)

Ihre Antwort auf die Frage