How do i use shell scripting services to start and stop a shell script?
I'm using CentOS 7 what my aim is to create a cron for every five seconds but as I researched we can use cron only for a minute so what I am doing now is I have created a shell file.
hit.sh
while sleep 5; do curl http://localhost/test.php; done
but I have hit it manually through right clicking it.
What i want to do is create a service for this file so i can start and stop it automatically
I found the script to create a service
#!/bin/bash
# chkconfig: 2345 20 80
# description: Description comes here....
# 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
But I don't know what to write in start or stop methods I tried placing the same content of hit.sh in start(){}
but it gave error for }
in stop method.
If you would like to reuse your code sample it could look like
#!/bin/bash
case "$1" in
start)
/path/to/hit.sh &
echo $!>/var/run/hit.pid
;;
stop)
kill `cat /var/run/hit.pid`
rm /var/run/hit.pid
;;
restart)
$0 stop
$0 start
;;
status)
if [ -e /var/run/hit.pid ]; then
echo hit.sh is running, pid=`cat /var/run/hit.pid`
else
echo hit.sh is NOT running
exit 1
fi
;;
*)
echo "Usage: $0 {start|stop|status|restart}"
esac
exit 0
Naturally, the script you want to be executed as a service should go to e.g. /usr/local/bin/hit.sh
, and the above code should go to /etc/init.d/hitservice
.
For every runlevel which needs this service running you will need to create a symlink For example, a symlink named /etc/init.d/rc5.d/S99hitservice
will start the service for runlevel 5. Of course, you can still start and stop it manually via service hitservice start
/ service hitservice stop