apt-get install screen
#!/bin/sh
sleep 1
screen -A -m -d -S имя_скрина ./srcds_run -console -game cstrike -port 27012 +maxplayers 30 +map ba_jail_electric_vip_v2 +sv_lan 0
Stop.sh:
#!/bin/sh
kill `ps xww | grep "srcds" | cut -c1-5` 2>/dev/null
ps xww | grep "srcds" | cut -c1-5 | xargs kill 2>/dev/null
со скрином способ не пашет.
[css@game ~]$ more css-1.sh
#!/bin/bash
case "$1" in
start)
/usr/local/bin/screen -AmdS css-1-srv ~/screen-css-1-srv.sh
;;
restart)
/usr/local/bin/screen -S css-1 -X -p0 stuff 'exit'`echo -ne '\015'`
sleep 1;
kill -9 $(ps ax | grep "port 27034" | grep -v grep | awk '{print $1}')
;;
stop)
/usr/local/bin/screen -S css-1-srv -X -p0 stuff 'exit'`echo -ne '\015'`
sleep 2;
kill -9 $(ps ax | grep "port 27034" | grep -v grep | awk '{print $1}')
kill -9 $(ps ax | grep screen-css-1-srv | grep -v grep | awk '{print $1}')
/usr/local/bin/screen -wipe
;;
upd)
/usr/local/bin/screen -AmdS upd-css-1 ~/steam -command update -game "Counter-Strike Source" -dir "~/css-1" -retry -verify_all
;;
*)
echo "Usage: start|stop|restart|upd"
esac
[css@game ~]$ more screen-css-1-srv.sh
#!/bin/sh
while true
do
cd ~/css-1/css
./srcds_run -game cstrike -port 27034 +КУЧА_ПАРАМЕТРОВ
kill -9 $(ps ax | grep "port 27034" | grep -v grep | awk '{print $1}')
echo "Restarting CSS #1" >> ~/restarts.log
date >> ~/restarts.log
echo !!! Waiting 10 seconds to restart...
sleep 10
done
Самый нормальный вариант это screen. Задал имя скрина вот и всё. Потом положил его.
Для установки скрина от рутаPHP:apt-get install screen
Вот тебе start.sh
PHP:#!/bin/sh sleep 1 screen -A -m -d -S имя_скрина ./srcds_run -console -game cstrike -port 27012 +maxplayers 30 +map ba_jail_electric_vip_v2 +sv_lan 0
Команда screen -ls выводит все скрины, чтобы убить пишешь kill номер процесса.
Или же screen -r имя скрина тебе запустит в консоль сервера и там нажмешь "ctrl+c" и он его тоже завершит!!!
зачем флаг -r ? он и без флагов хорошо внутрь пускает, и создает если нет такого скриина
Вот что у меня, заодно с возможностью управления через вебсайт завязано, собирал все по кусочкам и с экспериментами...
C-подобный:[css@game ~]$ more css-1.sh #!/bin/bash case "$1" in start) /usr/local/bin/screen -AmdS css-1-srv ~/screen-css-1-srv.sh ;; restart) /usr/local/bin/screen -S css-1 -X -p0 stuff 'exit'`echo -ne '\015'` sleep 1; kill -9 $(ps ax | grep "port 27034" | grep -v grep | awk '{print $1}') ;; stop) /usr/local/bin/screen -S css-1-srv -X -p0 stuff 'exit'`echo -ne '\015'` sleep 2; kill -9 $(ps ax | grep "port 27034" | grep -v grep | awk '{print $1}') kill -9 $(ps ax | grep screen-css-1-srv | grep -v grep | awk '{print $1}') /usr/local/bin/screen -wipe ;; upd) /usr/local/bin/screen -AmdS upd-css-1 ~/steam -command update -game "Counter-Strike Source" -dir "~/css-1" -retry -verify_all ;; *) echo "Usage: start|stop|restart|upd" esacСобирал идеи постепенно отовсюду, скрипт параметров, когда начинал делать, вообще из файла запуска тимспика выдрал ))) Рестарты (убийства) и подача команд в скрин это уже творчество tiger_by и кого-то еще.... скрипт цикла с записью лога рестарта это уже полностью мое творчества кроме строчки убийства...C-подобный:[css@game ~]$ more screen-css-1-srv.sh #!/bin/sh while true do cd ~/css-1/css ./srcds_run -game cstrike -port 27034 +КУЧА_ПАРАМЕТРОВ kill -9 $(ps ax | grep "port 27034" | grep -v grep | awk '{print $1}') echo "Restarting CSS #1" >> ~/restarts.log date >> ~/restarts.log echo !!! Waiting 10 seconds to restart... sleep 10 done
case "$1" in
start)
screen -S $screen_name -X -p0 stuff 'exit'`echo -ne '\015'`
sleep 5
kill -9 $(ps ax | grep "port $game_port" | grep -v grep | awk '{print $1}')
kill -9 $(ps ax | grep $screen_name | grep -v grep | awk '{print $1}')
screen -AmdS $screen_name ~/screen-css-1-srv.sh
;;
restart)
screen -S $screen_name -X -p0 stuff 'exit'`echo -ne '\015'`
sleep 5
kill -9 $(ps ax | grep "port $game_port" | grep -v grep | awk '{print $1}')
;;
stop)
screen -S css-1-srv -X -p0 stuff 'exit'`echo -ne '\015'`
sleep 5
kill -9 $(ps ax | grep "port $game_port" | grep -v grep | awk '{print $1}')
kill -9 $(ps ax | grep $screen_name | grep -v grep | awk '{print $1}')
screen -wipe > /dev/null 2>&1
;;
update)
i=0
while [$i -lt 5]
do
screen -S $screen_name -X -p0 stuff 'say Update server after a few seconds'`echo -ne '\015'`
sleep 1
done
screen -S $screen_name -X -p0 stuff 'exit'`echo -ne '\015'`
sleep 5
kill -9 $(ps ax | grep "port $game_port" | grep -v grep | awk '{print $1}')
kill -9 $(ps ax | grep $screen_name | grep -v grep | awk '{print $1}')
kill -9 $(ps ax | grep ${screen_name}_update | grep -v grep | awk '{print $1}')
screen -wipe > /dev/null 2>&1
screen -AmdS ${screen_name}_update $hldsupdatetool -command update -game "Counter-Strike Source" -dir "$game_directory" -retry -verify_all
;;
*)
echo "Usage: start|stop|restart|update"
esac
#!/bin/sh
while true
do
cd ~/css-1/css
find ./ -type f -mtime +7 -maxdepth 0 -name "_restart.log" -exec rm {} \; -print
./srcds_run -game cstrike -port 27034 +КУЧА_ПАРАМЕТРОВ
kill -9 $(ps ax | grep "port 27034" | grep -v grep | awk '{print $1}')
echo "[---------" >> ./`date +%F`_restart.log
echo "$(date +'%F-%R:%S') Перезапуск сервера!" >> ./`date +%F`_restart.log
echo "Ожидайте 10 секунд"
sleep 10
done
if [$(wc -l ./`date +%F`_restart.log) -lt 2]
then
echo "Лишних перезапусков нет"
else
echo"Обратите внимание на файл ~/css-1/css/`date +%F`_restart.log" >> /home/global_restarts.log
fi
Вот что у меня, заодно с возможностью управления через вебсайт завязано, собирал все по кусочкам и с экспериментами...
C-подобный:[css@game ~]$ more css-1.sh #!/bin/bash case "$1" in start) /usr/local/bin/screen -AmdS css-1-srv ~/screen-css-1-srv.sh ;; restart) /usr/local/bin/screen -S css-1 -X -p0 stuff 'exit'`echo -ne '\015'` sleep 1; kill -9 $(ps ax | grep "port 27034" | grep -v grep | awk '{print $1}') ;; stop) /usr/local/bin/screen -S css-1-srv -X -p0 stuff 'exit'`echo -ne '\015'` sleep 2; kill -9 $(ps ax | grep "port 27034" | grep -v grep | awk '{print $1}') kill -9 $(ps ax | grep screen-css-1-srv | grep -v grep | awk '{print $1}') /usr/local/bin/screen -wipe ;; upd) /usr/local/bin/screen -AmdS upd-css-1 ~/steam -command update -game "Counter-Strike Source" -dir "~/css-1" -retry -verify_all ;; *) echo "Usage: start|stop|restart|upd" esacСобирал идеи постепенно отовсюду, скрипт параметров, когда начинал делать, вообще из файла запуска тимспика выдрал ))) Рестарты (убийства) и подача команд в скрин это уже творчество tiger_by и кого-то еще.... скрипт цикла с записью лога рестарта это уже полностью мое творчества кроме строчки убийства...C-подобный:[css@game ~]$ more screen-css-1-srv.sh #!/bin/sh while true do cd ~/css-1/css ./srcds_run -game cstrike -port 27034 +КУЧА_ПАРАМЕТРОВ kill -9 $(ps ax | grep "port 27034" | grep -v grep | awk '{print $1}') echo "Restarting CSS #1" >> ~/restarts.log date >> ~/restarts.log echo !!! Waiting 10 seconds to restart... sleep 10 done
Как сделал через веб, если не секрет?
#!/bin/sh/
info_line_half="[---------"
ip_address="ИП АДРЕС ЗАПУСКА"
server_dir="/home/user/css_1"
screen_name="css"
# Название игры для обновления
game_prefix_1="Counter-Strike Source"
# Название игры для запуска
game_prefix_2="cstrike"
# Путь до файла запуска srcds_run от каталога сервера
game_prefix_3="css/"
tickrate="66"
game_port="27015"
default_map="de_dust2"
maxplayers="64"
params_ext="+tv_enable 0 -nobots -nocrashdialog"
while true
do
cd $server_dir
./${game_prefix_3}srcds_run -console -game $game_prefix_2 -tickrate $tickrate -secure +ip $ip_address +map $default_map -port $game_port +maxplayers $maxplayers $params_ext
kill -9 $(ps ax | grep "port $game_port" | grep -v grep | awk '{print $1}')
echo "$info_line_half $(date +'%F-%R:%S') | Перезапуск сервера!" >> ./restarts.log
echo "Ожидайте 10 секунд"
sleep 10
done