How to create a service on Ubuntu Upstart

68,315

Make sure you're on 14.04. Ubuntu 16.04 (and above) uses systemd, not Upstart.

A Upstart script is a script file placed at /etc/init/ and ending in .conf.

It requires 2 sections: one to indicate when to start, and another with the command to execute.

The easiest script to start with your sample is:

# myprogram.conf
start on filesystem
exec /usr/bin/java -jar /path_to/program

Created as root under /etc/init/myprogram.conf.

If your script requires more than one command line, use the script section instead of the exec line:

# myprogram.conf
start on filesystem
script
    /usr/bin/java -jar /path_to/program
    echo "Another command"
end script

To enable bash completion for your service, add a symlink into /etc/init.d folder:

sudo ln -s /etc/init/myprogram.conf /etc/init.d/myprogram

Then try start and stop it:

sudo service myprogram start

According the upstart cookbook, you can create pre-start/post-start and pre-stop/post-stop commands to be executed.

Additionally, I read you want to check if a process is running. Check this question and maybe use the pre-start section.

Share:
68,315

Related videos on Youtube

mehmet mecek
Author by

mehmet mecek

Updated on September 18, 2022

Comments

  • mehmet mecek
    mehmet mecek over 1 year

    I have a Java executable program that I can run by typing java -jar abc.jar in terminal. How can I run it as a service? I want to run it as a service like by typing service abc start.

  • Rael Gugelmin Cunha
    Rael Gugelmin Cunha about 10 years
    It's just a file in /etc/init/yourservice.conf with a line indicating when to start, and another to the exec command. Fedora uses upstart too. Additionally, even Debian is changing its starting schema to SystemD, which will be Ubuntu schema in the future.
  • juliocesar
    juliocesar about 7 years
    Maybe you need make it executable with sudo chmod +x /etc/init.d/myprogram. CAUTION: your answered method not works in Ubuntu 16.04!
  • Rael Gugelmin Cunha
    Rael Gugelmin Cunha about 7 years
    @juliocesar 16.04 uses systemd, not Upstart.
  • SuB
    SuB over 6 years
    start on is not a necessary stanza. As you can read here: Such a job can only be controlled by an Administrator.
  • Rael Gugelmin Cunha
    Rael Gugelmin Cunha over 6 years
    @SuB yeap, but then the job will not start automatically, and it was clear that the question author want something acting like a service, i.e., starting automatically.
  • SuB
    SuB over 6 years
    Yea. I know. just added a comment to complete your answer.
  • linrongbin
    linrongbin over 6 years
    On Ubuntu16.04, I try to add kafka service, but said: Failed to start kafka.service: Unit kafka.service not found.
  • Rael Gugelmin Cunha
    Rael Gugelmin Cunha over 6 years
    @linrongbin 16.04 uses systemd, not Upstart.