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

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

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

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

Автозагрузка в CentOS

Статус пользователя L_O_T_U_S
сообщение 5.11.2010, 1:40
Сообщение #1


Стаж: 17 лет

Сообщений: 555
Благодарностей: 32
Полезность: 89

Прописал в /etc/rc.local
#!/bin/sh
#
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don't
# want to do the full Sys V style init stuff.

cd /home/nippy/hlds
su - root -c "home/nippy/hlds/script.sh &"
su - root -c home/nippy/hlds/script start
exit 0
Поставил права 777 и не стартует сервер .
Можно подробно как поправить
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя c0rax
сообщение 5.11.2010, 1:47
Сообщение #2


Стаж: 18 лет

Сообщений: 1077
Благодарностей: 530
Полезность: 884

Положи скрипт запуска в директиву системных run скриптов с именем hlds
Код
например /etc/rc.d/init.d/hlds

Дай ему права на выполнение
Код
chmod +x /etc/rc.d/init.d/hlds

Затем прописуем в системный auto start-stop daemon
Код
chckonfig hlds on


Отредактировал: c0rax, - 5.11.2010, 1:49
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя L_O_T_U_S
сообщение 5.11.2010, 13:35
Сообщение #3


Стаж: 17 лет

Сообщений: 555
Благодарностей: 32
Полезность: 89

/etc/rc.d/init.d/hlds
Код
RETVAL=0

path="/home/nippy/hlds/"

start() {
if [ -d $path ]; then
cd $path
nice --20 ./hlds_run -console -game cstrike +master +ip 195.234.5.207 +port 27015 +map de_dust2 +maxplayer$
touch ./pub.run
fi
}

stop() {
if [ -f $path/pub.run ]; then
killall hlds_run
killall hlds_i686
cd $path
rm -R pub.pid
rm -R ./pub.run
fi
}

status() {
cd $path
[ -f $path/pub.pid ]
}
. /etc/rc.status
rc_reset
case "$1" in
  start)
        start
        rc_status -v
     ;;
  stop)
        stop
    rc_status -v
     ;;
  status)
        status
    rc_status -v
     ;;
  restart)
        stop
    start
    rc_status -v
     ;;
  *)
        echo $"Usage: $0 {start|stop|restart|status}"
        exit 1
esac
rc_exit
exit $RETVAL

Права 777
chckonfig hlds on
bash: chckonfig: command not found
Возможно chkconfig ?
Но тоже chkconfig hlds on
service hlds does not support chkconfig
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя scurra
сообщение 8.11.2010, 11:53
Сообщение #4


Стаж: 17 лет

Сообщений: 458
Благодарностей: 141
Полезность: 707

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

скрипт для chkconfig имеет особенности... и просто так в него любой скрипт не всунешь.. у самого CentOS и была такая же трабла..
решение:
в начало скрипта добавь
Код
#!/bin/bash
#
# chkconfig: 35 90 12
# description: CS server
#
# get function from functions library
./etc/init.d/functions

шо за хрень - хз... шо там за параметры - хз.. не спрашивайте... код выдрал с какогото сайта по CentOS...
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя c0rax
сообщение 8.11.2010, 13:45
Сообщение #5


Стаж: 18 лет

Сообщений: 1077
Благодарностей: 530
Полезность: 884

Цитата(scurra @ 8.11.2010, 11:53) *
скрипт для chkconfig имеет особенности... и просто так в него любой скрипт не всунешь.. у самого CentOS и была такая же трабла..
решение:
в начало скрипта добавь
Код
#!/bin/bash
#
# chkconfig: 35 90 12
# description: CS server
#
# get function from functions library
./etc/init.d/functions

шо за хрень - хз... шо там за параметры - хз.. не спрашивайте... код выдрал с какогото сайта по CentOS...

Системные функции ввода/вывода ядра и либы Glibc
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя scurra
сообщение 8.11.2010, 14:02
Сообщение #6


Стаж: 17 лет

Сообщений: 458
Благодарностей: 141
Полезность: 707

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

Цитата(c0rax @ 8.11.2010, 13:45) *
Системные функции ввода/вывода ядра и либы Glibc

я имел ввиду
# chkconfig: 35 90 12
# description: CS server

