#!/bin/sh # Init file for hlds server daemon # # chkconfig: - 50 50 # description: hlds server daemon # # processname: hlds # config: no such # pidfile: /var/run/hlds.pid # # Start the Counter-Strike dedicated server as non-root. # # A modification of the CS Server startup script, to run the server # as a non-root user. # # ORIGINAL AUTHORS : # # Julien Escario ( pandemik@asylog.net ) # & # Cedric Rochat ( crochat@younics.org ) # # =========================================== # # What you need: # # Linux :) # awk # screen # the hlds_l & cstrike-files OR # a STEAM-installation # # YES, this script works fine with STEAM and CS 1.6 # # How to use: # # Edit the DIR-var to fit your system (just contains the path to the dir that contains hlds_run) # Edit the PARAMS-var to fit your needs # Edit the CS_USER-var to the name of the user that will run the server # # How to see the server-console: # # Just type in: screen -r hlds (or whatever you set $NAME to) # More info about screen can be found by typing "man screen" or using this nice link # http://server.counter-strike.net/server.php?cmd=howto&show=screen # # The easist way is to use this script simple as a start-script for your server # If you want to use it as a script to start the server at boot-time: # # Or use it manualy like: # /etc/rc.d/init.d/hlds start # /etc/rc.d/init.d/hlds stop # # If you don't want to start the server as root you have to change this: # add the var CS_USER and uncomment it # change the lines at the "start-block" # # You must be logged in as this user to re-attach the screen! # # DOC by jwm (jwm@counter-strike.de) # The user that will run the server CS_USER=_netgames # Leave this alone. NAME=hlds PATH=/bin:/usr/bin:/sbin:/usr/sbin # DON'T FORGET TO CHANGE THE PATH TO YOUR NEEDS! DIR=/var/lib/games/cs/ # Leave this alone. DAEMON=hlds_run # IP of running server. To be used when status called only. IPADRR="127.0.0.1" # Internet-server: PARAMS="-game cstrike +sv_lan 1 +map de_cbble -nomaster -insecure +maxplayers 18 -debug -timeout 1 -port 27015 -pidfile hlds.pid" # Leave this alone. DESC="Counter-Strike dedicated server" case "$1" in start) if [[ `su - -c "screen -ls |grep $NAME" $CS_USER` ]] then echo "HLDS is already running!" else echo "Starting $DESC: $NAME" su - -c "cd $DIR; screen -m -d -S hlds ./$DAEMON $PARAMS" $CS_USER fi ;; stop) if [[ `su - -c "screen -ls |grep $NAME" $CS_USER` ]] then echo -n "Stopping $DESC: $NAME" kill `ps aux | grep -v grep | grep -i $CS_USER | grep -i screen | grep -i $NAME | awk '{print $2}'` echo " ... done." else echo "Coulnd't find a running $DESC" fi ;; restart) if [[ `su - -c "screen -ls |grep $NAME" $CS_USER` ]] then echo -n "Stopping $DESC: $NAME" kill `ps aux | grep -v grep | grep -i $CS_USER | grep -i screen | grep -i $NAME | awk '{print $2}'` echo " ... done." else echo "Coulnd't find a running $DESC" fi echo -n "Starting $DESC: $NAME" su - -c "cd $DIR; screen -m -d -S hlds ./$DAEMON $PARAMS" $CS_USER echo " ... done." ;; status) ps aux | grep -v grep | grep hlds_r > /dev/null CHECK=$? [ $CHECK -eq 0 ] && echo "HLDS is UP" && qstat -P -hls $IPADDR || echo "HLDS is DOWN" ;; *) echo "Usage: $0 {start|stop|status|restart}" exit 1 ;; esac exit 0