28

I've added a new script to /etc/init/ called minecraft.conf which contains the script:

start on startup
stop on shutdown
respawn
respawn limit 20 5

script
  export HOME="/root"
  exec /root/minecraft/start.sh 2>&1 >> /var/log/minecraft.log
end script

post-start script
   echo "minecraft started"

When I try start minecraft I get the error: start: Unknown job: minecraft

I've tried running initctl list and my minecraft job is not listed. I've tried running initctl reload-configuration and it doesn't make any difference.

Other jobs listed by initctl list work fine with start, stop and restart.

Why won't upstart see my new script?

Jasarien
  • 471
  • http://upstart.ubuntu.com/getting-started.html – Raja G Jan 24 '13 at 16:47
  • This might be a stupid question but... shuldn't be your script in /etc/init.d/? – Wolfer Jan 24 '13 at 17:09
  • @snow thanks, but I've already read that and I still have the problem. – Jasarien Jan 24 '13 at 17:19
  • @Wolfer according to the upstart getting started guide, it says "Once happy, place the files in /etc/init and now you're ready to reboot and use upstart." – Jasarien Jan 24 '13 at 17:20
  • I tried to reproduce the problem but with no success. I copy pasted your code to /etc/init/minecraft.conf and issued sudo start minecraft without a problem.

    Here is content of the log file ~$ sudo cat /var/log/upstart/minecraft.log minecraft started /proc/self/fd/9: 3: exec: /root/minecraft/start.sh: not found minecraft started Can you provide more details on Ubuntu version you are using and any useful information from syslog?

    – Goran Miskovic Jan 24 '13 at 19:10
  • @schkovich Running Ubuntu 12.10 x64 Server, and I can't see anything related to upstart, or otherwise useful in syslog... – Jasarien Jan 25 '13 at 17:26

6 Answers6

13

An easy way to check your script syntax is with the following command:

init-checkconf -d /etc/init/service_name.conf

I've found that even with a valid Upstart file if the file didn't exist when the server was booted last I have to reboot the server for Upstart to see the file.

12

Check the upstart logs (it's in /var/log/syslog) while reloading the configuration using initctl reload-configuration. If there is a syntax error, it will show up there. That's usually why you cannot use your new upstart configuration.

rcomblen
  • 275
9

I feel kinda dumb... But here it is:

I missed the "end script" stanza from the very end of the upstart script...

post-start script
   echo "minecraft started"

should have been

post-start script
   echo "minecraft started"
end script

I'm not sure why it worked for @schkovich without the end script, though...

Jasarien
  • 471
5

In my case it was an empty author field, like this:

author ""

It worked only after adding something in the quotes.

# initctl reload-configuration

was also throwing /etc/init/servicename.conf:2: Expected token to syslog instead of stdout. Too busy to file a bug report for a dying package.

int_ua
  • 8,574
3

Perhaps not applicable to this specifically, but worth mentioning: If you edit a Upstart config file for a service that is running, running restart does NOT reload the configuration. You have to run stop and start to have new changes take effect.

http://upstart.ubuntu.com/cookbook/#restart

kristi
  • 131
1

Alternative command for new Ubuntu versions (works on 18):

systemctl daemon-reload
yǝsʞǝla
  • 121
  • 3