| #! /bin/sh |
| ### BEGIN INIT INFO |
| # Provides: usbg |
| # Required-Start: $local_fs |
| # Should-Start: |
| # Required-Stop: $local_fs |
| # Should-Stop: |
| # Default-Start: 2 3 4 5 |
| # Default-Stop: 0 1 6 |
| # Short-Description: Example initscript |
| # Description: This file should be used to construct scripts to be |
| # placed in /etc/init.d |
| ### END INIT INFO |
| |
| # PATH should only include /usr/* if it runs after the mountnfs.sh script |
| PATH=/sbin:/usr/sbin:/bin:/usr/bin |
| |
| DESC="Load USB gadget schemas" |
| NAME="usbgx" |
| DAEMON=/usr/bin/gadget-start |
| DAEMON_ARGS="" |
| PIDFILE=/var/run/$NAME.pid |
| |
| . /etc/init.d/functions || exit 1 |
| |
| # Exit if the package is not installed |
| [ -x "$DAEMON" ] || exit 0 |
| |
| # Read configuration variable file if it is present |
| [ -r /etc/default/$NAME ] && . /etc/default/$NAME |
| |
| # |
| # Function that starts the daemon/service |
| # |
| do_start() { |
| local status pid |
| |
| status=0 |
| pid=`pidofproc $NAME` || status=$? |
| case $status in |
| 0) |
| echo "$DESC already running ($pid)." |
| exit 1 |
| ;; |
| *) |
| echo "Starting $DESC ..." |
| exec $DAEMON $DAEMON_ARGS >/dev/null 2>&1 || status=$? |
| echo "ERROR: Failed to start $DESC." |
| exit $status |
| ;; |
| esac |
| } |
| |
| # |
| # Function that stops the daemon/service |
| # |
| do_stop() { |
| local pid status |
| |
| status=0 |
| pid=`pidofproc $NAME` || status=$? |
| case $status in |
| 0) |
| # Exit when fail to stop, the kill would complain when fail |
| kill -s 15 $pid >/dev/null && rm -f $PIDFILE && \ |
| echo "Stopped $DESC ($pid)." || exit $? |
| ;; |
| *) |
| echo "$DESC is not running; none killed." >&2 |
| ;; |
| esac |
| |
| return $status |
| } |
| |
| # |
| # Function that sends a SIGHUP to the daemon/service |
| # |
| do_reload() { |
| local pid status |
| |
| status=0 |
| # If the daemon can reload its configuration without |
| # restarting (for example, when it is sent a SIGHUP), |
| # then implement that here. |
| pid=`pidofproc $NAME` || status=$? |
| case $status in |
| 0) |
| echo "Reloading $DESC ..." |
| kill -s 1 $pid || exit $? |
| ;; |
| *) |
| echo "$DESC is not running; none reloaded." >&2 |
| ;; |
| esac |
| exit $status |
| } |
| |
| |
| # |
| # Function that shows the daemon/service status |
| # |
| status_of_proc () { |
| local pid status |
| |
| status=0 |
| # pidof output null when no program is running, so no "2>/dev/null". |
| pid=`pidofproc $NAME` || status=$? |
| case $status in |
| 0) |
| echo "$DESC is running ($pid)." |
| exit 0 |
| ;; |
| *) |
| echo "$DESC is not running." >&2 |
| exit $status |
| ;; |
| esac |
| } |
| |
| case "$1" in |
| start) |
| do_start |
| ;; |
| stop) |
| do_stop || exit $? |
| ;; |
| status) |
| status_of_proc |
| ;; |
| restart) |
| # Always start the service regardless the status of do_stop |
| do_stop |
| do_start |
| ;; |
| try-restart|force-reload) |
| do_stop && do_start |
| ;; |
| *) |
| echo "Usage: $0 {start|stop|status|restart|try-restart|force-reload}" >&2 |
| exit 3 |
| ;; |
| esac |