Ich habe dieses Skript, das ich gerne vor dem Starten des Daemons auf den Benutzer "terraria" umschalten würde. Ich kann nicht herausfinden, wie das geht. Meine Recherche führt mich zu Bash-Skripten, die su my_user -c
verwenden, aber ich glaube nicht, dass das in diesem Fall funktioniert.
#!/bin/bash
# Terraria-Daemon
# chkconfig: 345 20 80
# Beschreibung: Terraria-Server
# Prozessname: TerrariaServer.exe
DAEMON_PATH="/usr/Terraria"
DAEMON=TerrariaServer.exe
DAEMONOPTS="-world Diese_Welt.wld -port 7777 "
NAME=TerrariaServer
DESC="Terraria-Server"
PIDFILE=/var/run/TerrariaServer.pid
SCRIPTNAME=/etc/init.d/Terraria-Server
case "$1" in
start)
printf "%-50s" "Starte $NAME..."
cd $DAEMON_PATH
PID=`mono $DAEMON $DAEMONOPTS > /dev/null 2>&1 & echo $!`
#echo "Speichere PID" $PID " in " $PIDFILE
if [ -z $PID ]; then
printf "%s\n" "Fehlgeschlagen"
else
echo $PID > $PIDFILE
printf "%s\n" "Ok"
fi
;;
status)
printf "%-50s" "Überprüfe $NAME..."
if [ -f $PIDFILE ]; then
PID=`cat $PIDFILE`
if [ -z "`ps axf | grep ${PID} | grep -v grep`" ]; then
printf "%s\n" "Prozess beendet, aber pidfile existiert"
else
echo "Läuft"
fi
else
printf "%s\n" "Dienst läuft nicht"
fi
;;
stop)
printf "%-50s" "Stoppe $NAME"
PID=`cat $PIDFILE`
cd $DAEMON_PATH
if [ -f $PIDFILE ]; then
kill -HUP $PID
printf "%s\n" "Ok"
rm -f $PIDFILE
else
printf "%s\n" "pidfile nicht gefunden"
fi
;;
restart)
$0 stop
$0 start
;;
*)
echo "Verwendung: $0 {status|start|stop|restart}"
exit 1
esac