If you explore latest Red Hat linux, you will see that the traditional init scripts are gone. It's much easier to use rather then SysVinit, it reduces system startup time because the processes are running in parallel. It has also very nice logging mechanism. Let's write simple examples for CentOS7
Create a bash file:
touch /usr/local/sbin/{launcher_name}.sh
It's a simple bash file that launches java application.
#!/bin/bash java -jar /root/{name}.jar
Add execution permission
chmod +x {launcher_name}.sh
Create service:
touch /etc/systemd/system/{service_name}.service
Configuration:
[Unit] Description=Application launcher service [Service] Type=simple ExecStart=/usr/local/sbin/{launcher_name}.sh TimeoutStartSec=0 [Install] WantedBy=default.target
Set permissions:
chmod 664 {service_name}.service
Reload daemon
systemctl daemon-reload
Usage:
systemctl enable {service_name} systemctl start {service_name}
We can create the same using init instead of sytstem.d. We shiuld just create configuration to the following locataion: /etc/init.d
#! /bin/sh # /etc/init.d/{service_name} ### BEGIN INIT INFO # Provides: {service_name} # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Example of init service. ### END INIT INFO # Actions provided to make it LSB-compliant case "$1" in start) export DISPLAY=:0 sh {launcher_name}.sh ;; stop) echo "Stopping" ... ;; restart) echo "Restarting" ;; force-reload) echo "Reloading" ... ;; status) echo "Status" ... ;; *) echo "Usage: /etc/init.d/{service_name} {start|stop|restart|force-reload|status}" exit 1 ;; esac exit 0