#!/bin/sh ### BEGIN INIT INFO # Provides: ulab-serialserver # Required-Start: $local_fs $remote_fs # Required-Stop: $local_fs $remote_fs # Should-Start: console-screen kbd acpid hal krb5-kdc nis # Should-Stop: console-screen kbd # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: uLab Serial Server # Description: uLab Serial Server ### END INIT INFO # /etc/init.d/ulab-serialserver: start or stop the uLab Serial Server # # description: uLab Serial Server # . /lib/lsb/init-functions set -e PATH=/opt/trinity/bin:/usr/bin:/sbin:/usr/sbin:/bin DAEMON=/opt/trinity/bin/ulab_serialserver PIDFILE=/var/run/ulab_serialserver.pid UPGRADEFILE=/var/run/ulab_serialserver.upgrade DESC="uLab Serial Server" # If we upgraded the daemon, we can't use the --exec argument to # start-stop-daemon since the inode will have changed. The risk here is that # in a situation where the daemon died, its pidfile was not cleaned up, and # some other process is now running under that pid, start-stop-daemon will send # signals to an innocent process. However, this seems like a corner case. # C'est la vie! if [ -e $UPGRADEFILE ]; then SSD_ARGS="--pidfile $PIDFILE --startas $DAEMON" else SSD_ARGS="--pidfile $PIDFILE --exec $DAEMON" fi stillrunning () { if expr "$(cat /proc/$DAEMONPID/cmdline 2> /dev/null)" : "$DAEMON" > /dev/null 2>&1; then true else # if the daemon does not remove its own pidfile, we will rm -f $PIDFILE $UPGRADEFILE false fi; } case "$1" in start) log_action_begin_msg "Starting $DESC" if start-stop-daemon --background --start --make-pidfile --quiet $SSD_ARGS -- $ARG; then log_action_end_msg 0 else log_warning_msg "already running" log_action_end_msg 0 fi ;; restart) /etc/init.d/ulab-serialserver stop if [ -f $PIDFILE ]; then if stillrunning; then exit 1 fi fi /etc/init.d/ulab-serialserver start ;; reload) log_action_begin_msg "Reloading $DESC" if start-stop-daemon --stop --signal 1 --quiet $SSD_ARGS; then log_action_end_msg 0 else log_failure_msg "not running" log_action_end_msg 1 fi ;; force-reload) /etc/init.d/ulab-serialserver reload ;; stop) log_action_begin_msg "Stopping $DESC" if [ ! -f $PIDFILE ]; then log_failure_msg "Not running ($PIDFILE not found)" log_action_end_msg 0 exit 0 else if start-stop-daemon --stop --quiet $SSD_ARGS; then log_action_end_msg 0 else log_failure_msg "not running" log_action_end_msg 1 fi fi ;; *) echo "Usage: /etc/init.d/ulab-serialserver {start|stop|restart|reload|force-reload}" exit 1 ;; esac exit 0