[Linux] Start.sh Stop.sh

Пыхарь

Участник
Сообщения
145
Реакции
18
Помогите создать бинарники Start.sh и Stop.Sh
Спасибо. А то Не могу найти. Или может вы что то лучше предложите чем я нашел. (вроде нашел start)
 

Пыхарь

Участник
Сообщения
145
Реакции
18
Да но нужного не нашел. Мне нужно что файл stop останавливал определенный сервер в папке где он лежит.
 

SenatoR

Участник
Сообщения
773
Реакции
344
Не проще ли просто командой kill его положить?
 

BMW M6

Участник
Сообщения
1,217
Реакции
534
Самый нормальный вариант это 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" и он его тоже завершит!!!
 

Пыхарь

Участник
Сообщения
145
Реакции
18
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

со скрином способ не пашет.
 

BMW M6

Участник
Сообщения
1,217
Реакции
534

KorDen

Atra esterní ono thelduin!
Сообщения
2,142
Реакции
1,424
Вот что у меня, заодно с возможностью управления через вебсайт завязано, собирал все по кусочкам и с экспериментами...
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
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
Собирал идеи постепенно отовсюду, скрипт параметров, когда начинал делать, вообще из файла запуска тимспика выдрал ))) Рестарты (убийства) и подача команд в скрин это уже творчество tiger_by и кого-то еще.... скрипт цикла с записью лога рестарта это уже полностью мое творчества кроме строчки убийства...
 

qfewfwefewfef3414123

Участник
Сообщения
94
Реакции
17
Самый нормальный вариант это 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 ? он и без флагов хорошо внутрь пускает, и создает если нет такого скриина
 

KorDen

Atra esterní ono thelduin!
Сообщения
2,142
Реакции
1,424
зачем флаг -r ? он и без флагов хорошо внутрь пускает, и создает если нет такого скриина

:facepalm: -r от слова Resume, если скрыто, тебе надо вызвать "наверх" один из детаченных серверов, или есть другие варианты открытия?
 

TolikCorp

Участник
Сообщения
874
Реакции
334
Вот что у меня, заодно с возможностью управления через вебсайт завязано, собирал все по кусочкам и с экспериментами...
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
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
Собирал идеи постепенно отовсюду, скрипт параметров, когда начинал делать, вообще из файла запуска тимспика выдрал ))) Рестарты (убийства) и подача команд в скрин это уже творчество tiger_by и кого-то еще.... скрипт цикла с записью лога рестарта это уже полностью мое творчества кроме строчки убийства...
Тут смотри, в апдейте надо сделать так: чтобы при запуске апдейте он выключал сервы, и кое-чего еще:

PHP:
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

Это так сказать защита от 100500 нажатий например на старт, или обновление

Добавлено через 16 минут
И вот тут бы неплохо поправочку маленькую, так сказать для удобства:
PHP:
#!/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

Добавлено через 17 минут
О как!
 
Последнее редактирование:

TolikCorp

Участник
Сообщения
874
Реакции
334
Почему сомнительно? тем более есть проверка на устарелость. т.е. Удаляются те, что старше 7 дней, и ищется только в этой папке, никуда в в сторону.

Добавлено через 6 минут
+ в названии файла он не пишет же время, только год-месяц-число
 
Последнее редактирование:

TolikCorp

Участник
Сообщения
874
Реакции
334
Как вариант сделать подсчет строк данном файле, если больше двух () то писать в глобальный рестарт_лог
PHP:
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
 

sergeant

Участник
Сообщения
44
Реакции
2
Вот что у меня, заодно с возможностью управления через вебсайт завязано, собирал все по кусочкам и с экспериментами...
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
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
Собирал идеи постепенно отовсюду, скрипт параметров, когда начинал делать, вообще из файла запуска тимспика выдрал ))) Рестарты (убийства) и подача команд в скрин это уже творчество tiger_by и кого-то еще.... скрипт цикла с записью лога рестарта это уже полностью мое творчества кроме строчки убийства...

Как сделал через веб, если не секрет?
 

KorDen

Atra esterní ono thelduin!
Сообщения
2,142
Реакции
1,424

TolikCorp

Участник
Сообщения
874
Реакции
334
Доделал "исполняемый под скрином файл"
Командный подхватывает настройки из этого файла при помощи grep & sed и подходит для всех игр на движке Сурс

PHP:
#!/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
Командный выложу позже
 
Последнее редактирование:
Сверху Снизу