эти строки наверное и настраивают скрипт для работы в chkconfig
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя c0rax
сообщение 8.11.2010, 14:06
Сообщение #7


Стаж: 18 лет

Сообщений: 1077
Благодарностей: 530
Полезность: 884

Цитата(scurra @ 8.11.2010, 14:02) *
я имел ввиду
# chkconfig: 35 90 12
# description: CS server

эти строки наверное и настраивают скрипт для работы в chkconfig

это обычный init.d коментарий, все системные скрипты, имеют его в наличии.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя scurra
сообщение 9.11.2010, 22:53
Сообщение #8


Стаж: 17 лет

Сообщений: 458
Благодарностей: 141
Полезность: 707

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

Цитата(c0rax @ 8.11.2010, 14:06) *
это обычный init.d коментарий, все системные скрипты, имеют его в наличии.

ну да, только скрипт запуска сервера его не имеет)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя L_O_T_U_S
сообщение 31.12.2010, 3:31
Сообщение #9


Стаж: 17 лет

Сообщений: 555
Благодарностей: 32
Полезность: 89

Hello !
Вот скрипт рабочий .
Код
#!/bin/bash
#
# chkconfig: 35 90 12
# description: CS server
#
# get function from functions library
./etc/init.d/functions

DEDSERVER='Dedicated Server'
LONGNAME='server1'
WORKDIR='/home/nippy/server1'
LOGDIR='/home/nippy/server1'
PIDDIR='/home/nippy/server1'
DAEMON='./hlds_run'
LOGNAME='LOG'

IP='xx.xx.xx.xx'
PORT='27015'
MAP='de_dust2'
SIZE='11'
GAME='cstrike'
NAME='cs'
CONFIG='server.cfg'
PING='3'

OPTIONS="-debug -game cstrike -binary ./hlds_i686 -port $PORT +ip $IP +map $MAP +maxplayers $SIZE -pidfile $PIDDIR/$LOGNAME.pid -norestart -pingboost $PING"

service_start(){
        if [ ! -f $PIDDIR/$LOGNAME.pid ]; then
        echo "Запуск $DEDSERVER - $LONGNAME"
        echo "Адрес: $IP"
        echo "Порт:  $PORT"
        echo "Players: $SIZE players"
        cd $WORKDIR
     #screen -A -m -d -S hlds
     $DAEMON $OPTIONS >> $LOGDIR/$LOGNAME.log 2>&1 &

        sleep 1
        ps |grep ./bin/sh/ | grep $DAEMON |grep $PORT |awk '{ print $1}' >> $PIDDIR/$LOGNAME.pid
        echo "$LONGNAME process ID записан в $PIDDIR/$LOGNAME.pid"
        echo "$DEDSERVER запущен"
        else
        echo "$DEDSERVER - $LONGNAME уже запущен"
        fi
}
service_stop(){
        if [ -f $PIDDIR/$LOGNAME.pid ]; then
        echo "Остановка $LONGNAME"
        for id in `cat $PIDDIR/$LOGNAME.pid`
            do kill -9 $id
            echo "Убиваем process ID $id"
            echo "Удаляем PID файл $LONGNAME"
            rm -rf $PIDDIR/$LOGNAME.pid
            break
        done
        echo "$LONGNAME остановлен."
    else
        echo "Невозможно остановить $LONGNAME. Сервер НЕ запущен."
    fi
}

service_chek(){
    id=$(< $PIDDIR/$LOGNAME.pid)
    if [ -e "/proc/$id/exe" ]; then
    echo "Процесс сущестует $id"
    else
    service_stop
    sleep 1
        service_start
    fi
}

case "$1" in
    'start')
        service_start
     ;;
    'stop')
        service_stop
     ;;
    'restart')
        service_stop
        sleep 1
        service_start
     ;;
    'chek')
        service_chek
;;
    *)
        echo "Usage $0 start|stop|restart|chek"
esac

Сервер стартует нормально , добавляю его в автозагрузку chkconfig --add "scripthlds" on .
После проверяю ntsysv скрипт добавлен и включён .
REBOOT
А сервер не стартует ( хотя .pid файл создаёт .
Подскажите как поправить .
PS:Скрипт работает как с под root так и c user .

Отредактировал: L_O_T_U_S, - 31.12.2010, 3:45
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
  Тема закрытаНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: