Server-Autorestart Debian 64

The Night Fury

Участник
Сообщения
1,300
Реакции
1,395
tiger_by, Не помогало, я, почти, с бубном танцевал, чтоб при спавне не крашился он.

Вот бинари, но советую sbox_maxvehicles на 2, не больше.
 

Vit_ amin

Добрая душа
Сообщения
1,552
Реакции
741
Народ да-да-да я у меня сервер с точно такой же ошибкой падает сервер Source Engine 2006 v34 есть ли шанс как то это исправить ?Пример из логов
May 22 13:15:11 112382-2 kernel: [160247.028641] srcds_i686[2428]: segfault at db733fb ip b6f1f5c8 sp bff5673c error 4 in vphysics_i486.so[b6d93000+25a000]
 

The Night Fury

Участник
Сообщения
1,300
Реакции
1,395
Попробуй обновиться этими бинарниками.

Лучшего решения я пока не нашёл.
Можно попробовать найти исходники и переписать под.. В общем утопия, т.к. здешние программисты мало в этом заинтересованы.

P.S.
131 версия была легоперепрограммируемой, а вот с этой — butthurt >:C
 

Vit_ amin

Добрая душа
Сообщения
1,552
Реакции
741
Размеры сильно отличаются + файл у меня vphysics_i486.so а в архиве vphysics.so.Нечего страшного в этом ?
 

The Night Fury

Участник
Сообщения
1,300
Реакции
1,395
Vit_ amin, залей и попробуй так:
1. Переименуй vphysics_i486.so в vphysics_i486.so__
2. Залей vphysics.so
3. Переименуй vphysics.so в vphysics_i486.so
 

Vit_ amin

Добрая душа
Сообщения
1,552
Реакции
741
Ясно спасибо

Добавлено через 14 часов 54 минуты
Vit_ amin, залей и попробуй так:
1. Переименуй vphysics_i486.so в vphysics_i486.so__
2. Залей vphysics.so
3. Переименуй vphysics.so в vphysics_i486.so
Неа не получилось ну лично на v34 краш.
 
Последнее редактирование:

KorDen

Atra esterní ono thelduin!
Сообщения
2,142
Реакции
1,424
Маленький вопрос. Кто-нибудь использует данный скрипт? Есть ли какие пожелания. Собираюсь и у себя запускать из-за аномальных крашей.
Я сейчас решил не морочиться с логами, а поставить в строку запуска -norestart (А так же, сам не использую, но иногда вроде помогает -nobreakpad), и использую немного другой скрипт (взято базово отсюда, но приницп немного другой). Кстати получается, что я могу удаленно полностью перезапустить сервер (именно перезапустить, а не сменить карту), написав в ркон exit

Собственно два файла - start_css_dm1.sh и screen_css_dm1.sh
В принципе первый файл элементарный
PHP:
/usr/local/bin/screen -A -m -S css_dm1 ./screen_css_dm1.sh
А вот второй
PHP:
#!/bin/sh
while [ 1 -eq 1 ]
do
/home/css32/css_dm1/css/srcds_run -game cstrike -port 27031 -nohltv -norestart +maxplayers 64 +clientport 28031 +sv_lan 0 +map de_dust2_unlimited +servercfgfile server1.cfg +sv_logsdir logs_1
kill -9 $(ps ax | grep 27031 | grep -v grep | awk '{print $1}') 
date >> /home/css32/logs_global/css_dm1.log
echo !!! Waiting 3 seconds to restart...
sleep 3
done
То есть я принудительно задал серверу не перезапускться при крашах, при этом после падения если вдруг что-то не дозавершилось (Из-за segmentation fault например), то "вычищается" килом, пишется дата краша в лог и идет на рестарт
 

tiger_by

Гл. Админ SourceGames.RU
Сообщения
631
Реакции
278
KorDen, по логике вещей после строки запуска тут же запустится kill и в твоем бесконечном цикле он будет запускаться и тут же умирать. Сам то тестил?
 

KorDen

Atra esterní ono thelduin!
Сообщения
2,142
Реакции
1,424
KorDen, по логике вещей после строки запуска тут же запустится kill и в твоем бесконечном цикле он будет запускаться и тут же умирать. Сам то тестил?

У самого то сейчас именно он и стоит, на протяжении довольно долгого времени... После запуска сервера, скипт то не продолжает работу, пока srcds_run не завершится - то есть килл прописывается уже после выключения сервера, если тот корректно не завершился.

Еще кстати (по идее, хотя еще не реализовал) можно тогда настроить даже под другим пользователем запуск команды килл если сервер упал, но не завершился - полезно например для монита
 

TolikCorp

Участник
Сообщения
874
Реакции
334
Кстати, нужно сделать там еще динамический лог файл, тобишь последний. Переделал чуток:
PHP:
#! /bin/bash
log_dir="/home/.../cstrike/logs"
cd $log_dir
logfile="$(ls -1 | tail -n1)"
time=60 # 60 секунд
while true; do
		string1=$(tail -n1 $logfile | sed "s/ //g"); sleep $time
		logfile="$(ls -1 | tail -n1)"
		string2=$(tail -n1 $logfile | sed "s/ //g")
		if [ $string1 = $string2 ]; then
			kill -9 $(ps ax | grep название_скрина | grep -v grep | awk '{print $1}');
			screen -wipe > /dev/null 2>&1
			screen -A -m -S название_скрина ./scrds_run [params]                 
		fi
done

+ 3 секунды - маловато. Ложных срабатываний будет много. (В ТФ2 разминка, будь то смена карты, или вообще все просто ходят без действий)

Можно этот скрипт даже на старт серва ставить.
 
Сверху Снизу