LINUX.ORG.RU

Автозапуск start-stop-daemon


1

0

Вот такой код,

]#!/bin/bash 

PIDFILE="/home/gamer/hlds_classic/cs.pid" 
comands="./hlds_run -game cstrike -nomaster +map cs_assault +port 27015 -maxplayers 24 +mp_freezetime 3 +exec server.cfg -pingboost 1 +sys_ticrate 10000 +sv_maxupdaterate 100" 

RETVAL=0 

path="/home/gamer/hlds_classic" 

start() { 
if [ -d $path ]; then 
cd $path 
start-stop-daemon --start --background --make-pidfile --pidfile ${PIDFILE} --chuid gamer -a ${comands} 

touch ./cstrike.run 
fi 
} 

stop() { 
if [ -f $path/cstrike.run ]; then 
start-stop-daemon --stop --quiet --exec ${comands} 

cd $path 
rm -R ./cstrike.run 
fi 
} 



case "$1" in 
start) 
start 
echo "CS Server-1 starting" 
;; 
stop) 
stop 
echo "CS Server-1 stoping" 
;; 
restart) 
echo "Restarting CS-server" 
stop 
sleep 2 
start 
;; 
*) 
echo $"Usage: $0 {start|stop|restart}" 
exit 1 
esac 

exit $RETVAL

но при запуске ./test start start-stop-daemon: group `ame' not found Кажеться дело в том что он строку comands="./hlds_run -game воспринимает как продолжение команды.

Пробовал изменить так #!/bin/bash

PIDFILE=«/home/gamer/hlds_classic/cs.pid» bin_cs=«/home/gamer/hlds_classic/hlds_run» bin_opt="-game cstrike -nomaster +map cs_assault +port 27015 -maxplayers 24 +mp_freezetime 3 +exec server.cfg -pingboost 1 +sys_ticrate 10000 +sv_maxupdaterate 100"

RETVAL=0

path=«/home/gamer/hlds_classic»

start() { if [ -d $path ]; then cd $path start-stop-daemon --start --background --make-pidfile --pidfile ${PIDFILE} --chuid gamer -a ${bin_cs} — ${bin_opt}

Случайно нажал Ctrl+Enter. В общем во втором варианте просто не запускаеться сервер хотя пишет echo «CS Server-1 starting»

Timuridze ()
Ответ на: комментарий от Timuridze

По -exec есть рекомендация после пути к приложению добавить — для указания дополнительных параметров. вот пример: start(){ echo «*** Starting Прога ***» start-stop-daemon --start --background \ --make-pidfile --pidfile /var/run/Прога.pid \ --exec $ПРОГА_PATH/прога — \ -f $ПРОГА_CONF_PATH/прога.conf exit $? }

iTroll ()
Ответ на: комментарий от iTroll

По -exec есть рекомендация после пути к приложению добавить — для указания дополнительных параметров. вот пример:

start(){
  echo "*** Starting Прога ***" 
  start-stop-daemon --start --background \ 
  --make-pidfile --pidfile /var/run/Прога.pid \ 
  --exec $ПРОГА_PATH/прога [b]--[/b] \ 
  -f $ПРОГА_CONF_PATH/прога.conf exit $? 
}

после — я указываю проге ключом -f использовать конфиг файл по нужному пути.

iTroll ()

${commands} в кавычки обернуть? Да и — после пути к исполняемому файлу не помешает.

AITap ★★★★★ ()
Ответ на: комментарий от iTroll

Спасибо что откликнулись....я тоже так пробовал

bin_cs="/home/gamer/hlds_classic/hlds_run"
bin_opt="-game cstrike -nomaster +map cs_assault +port 27015 -maxplayers 24 +mp_freezetime 3 +exec server.cfg -pingboost 1 +sys_ticr$
...........
start-stop-daemon --start --background --make-pidfile --pidfile ${PIDFILE} --chuid gamer --exec ${bin_cs} -- ${bin_opt}

Запускаю и тишина....он мне тольок бодро рапортует CS Server-1 starting

Может я чегоне правиьно написал? Хоть бы ошибку выводил.

Timuridze ()
Ответ на: комментарий от AITap

Оборачивал в кавычки. Более того поробовал даже так \«${bin_opt}\»

Timuridze ()
Ответ на: комментарий от Timuridze

Тему можно закрывать, вот сделал так. Все работает как я хотел, код может и не самый красивый.

#!/bin/sh

DEDSERVER='Dedicated Server'
LONGNAME='Cs 16 public server'
WORKDIR='/home/gamer/hlds_classic'
LOGDIR='/home/gamer/hlds_classic/cstrike/logs'
PIDDIR='/home/gamer/pid'
DAEMON='./hlds_run'
LOGNAME='cs_pub'


IP='16games.ru'
PORT='27015'
MAP='cs_mansion'
SIZE='28'
NAME='cs'
CONFIG='server.cfg'
PING='2'

OPTIONS="-game cstrike -binary ./hlds_i686 -nomaster +map $MAP +port $PORT -pidfile $PIDDIR/$LOGNAME.pid -maxplayers $SIZE +exec server.cfg -pingboost $PING +sys_ticrate 10000 +sv_maxupdaterate 100"

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 -aux | grep $DAEMON |grep $PORT | awk '{ print $2}' >> $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" 

	cat $PIDDIR/$LOGNAME.pid | while read id
	do 
	kill -9 $id 
	done
            echo "Убиваем process ID $id" 
            echo "Удаляем PID файл $LONGNAME" 
            rm -rf $PIDDIR/$LOGNAME.pid 

   
    else 
        echo "Невозможно остановить $LONGNAME. Сервер НЕ запущен." 
    fi 
} 

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

Timuridze ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.