Skip to content

meta-n4vn33t/sysvinit-service-generator

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

64 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Sample service script for init

This script enables fast daemonization apps as a Linux services with SysVinit init system.

Look at LSB init scripts for more information.

Original script taken from from naholyr's gist Note: You can acheive the same thing that this project tries to acheive by using the MetaInit package in debian: (https://wiki.debian.org/MetaInit)

Usage

Copy to /etc/init.d:

# replace "$YOUR_SERVICE_NAME" with your service's name (whenever it's not enough obvious)
cp "service.sh" "/etc/init.d/$YOUR_SERVICE_NAME"
chmod +x /etc/init.d/$YOUR_SERVICE_NAME

Edit the script and replace following tokens:

  • <NAME> = $YOUR_SERVICE_NAME
  • <DESCRIPTION> = Describe your service here (be concise)
  • Feel free to modify the LSB header, I've made default choices you may not agree with
  • <COMMAND> = Command to start your server (for example /home/myuser/.dropbox-dist/dropboxd)
  • <USER> = Login of the system user the script should be run as (for example myuser)

Start and test your service:

$ service $YOUR_SERVICE_NAME start
$ service $YOUR_SERVICE_NAME stop

Install service to be run at boot-time:

$ update-rc.d $YOUR_SERVICE_NAME defaults

For rpm based distributions such as CentOS or Red Hat, you can use

$ chkconfig $YOUR_SERVICE_NAME --add

If you want to see which runlevel your script will run in

$ chkconfig $YOUR_SERVICE_NAME --list

Enjoy

Uninstall

The service can uninstall itself with service $NAME uninstall. Yes, that's very easy, therefore a bit dangerous. But as it's an auto-generated script, you can bring it back very easily. I use it for tests and often install/uninstall, that's why I've put that here.

Don't want it? Remove lines 56-58 of the service's script.

Logs?

Your service will log its output to /var/log/$NAME.log. Don't forget to setup a logrotate :)

FAQ!

This script should work fine on Debian, CentOS and Slackware.

I'm noob and/or lazy

Yep, I'm lazy too. But still, I've written a script to automate this :)

$ wget 'https://raw.githubusercontent.com/Navneet-Suresh/sysvinit-service-generator/master/new-service.sh' && bash new-service.sh

In this script I will download service.sh into a tempfile, replace some tokens, and then show you commands you should run as superuser.

If you feel confident enough with my script, you can sudo the script directly:

$ wget 'https://raw.githubusercontent.com/Navneet-Suresh/sysvinit-service-generator/master/new-service.sh' && sudo bash new-service.sh

Note: the cool hipsterish curl $URL | bash won't work here, I don't really want to check why.

The script works offline so you can clone this repository then you can upload this script on your server and run it directly:

$ sudo bash new-service.sh

The script also handle parameters as showed below:

$ sudo bash new-service.sh "service_name" "description" "command to execute" "user which executes the command"

Demo

Creating the service:

service-create

Looking at service files (logs, pid):

service-files

Uninstalling service:

service-uninstall

About

SysVinit service generator

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Shell 100.0%