Aufgrund einer
Anfrage von
Terrorkarotte aus unserem Moderatoren-Team, wurde die srcds_run abgeändert.
Es ist jetzt möglich den Server zu starten, ohne sich im gleichen Verzeichnis zu befinden.
Alte Startscripts, die weiterhin den Befehl "cd" verwenden, um vor dem Serverstart in das Verzeichnis zu wechseln, werden wie gewohnt funktionieren.
Wenn das aktuelle Verzeichnis '/home/irgendwas' ist und der Server in '/home/irgendwas/server123/orangebox', kann dieser nun mit '/home/irgendwas/server123/orangebox/srcds_run -game cstrike -ip ###.###.###.### -port ##### +map de_dust' gestartet werden. Der srcds_run wechselt automatisch in das Serververzeichnis. Da dieser in einer Subshell gestartet wird, bleiben auch Startscripts vom Verzeichniswechsel unbetroffen.
Der hinzugefügte Code für den Verzeichniswechsel:
|
Quellcode
|
1
|
cd "`dirname "$0"`"
|
Der Befehl 'dirname "$0"' gibt das Verzeichnis des Startscripts aus.
Da $0 in Anführungszeichen eingeschlossen ist, funktioniert das ganze auch mit Leerzeichen in Verzeichnisnamen.
Anhand der Kommandosubstitution (
darüber gab es auch eine Diksussion im Thread der HLDS-Mailing-List) wird die Ausgabe von dirname "$0" in das Script eingesetzt. Damit das ganze auch mit Leerzeichen weiterhin funktioniert, wurde das ganze nochmals in Anführungszeichen gesetzt.
Man könnte es auch so schreiben: cd "$(dirname "$0")" (POSIX Kommandosubstitution)
Die beiden Backslahes im Originalcode sollen die Shell anscheinend vor der falschen Interpretation der Anführungszeichen schützen. Da ich keine Bourne Shell habe, kann ich das damit leider nicht testen. Sicherlich wurde auch das aus Kompatibilitätsgründen so gewählt.
Desweiteren wurde die Überprüfung hinzugefügt, ob der User Root ist, mit dem der srcds gestartet werden soll. Falls ja, kommt diese Meldung:
************** WARNING ***************
Running the dedicated server as root
is highly discouraged. It is generally
unnecessary to use root privileges to
execute the dedicated server.
**************************************
The server will continue to launch in 10 seconds
The server will continue to launch in 9 seconds
The server will continue to launch in 8 seconds
The server will continue to launch in 7 seconds
The server will continue to launch in 6 seconds
The server will continue to launch in 5 seconds
The server will continue to launch in 4 seconds
The server will continue to launch in 3 seconds
The server will continue to launch in 2 seconds
The server will continue to launch in 1 seconds
Danach wird der Server mit Root-Rechten gestartet. Das soll unerfahrene Admins davon abhalten, ihren Server mit Root-Rechten zu starten. Vielleicht hätten sie noch den Hinweis hinzufügen sollen, dass man den Startvorgang mit CTRL+C abbrechen kann.
Hier der hinzugekommene Originalcode:
|
Quellcode
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
cd "`dirname "$0"`"
if test `id -u` -eq 0; then
echo
echo
echo "************** WARNING ***************"
echo "Running the dedicated server as root "
echo "is highly discouraged. It is generally"
echo "unnecessary to use root privileges to "
echo "execute the dedicated server. "
echo "**************************************"
echo
echo
timeout=10
while test $timeout -gt 0; do
echo -n "The server will continue to launch in $timeout seconds\r"
timeout=`expr $timeout - 1`
sleep 1
done
fi
|
PS: Es bringt also doch etwas sich vernünftig mit einzubringen. Die Stimmen wurden erhört und "it's done".