Skip to content

Instantly share code, notes, and snippets.

@pguillem
Last active July 4, 2022 15:54
Show Gist options
  • Star 3 You must be signed in to star a gist
  • Fork 3 You must be signed in to fork a gist
  • Save pguillem/19693defb3feb0c02fe7 to your computer and use it in GitHub Desktop.
Save pguillem/19693defb3feb0c02fe7 to your computer and use it in GitHub Desktop.
init.d script to launch consume_MT_messages.py as a system daemon (Should work in Debian/Ubuntu)
#!/bin/sh
### BEGIN INIT INFO
# Provides: rabbit consumer
# Required-Start: $network $local_fs
# Required-Stop:
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Jasmin SMS Gateway Mysql Reporter Init Script
# Description: Jasmin SMS Gateway Mysql Reporter Init Script
### END INIT INFO
VERBOSE='yes'
NAME='consume_MT_messages.py' #Set the name of your consumer script
COMMAND="/usr/src/jasmin_mysql/consume_MT_messages.py" #Set the PATH to your consumer script
COMMAND_ARGS=''
PATH=/sbin:/usr/sbin:/bin:/usr/bin
DESC="$NAME"
DAEMON=/usr/bin/python
PIDDIR=/var/run/jasmin
PIDFILE="$PIDDIR/$NAME.pid"
LOGDIR=/var/log/jasmin
LOGFILE="$LOGDIR/mysql-$NAME.log"
SCRIPTNAME="/etc/init.d/jasmind_consumer"
USER=jasmin
GROUP=jasmin
# Exit if USER or GROUP do not exist
getent passwd "$USER" >/dev/null || exit 11
getent group "$GROUP" >/dev/null || exit 12
# Exit if the jasmind.py is not found
[ -x $COMMAND ] || exit 21
# Exit if the package is not installed
[ -x $DAEMON ] || exit 22
# Exit if system folders do not exist or could not be created
[ -d $PIDDIR ] || mkdir $PIDDIR
[ -d $PIDDIR ] || exit 31
[ -d $LOGDIR ] || mkdir $LOGDIR
[ -d $LOGDIR ] || exit 32
. /lib/lsb/init-functions
# Function that starts the daemon/service
#
do_start()
{
# Return
# 0 if daemon has been started
# 1 if daemon was already running
# 2 if daemon could not be started
start-stop-daemon --start --oknodo --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \
|| return 1
start-stop-daemon --start --oknodo --quiet --background --exec $DAEMON \
--user=$(id -u $USER) \
--group=$(id -g $GROUP) \
--pidfile=$PIDFILE \
--make-pidfile \
$COMMAND -- $COMMAND_ARGS \
|| return 2
}
#
# Function that stops the daemon/service
#
do_stop()
{
# Return
# 0 if daemon has been stopped
# 1 if daemon was already stopped
# 2 if daemon could not be stopped
# other if a failure occurred
start-stop-daemon --stop --oknodo --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE
RETVAL="$?"
[ "$RETVAL" = 2 ] && return 2
# Many daemons don't delete their pidfiles when they exit.
[ "$RETVAL" = 0 ] && rm -f $PIDFILE
return "$RETVAL"
}
#
# Function that sends a SIGHUP to the daemon/service
#
do_reload() {
echo "NOT IMPLEMENTED YET"
return 1
#
# If the daemon can reload its configuration without
# restarting (for example, when it is sent a SIGHUP),
# then implement that here.
#
start-stop-daemon --stop --oknodo --signal 1 --quiet --pidfile $PIDFILE
return 0
}
case "$1" in
start)
[ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC " "$NAME"
do_start
case "$?" in
0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
esac
;;
stop)
[ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
do_stop
case "$?" in
0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
esac
;;
status)
status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $?
;;
#reload|force-reload)
#
# If do_reload() is not implemented then leave this commented out
# and leave 'force-reload' as an alias for 'restart'.
#
#log_daemon_msg "Reloading $DESC" "$NAME"
#do_reload
#log_end_msg $?
#;;
restart|force-reload)
#
# If the "reload" option is implemented then remove the
# 'force-reload' alias
#
log_daemon_msg "Restarting $DESC" "$NAME"
do_stop
case "$?" in
0|1)
do_start
case "$?" in
0) log_end_msg 0 ;;
1) log_end_msg 1 ;; # Old process is still running
*) log_end_msg 1 ;; # Failed to start
esac
;;
*)
# Failed to stop
log_end_msg 1
;;
esac
;;
*)
echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2
exit 3
;;
esac
:
@tommygr8
Copy link

tommygr8 commented May 7, 2019

I tried this but the message is not logging into my database. What could be the issue

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment