Ich habe mir für den Plex Media Server ein Init-Skript geschrieben, was meine Anforderungen erfüllt. Es ist nicht perfekt, funktioniert aber ziemlich zuverlässig und reicht für meine Belange allemal.
Fehler oder Verbesserungsvorschläge können gern in die Kommentare geschrieben werden.
#!/bin/sh
### BEGIN INIT INFO
# Provides: plexmediaserver
# Required-Start: $syslog $networking
# Required-Stop:
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Plex Media Server
### END INIT INFO
PLEX_BIN_NAME="Plex Media Server"
PLEX_START_SCRIPT="/usr/sbin/start_pms"
[ -r /etc/default/plexmediaserver ] && . /etc/default/plexmediaserver
is_running() {
pgrep -f "${PLEX_BIN_NAME}" >/dev/null
[ $? -gt 0 ] && return 1 || return 0
}
do_start() {
if is_running; then
echo "Plex Media Server is already running."
else
echo -n "Start Plex Media Server: "
su -l ${PLEX_MEDIA_SERVER_USER} -c "${PLEX_START_SCRIPT} &" >/dev/null 2>&1
echo "done"
fi
}
do_stop() {
if ! is_running; then
echo "Plex Media Server is not running."
else
echo -n "Stop Plex Media Server: "
for i in $(pgrep -f "Plex Media Server") $(pgrep -f "Plex Plug-in"); do
kill ${i} >/dev/null 2>&1
if ps -p ${i} >/dev/null; then sleep 1; kill -9 ${i} >/dev/null 2>&1; fi
done
echo "done"
fi
}
do_status() {
if is_running; then
echo "Plex Media Server is running."
else
echo "Plex Media Server is stopped."
fi
}
case "$1" in
start)
do_start
;;
stop)
do_stop
;;
restart)
do_stop
do_start
;;
status)
do_status
;;
*)
echo "Usage: ${0} {start|stop|restart|status}"
exit 3
;;
esac