node.js child_process.spawn erro ENOENT - apenas sob supervisão
Estou executando um comando com Node.js usando child_process.spawn:
#!/usr/bin/js
var spawn = require("child_process").spawn;
var stockfish = spawn("stockfish");
Isso funciona bem usando$js spawntest.js
da linha de comando; apenas trava como você esperaria, porque o subcomando está aguardando entrada.
Quando eu configuro esse script como um programa supervisord, ele falha:
$ sudo supervisorctl start spawntest
spawntest: ERROR (abnormal termination)
Aqui está o conteúdo do log de saída stderror que o supervisor mantém em /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)
O programa supervisorctl está configurado assim:
[program:spawntest]
command=/home/gus/dev/spawntest.js
autostart=false
autorestart=false
user=gus
Por que isso está falhando apenas no Supervisor? Existem módulos / variáveis globais do Node.js. etc que posso usar para ver quais são as diferenças entre chamar um script diretamente e através do Supervisor?