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









