X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

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

Открыть тему
Тема закрыта
> bash script для запуска сервера, Хелп ПингвинусЫ
KRoN
KRoN
Topic Starter сообщение 4.2.2011, 3:01; Ответить: KRoN
Сообщение #1


Бывалый
****


Группа: User
Сообщений: 475
Регистрация: 10.8.2010
Из: __Санкт-Петербург__ kronolius@gmail.com
Поблагодарили: 72 раза
Репутация:   17  


Всем драсте, пишу скрипт для запуска кс сервера.
Если вы используете Windows, дальше не читайте не чего не поймете...хотя может и поймете... но я думаю врядли.
Нужна помощь Линуксоида.
И еще прошу ты тыркайте за грамматические ошибки, мозг на другую волну настроен.

Как устроен мой скрипт, запуская скрипт он отправляется в /dev/null при этом создает 2 pid файла с ID процесса. Эти файлы живут спокойно до тех пор. пока я не запустил server_stop() из этих 2 файлов берутся ID и убивают процессы.
Это все хорошо работает, вчера возникла необходимость улучшения скрипта. чтобы работал примерно такой алгоритм:
ПРОверить файлы
если файлы есть, то проверить процесы
Если процессы найдены, написать "Уже работает"
Не запускать сервер
Если процессы не найдены, удалить файлы.
если файлов нет, запускать сервер.

По этому алгоритму я написал такой код;
if test -r serv1.pid;then
if [ps -p 'cat serv1.pid'];then
echo"Сервер уже запущен!!!";
else
if [ps -p 'cat serv1.pid'];then
kill -9 'cat serv1.pid'
rm -rf serv1.pid
break
fi
if test -r serv2.pid;then
rm -rf serv2.pid
fi
else
echo "Запуск сервера";
echo "IP: 188.127.239.124:$PORT Карта:$MAP Кол-во игроков:$PLAYER";
./hlds_run_$PREFIX''1 -binary ./hlds_i686_$PREFIX''2 -game cstrike -nomaster +maxplayers $PLAYER +port $PORT +map $MAP -pingboost $PINGBOOST > /dev/null 2>&1 &
ps | grep _$PREFIX'.'1 |awk '{ print $1}' > serv1.pid
ps | grep _$PREFIX'.'2 |awk '{ print $1}' > serv2.pid
exit
fi

Но он ниф*га не пашет censored.gif censored.gif censored.gif ...
Полный код вот:
Версия 0.2... Не работающая...
#/usr/bin/bash
PREFIX=publ;
PORT=27017;
MAP=de_dust2;
PLAYER=22;
PINGBOOST=3;
service_start(){
if test -r serv1.pid;then
if [ps -p 'cat serv1.pid'];then
echo"Сервер уже запущен!!!";
else
if [ps -p 'cat serv1.pid'];then
kill -9 'cat serv1.pid'
rm -rf serv1.pid
break
fi
if test -r serv2.pid;then
rm -rf serv2.pid
fi
else
echo "Запуск сервера";
echo "IP: 188.127.239.124:$PORT Карта:$MAP Кол-во игроков:$PLAYER";
./hlds_run_$PREFIX''1 -binary ./hlds_i686_$PREFIX''2 -game cstrike -nomaster +maxplayers $PLAYER +port $PORT +map $MAP -pingboost $PINGBOOST > /dev/null 2>&1 &
ps | grep _$PREFIX'.'1 |awk '{ print $1}' > serv1.pid
ps | grep _$PREFIX'.'2 |awk '{ print $1}' > serv2.pid
exit
fi
}

service_stop(){
for id in `cat serv1.pid`
do kill -9 $id
echo "Killing process ID $id"
echo "Removing $TITLE screen pid file"
rm -rf serv1.pid
break
done
for id in `cat serv2.pid`
do kill -9 $id
echo "Killing process ID $id"
echo "Removing $TITLE screen pid file"
rm -rf serv2.pid
break
done
}
case "$1" in
'start')
service_start
;;
'stop')
service_stop
;;
'restart')
service_stop
sleep 1
service_start
;;
*)
echo "Usage $0 start|stop|restart"
esac

