node.js child_process.spawn Error ENOENT - solo bajo supervisión
Estoy ejecutando un comando con Node.js usando child_process.spawn:
#!/usr/bin/js
var spawn = require("child_process").spawn;
var stockfish = spawn("stockfish");
Esto funciona bien usando$js spawntest.js
desde la línea de comando; simplemente se cuelga como cabría esperar porque el subcomando está esperando la entrada.
Sin embargo, cuando configuro este script como un programa de supervisión, falla:
$ sudo supervisorctl start spawntest
spawntest: ERROR (abnormal termination)
Aquí está el contenido del registro de salida de stderror que el supervisor mantiene en /var/log/supervisor/spawntest-stderr---supervisor-RyULL0.log:
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)
El programa supervisorctl se configura así:
[program:spawntest]
command=/home/gus/dev/spawntest.js
autostart=false
autorestart=false
user=gus
¿Por qué esto falla solo bajo Supervisor? ¿Hay algún módulo Node.js / variables globales, etc. que pueda usar para ver cuáles son las diferencias entre invocar un script directamente y a través de Supervisor?