#/usr/bin/bash
TITLE=''
LONGNAME=''
NAME='111111'
DAEMON='hlds_run'
UPDATER='/usr/hlds'
STEAM='/home/111' # Доманяя директория сервера.
USER='root' # Пользователь под которым будет запускатся сервер
# Game options
IP='192.168.0.101' # IP Сервера
PORT='27015' # Порт сервера
MAP='de_dust2_2x2' # Стартовая карта
GAME='cstrike' # Мод (cstrike)
SIZE='32' # Кол. игроков
HIGHPRIORITY=-20 #Приоритет, поставьте -20 для высокого приоритета ,в таком случае, сервер нужно запускать от root. 1 станрадтный приоритет.
VAC='-secure' # VAC античит.
TICRATE='-sys_ticrate 1500' # FPS сервера.
PINGBOOST='-pingboost 3' #Нагрузка на сервер.
DEBUG='-debug' #Автоподнятие сервера при его падении.
LOG='-condebug'
# Ниже ничего не менять!
OPTS="-game $GAME $VAC $DEBUG $LOG +port $PORT +maxplayers $SIZE +sv_lan 0 +map $MAP $TICRATE $PINGBOOST +ip $IP -pidfile $STEAM/$GAME/$NAME.pid"
# Screen
CURRENT_USER=$(/usr/bin/whoami)
if [ "$CURRENT_USER" = "$USER" ]; then
INTERFACE="/usr/bin/screen -A -m -d -S $NAME"
else
INTERFACE="sudo -u $USER /usr/bin/screen -A -m -d -S $NAME "
fi
service_start() {
# Проверка pid файла
if [ -f $STEAM/$GAME/$NAME.pid ] || [ -f $STEAM/$GAME/$NAME-screen.pid ]; then
# Если pid существует, проверяем запущен ли сервер.
if [ "$(ps -p `cat $STEAM/$GAME/$NAME.pid` | wc -l)" -gt 1 ]; then
# Процесс запущен.
echo -e "<span style=\"color:#00DB3B\"><b> <b>$TITLE</b>Включён.</b></span>"
#exit 1
else
# Если процесс остановлен, удаляем pid.
if [ "$(ps -p `cat $STEAM/$GAME/$NAME.pid` | wc -l)" -gt 1 ]; then
# Screen еще жив.
# Получение ID процесса с pid-файла
kill -9 `cat $STEAM/$GAME/$NAME-screen.pid`
echo "Killing process ID $id"
echo "Удаление <b>$TITLE</b> screen pid file"
rm -rf $STEAM/$GAME/$NAME-screen.pid
break
fi
if [ -f $STEAM/$GAME/$NAME-screen.pid ]; then
rm -rf $STEAM/$GAME/$NAME-screen.pid
fi
# Удаление pid-файла сервера
rm -rf $STEAM/$GAME/$NAME.pid
# Wipe всех старых скринов.
screen -wipe 1> /dev/null 2> /dev/null
service_start
fi
else
# Сервер не запущен, стартуем.
if [ -x $STEAM/$DAEMON ]; then
cd $STEAM
$INTERFACE $STEAM/$DAEMON $OPTS
sleep 1
ps -ef | grep SCREEN | grep "$NAME" | grep -v grep | awk '{ print $2}' > $STEAM/$GAME/$NAME-screen.pid
echo "<span style=\"color:#00DB3B\"><b> <b>$TITLE</b>Сервер успешно запущен.</b></span>"
chmod 666 $STEAM/$GAME/*.pid #1> /dev/null 2> /dev/null
chown $USER $STEAM/$GAME/*.pid #1> /dev/null 2> /dev/null
sleep 2
if [ $HIGHPRIORITY = 1 ]; then
renice -20 `cat $STEAM/$GAME/$NAME.pid` >/dev/null 2>&1
fi
fi
fi
}
service_stop() {
if [ -f $STEAM/$GAME/$NAME.pid ] || [ -f $STEAM/$GAME/$NAME-screen.pid ]; then
for id in `cat $STEAM/$GAME/$NAME-screen.pid`
do kill -9 $id
rm -rf $STEAM/$GAME/$NAME-screen.pid
break
done
# Remove server pid file
rm -rf $STEAM/$GAME/$NAME.pid
# Wipe all old screen sessions
screen -wipe 1> /dev/null 2> /dev/null
echo "<span style=\"color:#E81123\"><b>Сервер успешно остановлен.</b></span>"
else
echo -e "<span style=\"color:#E81123\"><b>Выключен.</b></span>"
#exit 1
fi
}
service_update() {
echo "Stopping and Clearing all Service files."
service_stop
sleep 2
service_clear
sleep 2
echo "Updating Steam Updater"
cd $UPDATER
./steam 1> /dev/null 2> /dev/null
echo "Updating Game Files"
./steam -command update -game $GAME -dir . 1> /dev/null 2> /dev/null
sleep 2
service_start
}
case "$1" in
'start')
service_start
;;
'stop')
service_stop
;;
'restart')
service_stop
sleep 1
service_start
;;
'update')
service_update
;;
*)
echo "Usage $0 start|stop|restart"
esac