Версия 0.1 отлично функционирующая:
#/usr/bin/bash
PREFIX=publ;
PORT=27017;
MAP=de_dust2;
PLAYER=22;
PINGBOOST=3;
service_start(){
echo "Запуск сервера";
echo "IP: 188.127.239.124:$PORT Карта:$MAP Кол-во игроков:$PLAYER";
./hlds_run_$PREFIX''1 -binary ./hlds_i686_$PREFIX''2 -game cstrike -nomaster +maxplayers $PLAYER +port $PORT +map $MAP -pingboost $PINGBOOST > /dev/null 2>&1 &
ps | grep _$PREFIX'.'1 |awk '{ print $1}' > serv1.pid
ps | grep _$PREFIX'.'2 |awk '{ print $1}' > serv2.pid
exit
}

service_stop(){
for id in `cat serv1.pid`
do kill -9 $id
echo "Killing process ID $id"
echo "Removing $TITLE screen pid file"
rm -rf serv1.pid
break
done
for id in `cat serv2.pid`
do kill -9 $id
echo "Killing process ID $id"
echo "Removing $TITLE screen pid file"
rm -rf serv2.pid
break
done
}
case "$1" in
'start')
service_start
;;
'stop')
service_stop
;;
'restart')
service_stop
sleep 1
service_start
;;
*)
echo "Usage $0 start|stop|restart"
esac

Знаю. что я лол, школота и всё остольное.
Надеюсь тут найдется реальный специалист. который сможет помочь.
Ибо. мои домыслы "Ошибся форумом...мне прямая дорого на линукс форумы".
Сенкс. что осили стоко не грамматных букаффф

Проблему решил изменил методы работы...
И от безисходности, и уверенности в том, что никто не поможет, надейся на себя.
Кому надо вот...
service_start() {

# Проверка pid файла

if [ -f serv1.pid ]; then

# Если pid существует, проверяем запущен ли сервер.

if [ "$(ps `cat serv1.pid` | wc -l)" -gt 1 ]; then

# Процесс запущен.

echo -e "Невозможно запустить сервре. Сервер уже запущен."

#exit 1

else

# Удаление pid-файла сервера

echo "Найдены не используемые pidфайлы."
echo "Удаление pid файлов. Запуcтите сервер еще раз!!!"

rm -rf serv1.pid
rm -rf serv2.pid

fi

else

# Сервер не запущен, стартуем.

if [ -x /server/publ/hlds_run_publ1 ]; then

echo "Запуск..."

echo "Сервер IP: "

echo "макс. игроков: $SIZE players"

cd /server/publ

./hlds_run_$PREFIX''1 -binary ./hlds_i686_$PREFIX''2 -game cstrike -nomaster +maxplayers $PLAYER +port $PORT +map $MAP -pingboost $PINGBOOST > /dev/null 2>&1 &
sleep 1
ps | grep _$PREFIX''1 |awk '{ print $1}' > serv1.pid
ps | grep _$PREFIX''2 |awk '{ print $1}' > serv2.pid

echo "Server Запущен."

chmod 666 *.pid #1> /dev/null 2> /dev/null

sleep 2

fi

fi

}


--------------------
Я спасу этот мир (с)
1
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
sZend
sZend
сообщение 4.2.2011, 3:39; Ответить: sZend
Сообщение #2


Завсегдатай
*****

Группа: Active User
Сообщений: 537
Регистрация: 30.4.2008
Из: Тарсонис
Поблагодарили: 147 раз
Репутация:   22  


Ну вы в первом пишете cat внутри простых кавычек а в окончательном в наклонных, а команды в наклонных нада. Ябы вобще пиды неписал если они только для контроля, а сразу же пээс аикс и фильтр по команде запуска.
ps ax | grep ' -game cstrike -nomaster +maxplayers '
с пробелом вначале регулярки грепа

Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.


--------------------
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Горячая тема (нет новых ответов) 10 бесплатных сервисов Google для бизнеса, о которых мало кто слышал
37 jack 11268 Сегодня, 2:36
автор: EconDude
Открытая тема (нет новых ответов) [РЕКОМЕНДУЮ] >>>Тестирование Вашего сайта, сервера на устойчивость и уязвимость!
10 barbaddos 4038 Сегодня, 0:55
автор: barbaddos
Открытая тема (нет новых ответов) Дизайн Landing Page для Вашего бизнеса
2 DPavelV 916 Вчера, 20:34
автор: DPavelV
Открытая тема (нет новых ответов) Единый инструмент для аналитики монетизации
0 tehno_music 290 Вчера, 17:38
автор: tehno_music
Открытая тема (нет новых ответов) В России могут создать "белый VPN" для добросовестных ресурсов
2 seostock 850 Вчера, 15:01
автор: wertu


 



RSS Текстовая версия Сейчас: 22.5.2018, 6:36
Дизайн