#!/bin/sh # Copyright 2016 Marcel Saegebarth # All rights reserved. # # Redistribution and use of this script, with or without modification, is # permitted provided that the following conditions are met: # # 1. Redistributions of this script must retain the above copyright # notice, this list of conditions and the following disclaimer. # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED # WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO # EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, # PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; # OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, # WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF # ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. RUN_USER=plex plexmediaserver_start() { PIDOF=$(pidof "Plex Media Server") if [ -z "$PIDOF" ]; then echo "Starting plexmediaserver..." /bin/su -s /bin/sh -l $RUN_USER -c '/usr/bin/start_pms &> /dev/null &' else echo "plexmediaserver is already active (PID: $PIDOF)." exit 1 fi } plexmediaserver_stop() { PIDOF=$(pidof "Plex Media Server") # plugins may still running when stopping plexmediaserver on its startup # process PGREP_PLUGINS=$(pgrep -f "Plex Plug-in") if [ -z "$PIDOF" ] && [ -z "$PGREP_PLUGINS" ]; then echo "plexmediaserver is not running..." exit 1 else echo -n "Stopping plexmediaserver..." if [ -n "$PIDOF" ]; then kill -9 $PIDOF fi if [ -n "$PGREP_PLUGINS" ]; then for i in "$PGREP_PLUGINS"; do kill -9 $i done fi echo "done" fi } plexmediaserver_restart() { plexmediaserver_stop sleep 3 plexmediaserver_start } case "$1" in start) plexmediaserver_start ;; stop) plexmediaserver_stop ;; restart) plexmediaserver_restart ;; *) echo "USAGE: $0 start|stop|restart" exit 1 ;; esac