Hallo, danke schonmal für die Antwort,
ich merk schon, ich hab einige Infos vergessen zu machen
![Smile :)](./images/smilies/icon_smile.gif)
aber dafür sind wir ja hier
nun es ist ein stink normaler Linux Server ohne grafische Oberfläche mit nur einem Monitor und der wird nicht benutzt weil ich mich mit putty per ssh connecte. Es wird mit dem befehl screen ein ich vermute virtueller Bildschirm geschaffen in dem man sich mit dem befehl screen -r einlogen kann und live schauen kann was da grad der dedicated server anstellt man kan auch serverbefehle eingeben. wenn alle server laufen sind 6 screen sessions aktiv alle unter dem ein und selben benutzer namens server
ok jetzt wird es länger denn die einen scripte starten die nächsten scripte (wie gesagt mit jessie hat es tadellos funktioniert und starte ich die scripte manuell geht auch alles tadellos so wie es sein soll, nur automatisch starten zu lassen geht nicht seit ich auf stretch umgestiegen bin
rokhstart.sh <--führt 3 befehle aus, 2 befehle starteten eine screen session eine für die datenbank mit mariadb und die andere für den server der 3. befehl zeigt nur an ob der server läuft
Code: Alles auswählen
#!/bin/sh
cd /steam/rokh/LinuxServer/
echo "Starte Rokh Datenbank";
./start_database.sh 14004
echo "Starte Rokh Server";
sleep 3
./start_server.sh 14004
echo "Server gestartet";
./list_servers.sh
die 14004 ist notwendig das ist der mariaDB port
diese scripte sind die vom spiele server selbst
start_database.sh
Code: Alles auswählen
#!/bin/bash
# start_database.sh - Start a server with a specific id
##### Constant
infofile=./.rokhservers/servers.info
passwd=bM8BSfhqeUsPSKsg
mysql_base_port=14002
mysql_base_socket=/tmp/rokh_mysql
db_path=./Database/mariadb-10.1.11-linux-x86_64
data_base_path="$db_path/data"
##### get arguments
if [ $# -ne 1 ]; then
echo "$0: usage: start_database.sh <server id>"
exit 1
fi
# we use the port number for the db identifier as well
name=$1
mysql_port=$1
server_id=$1
if [ ! -f "$infofile" ];
then
echo "ERROR: File $infofile does not exist." >&2
echo "Make sure you create the game server first using the 'create_server.sh' script." >&2
exit -1
fi
function check_running
{
local id_to_check=$2
local id="$(echo $1 | cut -f1 -d'.')"
server_name="$(echo $1 | cut -f2 -d'.')"
if [ "$id_to_check" == "$id" ]; then
echo "Server '$server_name' ($id) is already running."
exit 1
fi
exit 0
}
# check if database is already running, this function will exit the script if the server is running
echo Checking running instances...
while read data
do
out=$(check_running "$data" $server_id)
res=$?
if [ "$res" -eq 1 ]; then
echo "Server already running ($server_id), exiting."
exit 0
fi
done < <(screen -ls | grep rokh_database)
runninginstances=$(screen -ls | grep rokh_database-$server_id)
if [[ -n "${runninginstances/[ ]*\n/}" ]]
then
echo "DB Already running!"
exit -1
fi
echo Ok.
echo Starting Rokh Database server with id $server_id...
mysql_socket=$mysql_base_socket-$name.sock
db_data_path="$data_base_path/$name"
echo "Starting up mysqld instance '$name' on port $mysql_port."
echo "Database directory: $db_path"
echo "Data directory: $db_data_path"
echo "Port: $mysql_port"
echo "Socket file: $mysql_socket"
if [ ! -d "$db_data_path" ]; then
# data path already exists, bailing out
echo "Data directory: $db_data_path does not exists! Database ID is invalid."
exit -1
fi
cd "${0%/*}"
# starting database...
# Returns true once mysql can connect.
# Thanks to http://askubuntu.com/questions/697798/shell-script-how-to-run-script-after-mysql-is-ready
mysql_ready() {
$db_path/bin/mysqladmin ping --user=root --port=$mysql_port --socket=$mysql_socket > /dev/null 2>&1
}
# -d starts a screen session and immediately detaches from it
# -m forces creating a new screen session
# -S lets you give the session a name
# -L turns on logging to ~/screenlog.0
echo "Starting database ..."
#echo "screen -dmS rokh_database-$name $db_path/bin/mysqld --no-defaults --user=root --basedir=$db_path --datadir=$db_data_path --port=$mysql_port --socket=$mysql_socket"
screen -dmS rokh_database-$name $db_path/bin/mysqld --no-defaults --user=root --basedir=$db_path --datadir=$db_data_path --port=$mysql_port --socket=$mysql_socket
while !(mysql_ready)
do
echo "Waiting for database..."
sleep 3
done
echo "Database Started!"
start_server.sh
Code: Alles auswählen
#!/bin/bash
# start_server.sh - Start a server with a specific id
##### Constant
infofile=./.rokhservers/servers.info
##### get arguments
if [ $# -ne 1 ]; then
echo "$0: usage: start_server.sh <server id>"
exit 1
fi
server_id=$1
if [ ! -f "$infofile" ];
then
echo "ERROR: File $infofile does not exist." >&2
echo "Make sure you create the game server first using the 'create_server.sh' script." >&2
exit -1
fi
function check_running
{
local id_to_check=$2
local id="$(echo $1 | cut -f1 -d'.')"
server_name="$(echo $1 | cut -f2 -d'.')"
if [ "$id_to_check" == "$id" ]; then
echo "Server '$server_name' ($id) is already running."
exit 1
fi
exit 0
}
function start_params
{
local id_to_check=$2
local server_name="$(echo $1 | cut -f1 -d'|')"
local server_map="$(echo $1 | cut -f3 -d'|')"
local server_params="$(echo $1 | cut -f4 -d'|')"
id="$(echo $1 | cut -f2 -d'|')"
if [ "$id_to_check" == "$id" ]; then
echo "$server_map $server_params"
exit 1
fi
exit 0
}
# check if server is already running, this function will exit the script if the server is running
echo Checking running instances...
while read data
do
out=$(check_running "$data" $server_id)
res=$?
if [ "$res" -eq 1 ]; then
echo "Server already running ($server_id), exiting."
exit 0
fi
done < <(screen -ls | grep rokh_server)
echo Ok.
echo Starting Rokh dedicated server with id $server_id...
# this will get the launch parameters from the server.info file and launch the game server with those.
while read data
do
out=$(start_params "$data" $server_id)
res=$?
start_arguments=$out
if [ "$res" -eq 1 ]; then
echo "Launching external process..."
screen -dmS rokh_server-$server_id Rokh/Binaries/Linux/RokhServer $start_arguments -log
fi
done < <(cat $infofile)
echo Done !
exit
mein erstelltes script zum beenden sieht so aus, das gleiche schema wie beim starten, es werden die scripte vom server ausgeführt
rokhdown.sh
Code: Alles auswählen
cd /steam/rokh/LinuxServer/
echo "Stoppe Rokh Datenbank";
./stop_database.sh 14004
echo "Stoppe Rokh Server";
sleep 3
./stop_server.sh 14004
echo "Server gestoppt";
sleep 2
./list_servers.sh
ein anderer server Conan Exiles ist ebenso ein dedicated server der mit wine2.02 ausgeführt wird
conanstart.sh
Code: Alles auswählen
#!/bin/sh
export WINEARCH=win64
export WINEPREFIX=/home/server/.wine64
screen -A -m -d -S conan /home/wine2.0/wine64 /steam/conan/ConanSandboxServer.exe -log -ServerName="[NwG][GER]Exil der Todesbringer[Entspannt]+XP+Harvest" -GameServerPort=27015 -GameServerQueryPort=27016 -AdminPassword=XxXxXxXx -MaxPlayers=35 -HarvestAmountMultiplier=10.000000 -PlayerXPHarvestMultiplier=3 -MaxNudity=Full
conandown.sh
Code: Alles auswählen
#!/bin/bash
echo "Conan Exiles Server wired beendet"
screen -S conan -X quit
und demnach wenn ich eingebe
werden mir die offenen screen angezeigt
so soll es aussehen wenn ich mich als server einlogge und den befehl eingebe
Code: Alles auswählen
server@Server:~$ screen -ls
There are screens on:
1389.conan (24.08.2017 18:42:49) (Detached)
956.rokh_server-14004 (24.08.2017 18:25:13) (Detached)
901.rokh_database-14004 (24.08.2017 18:25:07) (Detached)
3 Sockets in /run/screen/S-server.
server@Server:~$
beim manuellen start siehts so aus bei meinen autostart versuchen alles vergebens kein einziger ist gestartet
ich hoffe die informationen waren aufschlussreicher wenn ich noch irgendwelche infos widerlegen soll bitte einfach sagen, dann versuch ich alle weiteren infos zu posten
vielen Dank schonmal
PS: ich denke es ist wider irgend so ne sicherheits sache von Stretch was einfach verhindert dass scripte die andere scripte starten unterbindet