#! /bin/sh # # Start the Counter-Strike Source 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 # srcds & cstrike-files OR # # YES, this script works fine with fine with 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 srcds (or whatever you set $NAME to) # More info about screen can be found by typing "man 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: # # When this is done, copy the file to /etc/rc.d/init.d (or whereever your system stores the # scripts for starting the services # Now you can link the script to your runlevel-dir, here's an example for runlevel 3: # (THIS IS FOR DEBIAN! If you use e.g. Redhat you must change these dirs!!!) # # ln -s /etc/init.d/hlds /etc/rc3.d/S90hlds # ln -s /etc/init.d/hlds /etc/rc6.d/K50hlds # # 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=source # Leave this alone. NAME=srcds PATH=/bin:/usr/bin:/sbin:/usr/sbin # DON'T FORGET TO CHANGE THE PATH TO YOUR NEEDS! DIR=/games/steam/source # Leave this alone. DAEMON=srcds_run # Internet-server: PARAMS="-game cstrike +map de_dust +maxplayers 16 -autoupdate" # Leave this alone. DESC="Counter-Strike Source Dedicated Server" case "$1" in start) if [[ `su $CS_USER -c "screen -ls |grep $NAME"` ]] then echo "$DESC is already running" else echo "Starting $DESC: $NAME" su $CS_USER -c "cd $DIR; screen -m -d -S srcds ./$DAEMON $PARAMS" fi ;; stop) if [[ `su $CS_USER -c "screen -ls |grep $NAME"` ]] 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 $CS_USER -c "screen -ls |grep $NAME"` ]] 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 $CS_USER -c "cd $DIR; screen -m -d -S srcds ./$DAEMON $PARAMS" echo " ... done." ;; status) ps aux | grep -v grep | grep srcds_r > /dev/null CHECK=$? [ $CHECK -eq 0 ] && echo "$DESC is UP" || echo "$DESC is DOWN" ;; *) echo "Usage: $0 {start|stop|status|restart}" exit 1 ;; esac exit 0