Schauen Sie sich den folgenden Link für die "DJB" -May zum Starten von Prozessen als andere Benutzer an:http://thedjbway.b0llix.net/daemontools/uidgid.html
Siehe auch:Wie führe ich einen Befehl als spezifischer Benutzer in einem Init -Skript aus?
Frage
Ich habe dieses Skript, das ich zum Benutzer "Terraria" wechseln möchte, bevor ich den Daemon starte. Ich kann nicht herausfinden, wie es geht. Meine Forschung bringt mich dazu, Skripte mithilfe zu verprügeln su my_user -c
, aber ich glaube nicht, dass das in diesem Fall funktioniert.
#!/bin/bash
# Terraria daemon
# chkconfig: 345 20 80
# description: Terraria Server
# processname: TerrariaServer.exe
DAEMON_PATH="/usr/Terraria"
DAEMON=TerrariaServer.exe
DAEMONOPTS="-world This_Land.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" "Starting $NAME..."
cd $DAEMON_PATH
PID=`mono $DAEMON $DAEMONOPTS > /dev/null 2>&1 & echo $!`
#echo "Saving PID" $PID " to " $PIDFILE
if [ -z $PID ]; then
printf "%s\n" "Fail"
else
echo $PID > $PIDFILE
printf "%s\n" "Ok"
fi
;;
status)
printf "%-50s" "Checking $NAME..."
if [ -f $PIDFILE ]; then
PID=`cat $PIDFILE`
if [ -z "`ps axf | grep ${PID} | grep -v grep`" ]; then
printf "%s\n" "Process dead but pidfile exists"
else
echo "Running"
fi
else
printf "%s\n" "Service not running"
fi
;;
stop)
printf "%-50s" "Stopping $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 not found"
fi
;;
restart)
$0 stop
$0 start
;;
*)
echo "Usage: $0 {status|start|stop|restart}"
exit 1
esac
Lösung
Schauen Sie sich den folgenden Link für die "DJB" -May zum Starten von Prozessen als andere Benutzer an:http://thedjbway.b0llix.net/daemontools/uidgid.html
Siehe auch:Wie führe ich einen Befehl als spezifischer Benutzer in einem Init -Skript aus?