How to create an auto start script in Linux (Red Hat / CentOS / Fedora):
Option 1: Use chkconfig script to run /etc/init.d/…
- Create a script and place in
/etc/init.d
(e.g/etc/init.d/myscript
). The script should have the following format:
#!/bin/bash
# chkconfig: 2345 20 80
# Source function library.
. /etc/init.d/functions
start() {
# code to start app comes here
# example: daemon program_name &
}
stop() {
# code to stop app comes here
# example: killproc program_name
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
status)
# code to check status of app comes here
# example: status program_name
;;
*)
echo "Usage: $0 {start|stop|status|restart}"
esac
exit 0
Enable the script
-
$ chkconfig --add myscript $ chkconfig --level 2345 myscript on
- Check the script is indeed enabled – you should see “on” for the levels you selected.
$ chkconfig --list | grep myscript
You can then use the script like so /etc/init.d/myscript start
or chkconfig myscript start
.
Option 2: Another Option is to use crontab job and run it at Boot time.
You need to use special string called @reboot. It will run once, at startup after reboot command.
@reboot /path/to/job @reboot /path/to/shell.script @reboot /path/to/command |
This is an easy way to give your users the ability to run a shell script or command at boot time without root access. First, run crontab command:
$ crontab -e
OR
# crontab -e -u doddi
Run a script called /home/doddi/bin/myScript.sh
@reboot /home/doddi/bin/myScript.sh
Under RHEL / CentOS / Fedora, you need to enable crond on boot:
# chkconfig crond on
# service crond restart
If you are using modern distro with systemd, try
# systemctl enable crond.service
# systemctl restart crond.service
# systemctl status crond.service