Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

Скрипт запуска

Статус пользователя Vitalijkee
сообщение 9.2.2020, 1:12
Сообщение #1


Стаж: 9 лет 4 месяца

Сообщений: 92
Благодарностей: 17
Полезность: 143

Подскажите пожалуйста в какую сторону копать.Есть скрипт запуска сервера хотелось бы добавить туда привязку по ядру как реализовать ?

СКРИПТ
#/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
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя adva
сообщение 9.2.2020, 1:50
Сообщение #2


Иконка группы

Стаж: 10 лет

Сообщений: 2543
Благодарностей: 1676
Полезность: 819

Меценат Меценат

Vitalijkee, taskset -c 2(номер ядра)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Vitalijkee
сообщение 9.2.2020, 2:02
Сообщение #3


Стаж: 9 лет 4 месяца

Сообщений: 92
Благодарностей: 17
Полезность: 143

Цитата(adva @ 9.2.2020, 2:50) *
Vitalijkee, taskset -c 2(номер ядра)

эту команду нашел но не разобрался куда добавить,пробовал по разному в итоге получил ошибку "Слишком много аргументов"
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Gecko
сообщение 9.2.2020, 10:53
Сообщение #4
Стаж: 5 лет 2 месяца

Сообщений: 1115
Благодарностей: 464
Полезность: 348

Vitalijkee,
у тебя конечно скрипт аГонь

Держи:
27015.sh
Код
#!/bin/bash

HLDS_PATH=/home/user_name/hlds/27015 # путь к корню папки сервера где лежит файл hlds_run
IP=192.168.0.1
PORT=27015
SCR_NAME=CS1 # Имя скрина
MAP=de_dust2

start()
{
cd $HLDS_PATH && screen -A -m -d -S $SCR_NAME taskset -c 0-2 ./hlds_run -pingboost 1 -game cstrike -master +ip $IP +port $PORT -noipx +maxplayers 32 +map $MAP
}
stop()
{
PID=`ps fax | grep $SCR_NAME | grep SCREEN | awk '{ print $1 }'`
kill $PID
}
restart()
{
stop
start
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
*)
echo $"Usage: $0 {start|stop|restart}"
exit 1
esac
exit 0



Ядра считаем от нуля
В данном примере распределяем на 2 ядра (на 0 и на 1)
Код
taskset -c 0-2


В данном примере вешаем на второе ядро
Код
taskset -c 1


В данном примере вешаем на третье ядро
Код
taskset -c 2


Отредактировал: Gecko, - 13.3.2024, 23:52


Не отвечаю на ЛС.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: