1
votes

I'm running a command with Node.js using child_process.spawn:

#!/usr/bin/js

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

var stockfish = spawn("stockfish");

This works fine using $js spawntest.js from the command line; it just hangs like you would expect because the subcommand is waiting for input.

When I set this script up as a supervisord program, however, it fails:

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

Here is the contents of the stderror output log that supervisor keeps in /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)

The supervisorctl program is configured like this:

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

Why is this failing only under Supervisor? Are there any Node.js modules/global variables etc I can use to see what the differences are between invoking a script directly and through Supervisor?

you can try the procedure described at stackoverflow.com/questions/27688804/…laconbass