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 '
с пробелом вначале регулярки грепа


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


Свернуть

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

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Требуются рерайтеры для медицинского сайта
30 руб за 1000 рерайта
14 Lisel85 2683 Сегодня, 19:38
автор: Lisel85
Открытая тема (нет новых ответов) GALAKSION – оптимальный вариант для монетизации вашего сайта!
23 Galaksion_Network 2421 Сегодня, 19:17
автор: Galaksion_Network
Открытая тема (нет новых ответов) Ищу платёжный агрегатор для работы с физ. лизами (не ИП)
21 SergeiVL 2621 Сегодня, 16:26
автор: BestExchangers
Горячая тема (нет новых ответов) Букварикс - бесплатная программа для быстрого подбора ключевых слов
150 Bukvarix 73744 Сегодня, 16:20
автор: Smspva
Открытая тема (нет новых ответов) 10 бесплатных сервисов Google для бизнеса, о которых мало кто слышал
17 jack 5330 Сегодня, 13:26
автор: Catherine_Molli


 



RSS Текстовая версия Сейчас: 12.12.2017, 20:41
Дизайн