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?

6
  • upstart.ubuntu.com/getting-started.html
    – Raja G
    Jan 24, 2013 at 16:47
  • This might be a stupid question but... shuldn't be your script in /etc/init.d/?
    – Wolfer
    Jan 24, 2013 at 17:09
  • @snow thanks, but I've already read that and I still have the problem.
    – Jasarien
    Jan 24, 2013 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, 2013 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? Jan 24, 2013 at 19:10

6 Answers 6

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.

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...

2
  • 2
    Because I added end script stanza. Built in (mind) auto code completion. :( Jan 27, 2013 at 8:48
  • I hit the same problem but infuriatingly, nothing appears in /var/log and initctl reload-configuration --verbose is silent.
    – Goblinhack
    Dec 2, 2015 at 17:05
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.

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

1

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

systemctl daemon-reload

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .