coolit
öhmm habt ihr schon Informationen wie man einen sochen Server startet ?
Bei Cod und UO lief es ja so :
screen -mS coduo ./coduo_lnxded +set pb_sv_enable 1 +exec coolit-uo.cfg +set net_port 28980
ich habe die Daten von CoD2 übertragen und die linuxbeta dazu gesetzt ... dann eine cfg bearbeitet und in den Mainordner kopiert ... nun dachte ich das ein ähnlicher Befehl den Server starten würde !
screen -mS cod2 ./cod2_lnxded +exec cod2.cfg +map mp_leningrad +set net_port 28940
Hier bekam ich dann den Fehler :
-bash: ./cod2_lnxded: Permission denied
dann habe ich es so versucht :
screen -mS ./cod2_lnxded +exec cod2.cfg +map mp_leningrad +set net_port 28940
also ohne das cod2 vor dem ./
auch hier startet kein Server ! Sie wachsen wie Pilze aus dem Boden aber keiner kann mir das englische so übersetzen oder mir eine Hilfe geben .....
Ich hoffe hier hat jemand eine Antwort für mich , den die Startanleitung im Linuxscript habe ich nicht gerafft !
--- edited by yoda: Thema angepasst ---
Nighthawk
Zuerst mach einfach mal
screen -S cod2
Dann wechselst Du in das Verzeichnis, wo Du CoD2 liegen hast.
Dann:
./cod2_lnxded +exec cod2.cfg +set net_port 28980
Wenn Du "Permission denied" bekommst, mach mal ein chmod 744 cod2_lnxded
sollte so funktionieren. Achso, wenn er die cfg net findet, kontrolliere auch hier mal die Rechte mit:
chmod 744 cod2.cfg
SoulJah
für die config setzt du die korrekten rechte so:
chmod 644 cod2.cfg
wenn niemand anders die config lesen können soll, dann so:
chmod 600 cod2.cfg
achte auch drauf, daß der owner richtig gesetzt ist.
so starte ich meinen server:
SrvPort="28962"
log="/var/log/cod/cod2.log"
user="cod"
path="/opt/cod2-srv"
codX="$path/cod2_lnxded"
homePath="/mnt/120gb/opt/cod2-srv"
params="+set fs_homepath $homePath +set net_port $SrvPort +exec cod2.cfg"
su -c "cd $path && $codX $params 2> $log >&2" $user &
den user muß man natürlich anlegen und die rechte entsprechend chownen.
falls man den server in einer remote shell startet, sollte man ein 'nohup' voranstellen, damit der server offen bleibt wenn die shell sich schließt. ein init-script ist allerdings sinnvoller.
aEc.#|FreeZe
also ich hab die cod2_lnxded ausgeführt , meine S&D config in main getahn , diese dann ausgeführt und server restartet
coolit
OK danke erst einmal für die Informationen und Hilfe .
Also ich konnte mit eurer Hilfe der Server wirklich starten ...
nur wie ich Putty zu machte war der Server auch weg ?
Ich habe hier was gelesen , aber kann mit der Hilfe so nichts anfangen .....
Es war glaube ich der Eintrag von SoulJah und dem Satz :
falls man den server in einer remote shell startet, sollte man ein 'nohup' voranstellen, damit der server offen bleibt wenn die shell sich schließt. ein init-script ist allerdings sinnvoller.
Öhmm wäre nett wenn ich dazu nochmal eine Angabe bekommen kann wie ich das erstellen oder machen soll
coolit
ich nehme alles zurück !
ich habe für das Wort nohup cod2 eingetragen ... und jetzt komm ich auch aus putty wieder raus !
DANKE FÜR EURE HILFE
SoulJah
ein angehängtes '&' bewirkt, daß der prozess in den hintergrund wandert und die kommandozeile wieder auftaucht. ein vorangestelltes 'nohup' ordnet laufende prozesse dem init-prozess zu, wenn die shell geschlossen wird. der prozess bleibt also aktiv obwohl der vaterprozess nicht mehr existiert.
im einfachsten fall so:
nohup ./cod2_lnxded &
aber wie gesagt, es empfiehlt sich nicht, den server in einer remote shell zu starten. aber mal zum testen ganz praktisch.
yoda
Starte per screen und geh dann mit STRG+A+D raus, und schließ damit auch putty, dann dürfte der Server anbleiben.
(Ich glaub es nicht, ich kann mal was zu Linux sagen
)
SoulJah
da ich mein rcon problem gelöst habe, hier mein init-script.
für dauerhaften betrieb ist die screen-lösung nicht besonders praktisch.
läuft unter suse, sollte aber auch mit andern distros funzen.
Code angehängt. Klicke hier zum Ein-/Ausblenden
code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
|
#! /bin/sh
# /etc/init.d/cod2
### BEGIN INIT INFO
# Provides: CoD2
# Default-Start: 2 3 5
# Default-Stop: 0 1 6
# X-UnitedLinux-Should-Start: network
# Description: Start CoD2 server
### END INIT INFO
SrvIP="localhost" #server hostname
SrvPort="28960" #server port
SrvRCONPwd="ChangeMe" #rcon password
log="/var/log/cod/cod2.log" #logfile (this is NOT the games_mp.log file from the server!)
user="cod" #user under which the server should run
path="/opt/cod2-srv" #path to the server
codX="$path/cod2_lnxded" #the server executable
params="+set fs_homepath $path +set net_port $SrvPort +exec cod2.cfg" #server start parameters
timeout=5 #timeout after that the server will be killed (in seconds)
. /etc/rc.status
case "$1" in
start)
echo -n "Starting CoD2 server"
checkproc $codX && echo -n "(already running)" || su -c "cd $path && $codX $params 2> $log >&2" $user &
rc_status -v
;;
stop)
echo -n "Shutting down CoD2 server"
checkproc $codX || echo -n "(not running)" && echo "ÿÿÿÿrcon $SrvRCONPwd quit" | netcat -u -w2 $SrvIP $SrvPort
checkproc $codX
if [ $? -eq 0 ]; then
sleep $timeout
checkproc $codX && killproc $codX || echo -n
fi
rc_status -v
;;
restart)
$0 stop
$0 start
rc_status
;;
*)
echo "Usage: $0 {start|stop|restart}"
exit 1
;;
esac
|
|
einfach als /etc/init.d/cod2 abspeichern, dann könnt ihr den server (unter suse mit dem runleveleditor) automatisch starten lassen. zusätzlich kann man per 'ln -s /etc/init.d/cod2 /usr/local/bin/cod2' einen link erstellen und dann per 'cod2 start|stop|restart' den server kontrollieren.
man hat keine konsole mehr und muß daher ein rcon tool benutzen. sämtliche ausgaben werden im logfile geloggt. das verzeichnis dazu muß unter umständen mit korrekten benutzerrechten angelegt werden.
der benutzer (im beispiel 'cod) muß bei bedarf angelegt werden.
das script lässt sich natürlich auch mit cod und coduo benutzen.
Mr.X
Danke für das script,wenn es auch ein wenig verwirrt,das meine z.B sof2 sieht so aus
#!/bin/sh
#Hier noch den Pfad einstellen (Ohne abliesendes / ):
PFAD=/home/sof2
#Name des Mods z.B. RPM oder osp (unbedingt auf groß und kleinschreibung achten!!!
MOD=rocmod
cd /home/sof2
declare -x HOME=/home/sof2
echo "`date`: server start" >> /home/sof2/ServerStarts.log
sudo -u sof2 /home/sof2/sof2ded +exec server.cfg +set net_port 20100 +set dedicated 2 +set fs_basepath /home/sof2/ +set fs_game $MOD >> cserver.log 2>&1 &
frage: ist es nicht möglich das für cod2 zu nutzen ?
hab das nicht geschrieben,fertig erstell erhalten,gleich die nächste frage:
warum kann ich dieses script nur als root ausführen ?
unser root server hat Debian Sarge drauf
SoulJah
du startest den server fast genauso wie ich.
mein script kann den server allerdings auch wieder stoppen und ist außerdem ein standardisiertes init-script, das sich voll ins linuxsystem integriert. guck mal ins /etc/init.d verzeichnis, die start-scripte sehen alle so aus. man kann den start (und stop) damit einfach automatisieren.
es richtet sich allerdings eher an etwas erfahrenere linux nutzer (da du debian nutzt, scheinst du aber recht hartgesotten zu sein).
zu deinem script:
du mußt zwischen dem user, der den server starten kann (sollte NUR root sein), und dem user, unter dem der server läuft (sollte NICHT root sein), unterscheiden.
nach einem 'chmod 754 <scriptname>' solltest du den server auch als normaler user starten können. das ist aber nicht unbedingt sinnvoll.
unabhängig davon, wer den server startet, läuft er immer dem user 'sof2' (wegen 'sudo -u sof2').
so könnte dein script für cod aussehen:
Code angehängt. Klicke hier zum Ein-/Ausblenden
code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
|
#!/bin/sh
#Hier noch den Pfad einstellen (Ohne abliesendes / ):
PFAD="/home/cod"
#Name des Mods z.B. RPM oder osp (unbedingt auf groß und kleinschreibung achten!!!
MOD="rocmod"
#Benutzer, unter dem der Server laufen soll
USER="sof2"
cd $PFAD
echo "`date`: server start" >> $PFAD/ServerStarts.log
sudo -u $USER $PFAD/cod_lnxded +exec server.cfg +set net_port 20100 +set dedicated 2 +set fs_homepath $PFAD +set fs_game $MOD >> $PFAD/cserver.log 2>&1 &
|
|
das sof2 script solltest du jetzt selber bei bedarf ändern können, wenn du den server unter einem anderen user laufen lassen willst. ;)