#!/bin/sh ### BEGIN INIT INFO # Provides: jibo-skills-logd # Required-Start: $local_fs # Required-Stop: $local_fs # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: UDP log daemon for Jibo Skills ### END INIT INFO # Install path on robot: # /etc/init.d/jibo-skills-logd (this file) # and ensure executable: chmod +x /etc/init.d/jibo-skills-logd # Enable (varies by distro): # update-rc.d jibo-skills-logd defaults # or (BusyBox init): create symlink in /etc/rc.d/rcS.d/ or /etc/rc?.d/ PYTHON_BIN=${PYTHON_BIN:-/usr/bin/python} DAEMON=${DAEMON:-/opt/jibo/Jibo/Skills/tools/robot/logd/jibo_logd.py} PIDFILE=${PIDFILE:-/tmp/jibo-skills-logd.pid} HOST=${JIBO_LOGD_HOST:-127.0.0.1} PORT=${JIBO_LOGD_PORT:-15140} LOGFILE=${JIBO_LOGD_FILE:-/tmp/jibo-skills.log} start() { echo "Starting jibo-skills-logd" if [ -f "$PIDFILE" ]; then PID=$(cat "$PIDFILE" 2>/dev/null) if [ -n "$PID" ] && kill -0 "$PID" 2>/dev/null; then echo "Already running (pid $PID)" return 0 fi fi # best effort: ensure logfile dir exists mkdir -p "$(dirname "$LOGFILE")" 2>/dev/null "$PYTHON_BIN" "$DAEMON" --host "$HOST" --port "$PORT" --logfile "$LOGFILE" --daemonize --pidfile "$PIDFILE" sleep 1 if [ -f "$PIDFILE" ]; then echo "Started (pid $(cat "$PIDFILE" 2>/dev/null))" return 0 fi echo "Failed to start" return 1 } stop() { echo "Stopping jibo-skills-logd" if [ ! -f "$PIDFILE" ]; then echo "Not running (no pidfile)" return 0 fi PID=$(cat "$PIDFILE" 2>/dev/null) if [ -z "$PID" ]; then rm -f "$PIDFILE" return 0 fi kill "$PID" 2>/dev/null sleep 1 kill -9 "$PID" 2>/dev/null rm -f "$PIDFILE" echo "Stopped" return 0 } status() { if [ -f "$PIDFILE" ]; then PID=$(cat "$PIDFILE" 2>/dev/null) if [ -n "$PID" ] && kill -0 "$PID" 2>/dev/null; then echo "Running (pid $PID)" return 0 fi fi echo "Not running" return 3 } case "$1" in start) start ;; stop) stop ;; restart) stop start ;; status) status ;; *) echo "Usage: $0 {start|stop|restart|status}" exit 1 ;; esac exit $?