G
Gast123
Hallo Leute,
mein nächstes Problem nach meinem Umsieg auf Fedora 15 macht sich bemerkbar.
Ich habe zwei eigene Init scripts vom vorherigen System übernommen (Fedora 14 lief ja noch mit dem alten Init-System):
1) Start script für meinen TS3 Server:
1) Start script für meinen Minecraft Server:
Diese habe ich via
aktiviert.
Offensichtlich werden die scripte auch beim booten gestartet, die Prozesse dann aber wieder gekillt, da beide Scripte einen entsprechenden Rückgabewert liefern.
Hat jemand eine Idee, woran das liegen kann und welche logfiles hilfreich wären?
Danke euch und LG
Schard
mein nächstes Problem nach meinem Umsieg auf Fedora 15 macht sich bemerkbar.
Ich habe zwei eigene Init scripts vom vorherigen System übernommen (Fedora 14 lief ja noch mit dem alten Init-System):
1) Start script für meinen TS3 Server:
Code:
/etc/init.d/ts3d
Code:
#!/bin/bash
#
# ts3server Startup script for the TeamSpeak 3 Server
#
# chkconfig: - 95 15
# description: The TeamSpeak 3 Server is an efficient and extensible \
# server for voip communications.
TS_USER=teamspeak
TS_HOME=/home/teamspeak
cd $TS_HOME
if [ $EUID -eq 0 ]; then
su $TS_USER -c "./ts3server_startscript.sh $@" -s /bin/bash
exit $?
else
echo 1>&2 "Insufficient permissions!"
fi
1) Start script für meinen Minecraft Server:
Code:
/etc/init.d/mined
Code:
#! /bin/bash
# chkconfig: - 99 01
# description: Minecraft server
#
# User definition
#
MC_USER=minecraft
#
# Absolute Paths
#
MC_HOME=/home/$MC_USER
MC_BACKUP=$MC_HOME/backup
MC_SERVERS=$MC_HOME/servers
ALL_SERVERS="`ls $MC_SERVERS | grep -v ".pid"`"
#
# Realative Paths
#
JAVA="java"
MC_EXEC="-jar minecraft_server.jar nogui"
MC_CONFIG=server.properties
#
# Private functions
#
chkcfg() {
SERVERS=$@
PORTS=
XMS=0
XMX=0
for SERVER in $SERVERS; do
cd $MC_SERVERS/$SERVER
TMP_PORT=`grep server-port $MC_CONFIG | cut -d "=" -f 2`
PORTS="$PORTS $TMP_PORT"
TMP_XMS=`grep "xms=" $MC_CONFIG | cut -d "=" -f 2`
XMS=$(($XMS+$TMP_XMS))
TMP_XMX=`grep "xmx=" $MC_CONFIG | cut -d "=" -f 2`
XMX=$(($XMX+$TMP_XMX))
done
echo -en "Checking configuration of servers\t"
for PORT1 in $PORTS; do
MATCH=0
for PORT2 in $PORTS; do
if [ "$PORT1" == "$PORT2" ]; then
MATCH=$(($MATCH + 1))
fi
done
if [ $MATCH -gt 1 ]; then
echo "[ ERROR ]"
echo -e "\t-> Some servers are using the same port. Fix this!"
exit $(($MATCH -1))
fi
done
MEM_AVAIL=$(($(free -m | grep Mem | cut -c 37-40)+$(free -m | grep Swap | cut -c 37-40)))
if [ $XMS -gt $MEM_AVAIL ]; then
echo "[ ERROR ]"
echo -e "\t-> Servers require more minimum RAM in total than I have free!"
echo -e "\t ($XMS / $MEM_AVAIL)"
exit 2
fi
MEM_TOTAL=$(($(free -m | grep Mem | cut -c 15-18)+$(free -m | grep Swap | cut -c 15-18)))
if [ $XMX -gt $MEM_TOTAL ]; then
echo "[ ERROR ]"
echo -e "\t-> Servers require more maximum RAM in total than I can provide!"
echo -e "\t ($XMX / $MEM_TOTAL)"
exit 2
fi
echo "[ OK ]"
echo -e "\tXms total: $XMS\n\tXmx total: $XMX\n\tPorts: $PORTS"
return 0
}
status_server() {
if [ $# -ge 1 ]; then
SERVER=$1
QUIET=
if [ "$2" == "quiet" ]; then
QUIET=yes
fi
test $QUIET || echo -en "Status of Minecraft Server \"$SERVER\":\t"
if [ -d $MC_SERVERS/$SERVER ]; then
cd $MC_SERVERS/$SERVER
else
test $QUIET || echo "[ FAILED ]"
test $QUIET || echo -e "\t\t -> no such server!"
return 3
fi
if [ -f $MC_SERVERS/$SERVER.pid ]; then
PID=`cat $MC_SERVERS/$SERVER.pid`
PORT=`grep server-port $MC_CONFIG | cut -d "=" -f 2`
PS=$(($(ps -p $PID | wc -l) - 1))
if [ $PS -eq 1 ]; then
test $QUIET || echo "[ RUNNING ]"
test $QUIET || echo -e "\t PID: $PID \tPort: $PORT"
return 0
else
test $QUIET || echo "[ DIED ]"
rm $MC_SERVERS/$SERVER.pid
return 2
fi
else
test $QUIET || echo "[ DOWN ]"
return 1
fi
else
echo "Usage: status_server(SERVER{,quiet})"
return 4
fi
}
start_server() {
if [ $# -eq 1 ]; then
SERVER=$1
echo -en "Starting Minecraft Server \"$SERVER\"\t"
if ( ! status_server $SERVER quiet ); then
if [ -d $MC_SERVERS/$SERVER ]; then
cd $MC_SERVERS/$SERVER
else
echo "[ FAILED ]"
echo -e "\t\t -> no such server!"
return 1
fi
XMS=`grep xms= $MC_CONFIG | cut -d "=" -f 2`
XMX=`grep xmx= $MC_CONFIG | cut -d "=" -f 2`
if [ -z "$XMS" -o -z "$XMX" ]; then
echo "[ FAILED ]"
echo -e "\t-> No Xms or Xmx set!"
exit 2
fi
$JAVA -Xms"$XMS"M -Xmx"$XMX"M $MC_EXEC >> server.log 2>> server-err.log & echo $! > $MC_SERVERS/$SERVER.pid
sleep 2
if ( status_server $SERVER quiet ); then
echo "[ DONE ]"
return 0
else
echo "[ FAILED ]"
return 1
fi
else
echo "[ DONE ]"
echo -e "\t\t-> already running!"
return 0
fi
else
echo "Usage: start_server(SERVER)"
return 1
fi
}
stop_server() {
if [ $# -eq 1 ]; then
SERVER=$1
echo -en "Stopping Minecraft Server \"$SERVER\"\t"
if ( status_server $SERVER quiet ); then
if [ -d $MC_SERVERS/$SERVER ]; then
cd $MC_SERVERS/$SERVER
else
echo "[ FAILED ]"
echo -e "\t\t -> no such server!"
return 1
fi
kill `cat $MC_SERVERS/$SERVER.pid 2> /dev/null` 2> /dev/null
sleep 1
while ( status_server $SERVER quiet ); do
sleep 1
done
if ( ! status_server $SERVER quiet ); then
rm $MC_SERVERS/$SERVER.pid 2> /dev/null
echo "[ DONE ]"
return 0
fi
else
echo "[ DONE ]"
echo -e "\t\t-> not running!"
return 0
fi
else
echo "Usage: stop_server(SERVER)"
return 1
fi
}
backup_server() {
if [ $# -eq 1 -o $# -eq 2 ]; then
SERVER=$1
echo -en "Attempting to create backup of \"$SERVER\"\t"
if [ -d $MC_SERVERS/$SERVER ]; then
cd $MC_SERVERS/$SERVER
else
echo "[ FAILED ]"
echo -e "\t\t -> no such server!"
return 1
fi
cd $MC_SERVERS
if [ ! -d $MC_BACKUP ]; then
mkdir $MC_BACKUP
fi
TIME_STAMP=`date +%d.%m.%Y-%H.%M`
BACKUP_FILE="$MC_BACKUP/minecraftbackup#$SERVER#$TIME_STAMP.tar.gz"
tar -czf "$BACKUP_FILE" $SERVER > /dev/null 2> /dev/null
if [ $? -eq 0 ]; then
echo "[ DONE ]"
return 0
else
echo "[ FAILED ]"
rm $BACKUP_FILE 2> /dev/null
return 1
fi
else
echo "Usage: backup_server(SERVER{,TAG})"
return 1
fi
}
#
# Public functions
#
start() {
SERVERS="$@"
if [ -z "$SERVERS" ]; then
SERVERS=$ALL_SERVERS
fi
chkcfg $SERVERS
RETVAL=0
for SERVER in $SERVERS; do
start_server $SERVER
RETVAL=$(($RETVAL + $?))
done
return $RETVAL
}
stop() {
SERVERS="$@"
if [ -z "$SERVERS" ]; then
SERVERS=$ALL_SERVERS
fi
RETVAL=0
for SERVER in $SERVERS; do
stop_server $SERVER
RETVAL=$(($RETVAL + $?))
done
return $RETVAL
}
status() {
SERVERS="$@"
if [ -z "$SERVERS" ]; then
SERVERS=$ALL_SERVERS
fi
RETVAL=0
for SERVER in $SERVERS; do
status_server $SERVER
RETVAL=$(($RETVAL + $?))
done
return $RETVAL
}
restart() {
stop $@
start $@
}
backup() {
SERVERS="$@"
if [ -z "$SERVERS" ]; then
SERVERS=$ALL_SERVERS
fi
RETVAL=0
for SERVER in $SERVERS; do
SERVER_STATUS=`status_server $SERVER quiet; echo $?`
if [ $SERVER_STATUS -eq 0 ]; then
stop_server $SERVER
fi
backup_server $SERVER
if [ $SERVER_STATUS -eq 0 ]; then
start_server $SERVER
fi
done
return $RETVAL
}
restore() {
echo -en "Attempting to restore backup...\t\t"
PATTERN=$1
CNT=`ls -l $MC_BACKUP | grep "$PATTERN" | wc -l`
if [ $CNT -eq 1 ]; then
BACKUP=`ls $MC_BACKUP | grep "$PATTERN"`
SERVER=`echo $BACKUP | cut -d "#" -f 2`
if [ ! -d $MC_SERVERS/$SERVER ]; then
echo "[ ERROR ]"
echo -e "\t-> No such server \"$SERVER\"!"
return 1
fi
SERVER_STATE=`status_server $SERVER quiet 2> /dev/null; echo $?`
cd $MC_SERVERS
if [ $SERVER_STATE -eq 0 ]; then
stop_server $SERVER
fi
rm -R $SERVER
tar -xzf $MC_BACKUP/$BACKUP > /dev/null 2> /dev/null
RETVAL=$?
if [ $SERVER_STATE -eq 0 ]; then
start_server $SERVER
fi
if [ $RETVAL -eq 0 ]; then
echo "[ DONE ]"
return 0
else
echo "[ FAILED ]"
return 1
fi
else
echo "[ FAILED ]"
echo -e "\t\t-> ambiguous selection"
echo -e "\t\t ($BACKUP)"
return 2
fi
}
#
# Script begin
#
if [ "$USER" != "$MC_USER" -a "$1" != "status" ]; then
su $MC_USER -c "$0 $*" -s /bin/bash
exit $?
fi
cd $MC_HOME
CMD=$1
shift
case $CMD in
start) start $@
;;
stop) stop $@
;;
restart) restart $@
;;
status) status $@
;;
backup) backup $@
;;
restore) restore $@
;;
*) echo "Usage: `basename $0` {start,stop,status,restart,backup,restore}"
esac
exit $?
Diese habe ich via
Code:
sudo chkconfig {ts3d,mined} on
Offensichtlich werden die scripte auch beim booten gestartet, die Prozesse dann aber wieder gekillt, da beide Scripte einen entsprechenden Rückgabewert liefern.
Hat jemand eine Idee, woran das liegen kann und welche logfiles hilfreich wären?
Danke euch und LG
Schard