Question

Why is this simple upstart failing?

I have a number of these simple upstart scripts that work fine on other droplets. This is a new droplet and /var/log/upstart/acc.log is filled with /proc/self/fd/9: 4: /proc/self/fd/9:  : not found

I can run the script ‘by hand’ and my app comes up just fine. The script is just

start on startup
respawn
script
    cd /opt/acc
    export PORT=4321
    export ROOT_URL='the ip here'
    node main.js
end script

I’ve tried adding export PATH and NODE_PATH … same error in the log.

This is a new droplet, but as I said I can run this ‘by hand’ and its fine.

Ideas as to what is wrong or what I can do to find out what is really ‘not found’?

P:)


Submit an answer

This textbox defaults to using Markdown to format your answer.

You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!

Sign In or Sign Up to Answer

These answers are provided by our Community. If you find them useful, show some love by clicking the heart. If you run into issues leave a comment, or add your own answer to help others.

Upstart uses /bin/sh while running ‘by hand’ will use bash.

Try this:

start on startup
respawn
script
/bin/bash <<EOT
    cd /opt/acc
    export PORT=4321
    export ROOT_URL='the ip here'
    node main.js
EOT
end script

Source: http://upstart.ubuntu.com/cookbook/#changing-the-default-shell

thanks for the response. The problem here is/was multiple version of node as well as multiple names ‘node’ vs ‘nodejs’. Ubuntu is a mess. upstart couldn’t find the node app. After many hours of trashing around with apt-get --purge remove node and installs. I finally got the single version of node required for this project (Meteor).