Добрый день, друзья.
Есть необходимость запуска процесса при старте ОС в CentOS6. Процесс запускается командой:
/<путь>/ras --daemon cluster
При этом сразу запускается в фоне.
Добавил строчку в /etc/rc.local
/<путь>/ras --daemon cluster
Если просто запустить скрипт /etc/rc.local, то все ок, стартует.
А вот при перезагрузке - не хочет ни в какую.
Прошу сказать, что делаю не так.
Спасибо.
Содержимое /etc/rc.local в студию.
> Содержимое /etc/rc.local в студию.А я бы посмотрел на содержимое "/<путь>/ras", если это скрипт, а не бинарник.
>> Содержимое /etc/rc.local в студию.
> А я бы посмотрел на содержимое "/<путь>/ras", если это скрипт, а не
> бинарник.А может ещё и вывод
>>Добавил строчку в /etc/rc.local
>>/<путь>/ras --daemon cluster{
/<путь>/ras --daemon cluster
echo RC=$?
} >/some/FILE.txt 2>&1, вставленного в этот самый rc.local (в CENTOS 6? правда?) попросить?
Потом
{
заменить на
{
PATH={{....тут вставить _правильный...}}
и снове перегрузиться, выслать вывод в форум.Потом... Не, всё хватит! Неправильно делаю что =: отлаживаю скрипт ч-з форум.
>[оверквотинг удален]
> echo RC=$?
> } >/some/FILE.txt 2>&1
> , вставленного в этот самый rc.local (в CENTOS 6? правда?) попросить?
> Потом
> {
> заменить на
> {
> PATH={{....тут вставить _правильный...}}
> и снове перегрузиться, выслать вывод в форум.
> Потом... Не, всё хватит! Неправильно делаю что =: отлаживаю скрипт ч-з форум.Вид текущий rc.local такой
#!/bin/sh
/sbin/modprobe xt_quota
/root/service_skripts/unoconv
#/opt/1C/v8.3/i386/ras --daemon cluster -пробовал сначала так
#/etc/init.d/ras_start
/root/service_skripts/ras_start
touch /var/lock/subsys/local
Насколько я помню - изначальный файл /etc/rc.local последней строкой должен содержать exit 0. Ну и, если мы говорим об изначальном файле, то первая строка там #!/bin/sh -e. Ну а пихать скрипты из /etc/init.d в rc.local - это как бы не совсем правильно. :) Для этого есть chkconfig в RH-дистрибутивах.
> Насколько я помню - изначальный файл /etc/rc.local последней строкой должен содержать exit
> 0. Ну и, если мы говорим об изначальном файле, то первая
> строка там #!/bin/sh -e. Ну а пихать скрипты из /etc/init.d в
> rc.local - это как бы не совсем правильно. :) Для этого
> есть chkconfig в RH-дистрибутивах.нет, exit0 нет и не было в centos 5. chkconfig здесь не поможет, первая строка там #!/bin/sh.
Засовывал в /etc/init.d скрипт от безысходности
>> Насколько я помню - изначальный файл /etc/rc.local последней строкой должен содержать exit
>> 0. Ну и, если мы говорим об изначальном файле, то первая
>> строка там #!/bin/sh -e. Ну а пихать скрипты из /etc/init.d в
>> rc.local - это как бы не совсем правильно. :) Для этого
>> есть chkconfig в RH-дистрибутивах.
> нет, exit0 нет и не было в centos 5. chkconfig здесь не
> поможет, первая строка там #!/bin/sh.
> Засовывал в /etc/init.d скрипт от безысходностипредполагаю, что вот эта ссылка Вам поможет http://myconsult2.ru/?p=172
>> Насколько я помню - изначальный файл /etc/rc.local последней строкой должен содержать exit
>> 0. Ну и, если мы говорим об изначальном файле, то первая
>> строка там #!/bin/sh -e. Ну а пихать скрипты из /etc/init.d в
>> rc.local - это как бы не совсем правильно. :) Для этого
>> есть chkconfig в RH-дистрибутивах.
> нет, exit0 нет и не было в centos 5. chkconfig здесь не
> поможет, первая строка там #!/bin/sh.
> Засовывал в /etc/init.d скрипт от безысходностиили вот эта http://habrahabr.ru/post/155735/
>>> Насколько я помню - изначальный файл /etc/rc.local последней строкой должен содержать exit
>>> 0. Ну и, если мы говорим об изначальном файле, то первая
>>> строка там #!/bin/sh -e. Ну а пихать скрипты из /etc/init.d в
>>> rc.local - это как бы не совсем правильно. :) Для этого
>>> есть chkconfig в RH-дистрибутивах.
>> нет, exit0 нет и не было в centos 5. chkconfig здесь не
>> поможет, первая строка там #!/bin/sh.
>> Засовывал в /etc/init.d скрипт от безысходности
> или вот эта http://habrahabr.ru/post/155735/Спасибо за ответ. Но с запуском 1с-сервера проблем я не испытываю, а вот с запуском сервера управления - да. он не запускается с по умолчанию установленным скриптом /etc/init.d/srv1cv83, к сожалению.
> Спасибо за ответ. Но с запуском 1с-сервера проблем я не испытываю, а
> вот с запуском сервера управления - да. он не запускается с
> по умолчанию установленным скриптом /etc/init.d/srv1cv83, к сожалению.Дык надо разобраться в причине - почему не запускается. "Я так думаю".
>[оверквотинг удален]
>>>> строка там #!/bin/sh -e. Ну а пихать скрипты из /etc/init.d в
>>>> rc.local - это как бы не совсем правильно. :) Для этого
>>>> есть chkconfig в RH-дистрибутивах.
>>> нет, exit0 нет и не было в centos 5. chkconfig здесь не
>>> поможет, первая строка там #!/bin/sh.
>>> Засовывал в /etc/init.d скрипт от безысходности
>> или вот эта http://habrahabr.ru/post/155735/
> Спасибо за ответ. Но с запуском 1с-сервера проблем я не испытываю, а
> вот с запуском сервера управления - да. он не запускается с
> по умолчанию установленным скриптом /etc/init.d/srv1cv83, к сожалению.а что говорит chkconfig --list srv1cv83?
>> Насколько я помню - изначальный файл /etc/rc.local последней строкой должен содержать exit
>> 0. Ну и, если мы говорим об изначальном файле, то первая
>> строка там #!/bin/sh -e. Ну а пихать скрипты из /etc/init.d в
>> rc.local - это как бы не совсем правильно. :) Для этого
>> есть chkconfig в RH-дистрибутивах.
> нет, exit0 нет и не было в centos 5. chkconfig здесь не
> поможет, первая строка там #!/bin/sh.
> Засовывал в /etc/init.d скрипт от безысходностиЗасовывать надо в /etc/rc.d/init.d (/etc/init.d лишь ссылка на него).
Потом man chkconfig если уж sysV хотите пользовать.ИМХО проще всего написать спкрипт-обертку, который соответствует всем требованиям sysV и просто запускает ras_start. И уже этот скрипт пихать в /etc.rc.d/init.d.
>> Содержимое /etc/rc.local в студию.
> А я бы посмотрел на содержимое "/<путь>/ras", если это скрипт, а не
> бинарник.Ras - это 1С сервер управления
[root@1c-server x86_64]# file /opt/1C/v8.3/i386/ras
/opt/1C/v8.3/i386/ras: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.9, stripped
> Ras - это 1С сервер управления
> [root@1c-server x86_64]# file /opt/1C/v8.3/i386/ras
> /opt/1C/v8.3/i386/ras: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically
> linked (uses shared libs), for GNU/Linux 2.6.9, strippedПопутно подумалось. А 1С-cерваку, случайно Иксы не нужны? Чего ldd /opt/1C/v8.3/i386/ras кажет? А то если он на Иксы (вдруг) завязан - вариант с /etc/rc.local не прокатит. На всякий случай добавлю - ИМХО. Это я к тому, что могу ошибаться - зависит от дефолтного уровня запуска в /etc/inittab
>> Ras - это 1С сервер управления
>> [root@1c-server x86_64]# file /opt/1C/v8.3/i386/ras
>> /opt/1C/v8.3/i386/ras: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically
>> linked (uses shared libs), for GNU/Linux 2.6.9, stripped
> Попутно подумалось. А 1С-cерваку, случайно Иксы не нужны? Чего ldd /opt/1C/v8.3/i386/ras
> кажет? А то если он на Иксы (вдруг) завязан - вариант
> с /etc/rc.local не прокатит. На всякий случай добавлю - ИМХО. Это
> я к тому, что могу ошибаться - зависит от дефолтного уровня
> запуска в /etc/inittabнет,иксы не нужны. он отлично работает в фоне, но почему-то не получается запустить его в качестве демона/процеса при автозапуске.
>[оверквотинг удален]
>>> [root@1c-server x86_64]# file /opt/1C/v8.3/i386/ras
>>> /opt/1C/v8.3/i386/ras: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically
>>> linked (uses shared libs), for GNU/Linux 2.6.9, stripped
>> Попутно подумалось. А 1С-cерваку, случайно Иксы не нужны? Чего ldd /opt/1C/v8.3/i386/ras
>> кажет? А то если он на Иксы (вдруг) завязан - вариант
>> с /etc/rc.local не прокатит. На всякий случай добавлю - ИМХО. Это
>> я к тому, что могу ошибаться - зависит от дефолтного уровня
>> запуска в /etc/inittab
> нет,иксы не нужны. он отлично работает в фоне, но почему-то не получается
> запустить его в качестве демона/процеса при автозапуске.А ras_start это Ваш скрипт или в составе 1С идет? Если последне, то возможно для его нормальной работы требуются какие-то переменные окружения, которые не определены в процессе загрузки ОС.
>[оверквотинг удален]
>>> Попутно подумалось. А 1С-cерваку, случайно Иксы не нужны? Чего ldd /opt/1C/v8.3/i386/ras
>>> кажет? А то если он на Иксы (вдруг) завязан - вариант
>>> с /etc/rc.local не прокатит. На всякий случай добавлю - ИМХО. Это
>>> я к тому, что могу ошибаться - зависит от дефолтного уровня
>>> запуска в /etc/inittab
>> нет,иксы не нужны. он отлично работает в фоне, но почему-то не получается
>> запустить его в качестве демона/процеса при автозапуске.
> А ras_start это Ваш скрипт или в составе 1С идет? Если последне,
> то возможно для его нормальной работы требуются какие-то переменные окружения, которые
> не определены в процессе загрузки ОС.ras_start - мой скрипт, да думаю в этом причина. ищу пока еще проблему.
> ras_start - мой скрипт, да думаю в этом причина. ищу пока еще
> проблему.в CentOS особо не вникал, но в Ubuntu init-скрипт для asterisk выглядит вот так. думаю Вы сможете провести аналогии
cat /etc/init/asterisk.conf
start on stopped rc RUNLEVEL=[2345]stop on runlevel [!2345]
respawn
exec /usr/local/asterisk/sbin/asterisk -f
управляется
initctl start|stop|restart <service_name>
> в CentOS особо не вникал, но в Ubuntu init-скрипт для asterisk выглядит
> вот так. думаю Вы сможете провести аналогиине - там клон RedHat - по другому делается.
>>[оверквотинг удален]
>> А ras_start это Ваш скрипт или в составе 1С идет? Если последне,
>> то возможно для его нормальной работы требуются какие-то переменные окружения, которые
>> не определены в процессе загрузки ОС.
> ras_start - мой скрипт, да думаю в этом причина. ищу пока еще
> проблему.тогда пробуйте примерно такой шаблон скрипта:
------ script 1CRAS ---------
#!/bin/bash
#
# chkconfig: 2345 99 1
# description: 1C RAS serverfunction start()
{
# из Ваших постов, приведенных выше я понял, что запускаться должно так.
/opt/1C/v8.3/i386/ras --daemon cluster
}function stop()
{
# как останавливать не знаю: м/б интерфейс контроля есть, м/б kill по PID - дело Ваше.
# это пока особо важно - сейчас главное чтобы запуск сервиса после перезагрузки прошел.
}function restart()
{
stop
sleep 3
start
}function help()
{
echo "Usage: ${0##*/} {start|stop|restart}"
}case "${1}" in
start) start
;;
stop) stop
;;
restart) restart
;;
*) help
;;
esac------ end script --------
1)
суем этот скрипт в файл /etc/rc.d/init.d/1CRAS2) ставим права доступа:
chown root:root /etc/rc.d/init.d/1CRAS
chmod 750 /etc/rc.d/init.d/1CRAS3) добавляем сервис в автозапуск и проверяем:
chkconfig --add 1CRAS
chkconfig --list 1CRASдолжно показать, что сервис включен на уровнях 2,3,4 и 5, а на остальных уровнях выключен
4) пробуем стартовать сервис вручную:
service 1CRAS startесли стартует нормально - останавливаем сервис (kill или чем там в 1C предусмотрено) и ребутим систему для проверки автоматического старта.
если что нет так пойдет или не понятно - смотрите логи, пишите...
PS
- bash в системе есть? (whereis bash).- в CentOS6 systemd на замену SysV уже не воткнули случайно? (вроде там его еще не было, но на всякий случай посмотрите).
- при предыдущих неудачных запусках сервиса в момент перезагрузки в логах совсем ничего нет? (попробовать verbose|debug сервису ч/з параметры включить (должны быть такие опции), если в логах пусто).
- ну и про переменные окружения опять напоминаю. в интерактивном режиме запуска скрипта они у Вас совсем другие, нежели при загрузке системы . эта ошибка часто допускается при написании стартовых скрпиптов или скриптов для cron (например $PATH может быть вообще не определен и в скрипте указана команда без полного пути к ней).
- SELinux включен?
> ras_start - мой скрипт, да думаю в этом причина. ищу пока еще
> проблему.кстати покажите cat /etc/init.d/srv1cv83 если он не слишком большой. проще будет проанализировать зависимости запуска сервиса RAS от различных условий (ИМХО они в стандартном скрипте должны быть учтены).
>> ras_start - мой скрипт, да думаю в этом причина. ищу пока еще
>> проблему.
> кстати покажите cat /etc/init.d/srv1cv83 если он не слишком большой. проще будет проанализировать
> зависимости запуска сервиса RAS от различных условий (ИМХО они в стандартном
> скрипте должны быть учтены).Спасибо за помощь, Ваш скрипт запуска добавил в init.d и chkconfig. Завтра потестирую, сегодня к сожалению не могу. ras по умолчанию не запускается скриптом /etc/init.d/srv1cv83 .
# chkconfig: 35 74 36
# description: Starts and stops the 1C:Enterprise daemons#------------------------------------------------------------
# global macros. generated by install script
#------------------------------------------------------------
G_CONF_STYLE=rpm
G_VER_ARCH=i386
G_VER_MAJOR=8
G_VER_MINOR=3
G_VER_BUILD=3
G_VER_RELEASE=721
G_BINDIR="/opt/1C/v${G_VER_MAJOR}.${G_VER_MINOR}/${G_VER_ARCH}"
#------------------------------------------------------------G_VER_SHORT=${G_VER_MAJOR}.${G_VER_MINOR}
G_TITLE="1C:Enterprise ${G_VER_SHORT} server"#------------------------------------------------------------
# this values can be passed from outside, so perform "z-check"
#------------------------------------------------------------
[ -z "$SRV1CV8_USER" ] && SRV1CV8_USER=usr1cv8
[ -z "$SRV1CV8_BINDIR" ] && SRV1CV8_BINDIR="$G_BINDIR"
[ -z "$SRV1CV8_PIDFILE" ] && SRV1CV8_PIDFILE="/var/run/srv1cv${G_VER_MAJOR}${G_VER_MINOR}.pid"
[ -z "$SRV1CV8_KEYTAB" ] && SRV1CV8_KEYTAB="$SRV1CV8_BINDIR/$SRV1CV8_USER.keytab"
[ -z "$SRV1CV8_WAITSTART" ] && SRV1CV8_WAITSTART=5
[ -z "$SRV1CV8_WAITSTOP" ] && SRV1CV8_WAITSTOP=5#------------------------------------------------------------
# builds ragent's command line from configuration parameters
#------------------------------------------------------------
function buildCommandLine() {
local cmdline="$SRV1CV8_BINDIR/ragent -daemon"
[ ! -z "$SRV1CV8_PORT" ] && cmdline="$cmdline -port $SRV1CV8_PORT"
[ ! -z "$SRV1CV8_REGPORT" ] && cmdline="$cmdline -regport $SRV1CV8_REGPORT"
[ ! -z "$SRV1CV8_DATA" ] && cmdline="$cmdline -d \"$SRV1CV8_DATA\""
[ ! -z "$SRV1CV8_RANGE" ] && cmdline="$cmdline -range $SRV1CV8_RANGE"
[ ! -z "$SRV1CV8_SECLEV" ] && cmdline="$cmdline -seclev $SRV1CV8_SECLEV"
[ "x$SRV1CV8_DEBUG" == "x1" ] && cmdline="$cmdline -debug"
echo $cmdline
}
#------------------------------------------------------------
# checks if process with passed pid exists
function checkpid() {
ps -p $* > /dev/null
}
#------------------------------------------------------------
# waits SRV1CV8_WAITSTOP seconds for process termination,
# then kills it
#------------------------------------------------------------
function delayedkill() {
local mypid=$1
local delay=$2
kill $mypid 2>/dev/null
checkpid $mypid && sleep $delay || return 0
if checkpid $mypid; then
kill -9 $mypid
logWarning "Process refused to die... So it was killed. May be you should increase SRV1CV8_WAITSTOP variable?";
fi
return 0
}
#------------------------------------------------------------
# extracts specified param from value from given command-line
#------------------------------------------------------------
function extractParam() {
local param=$1
shiftlocal tmp=$*
if [ ! -z "$*" ]; then
if [ ${tmp:0:1} == "-" ]; then
tmp=${tmp:1}
local val=${tmp#*$param }
# if old and new strings are equal
# we don't have needed param in cmdline
# so return
[ "$val" == "$tmp" ] && return;
val=${val%% -*}
echo "$val"
fi
fi
}
#------------------------------------------------------------
# call it when something fails
#------------------------------------------------------------
function failure() {
[ "$BOOTUP" != "verbose" -a -z "$LSB" ] && echo FAILED
return 0
}
#------------------------------------------------------------
# extracts data dir from ragent's command line or (if it's
# empty), builds it from users's home dir
#------------------------------------------------------------
function getDataDir() {
local cmdline=`getRagentRealCmdLine`
local datadir="$SRV1CV8_DATA"
[ ! -z "$cmdline" ] && datadir=`extractParam d $cmdline`if [ -z "$datadir" ]; then
local line=`grep ^$SRV1CV8_USER: /etc/passwd`
local homedir=${line#*:*:*:*:*:}
homedir=${homedir%:*}
datadir="$homedir/.1cv${G_VER_MAJOR}${G_VER_MINOR}/1C/1Cv${G_VER_MAJOR}${G_VER_MINOR}"
fiecho $datadir
}
#------------------------------------------------------------
# returns ragent configuration debug flag
#------------------------------------------------------------
function getDebugStatus() {
local cmdline=`getRagentRealCmdLine`
local debugFlag="$SRV1CV8_DEBUG"
echo "$cmdline" | grep "\-debug" >/dev/null && debugFlag="1"
[ ! -z "$debugFlag" ] && echo $debugFlag || echo "0"
}
#------------------------------------------------------------
# returns ragent port range
#------------------------------------------------------------
function getPortRange() {
local cmdline=`getRagentRealCmdLine`
local range="$SRV1CV8_RANGE"
[ ! -z "$cmdline" ] && range=`extractParam range $cmdline`
[ ! -z "$range" ] && echo $range || echo 1560:1591
}
#------------------------------------------------------------
# returns ragent main port
#------------------------------------------------------------
function getRagentPort() {
local cmdline=`getRagentRealCmdLine`
local port="$SRV1CV8_PORT"
[ ! -z "$cmdline" ] && port=`extractParam port $cmdline`
[ ! -z "$port" ] && echo $port || echo 1540
}
#------------------------------------------------------------
# get's running ragent command-line
#------------------------------------------------------------
function getRagentRealCmdLine() {
local cmdline=`buildCommandLine`
local mypid=`getRagentPid "$SRV1CV8_USER" "$cmdline"`
local result=""
[ ! -z "$mypid" ] && result=`ps --pid $mypid -o cmd= | sed -e "s/.*-daemon//"`
echo "$result"
}
#------------------------------------------------------------
# tries to get pid of ragent process, started by this script
#------------------------------------------------------------
function getRagentPid() {
local user=$1
shift# remove quotes in passed CMDLINE because
# command line of process doesn't contains'em
# even if they were passed.
local cmdline=`echo $* | sed -e "s/\"//g"`ps -C ragent -opid=,user=,cmd= | while read curline; do
local curPID=`echo $curline | sed -e "s/ .*//"`
local curline=`echo $curline | sed -e "s/$curPID //"`
local curUSR=`echo $curline | sed -e "s/ .*//"`
local curCMD=`echo $curline | sed -e "s/$curUSR //"`
if [ "$curCMD" == "$cmdline" ] && [ "$curUSR" == "$user" ]; then
echo $curPID
fi
done
}
#------------------------------------------------------------
# returns ragent reg port
#------------------------------------------------------------
function getRegPort() {
local cmdline=`getRagentRealCmdLine`
local regport="$SRV1CV8_REGPORT"
[ ! -z "$cmdline" ] && regport=`extractParam regport $cmdline`
[ ! -z "$regport" ] && echo $regport || echo 1541
}
#------------------------------------------------------------
# returns name of script
#------------------------------------------------------------
function getScriptName() {
local myname=`basename $0`
[ ${myname:0:1} = "S" -o ${myname:0:1} = "K" ] && myname=${myname:3}
echo $myname
}
#------------------------------------------------------------
# returns ragent security level
#------------------------------------------------------------
function getSecLevel() {
local cmdline=`getRagentRealCmdLine`
local seclev="$SRV1CV8_SECLEV"
[ ! -z "$cmdline" ] && seclev=`extractParam seclev $cmdline`
[ ! -z "$seclev" ] && echo $seclev || echo 0
}
#------------------------------------------------------------
# displays useful information about ragent
#------------------------------------------------------------
function info() {
echo "$G_TITLE info:"
echo -n " Data dir: " && getDataDir
echo -n " Main port: " && getRagentPort
echo -n " RegPort: " && getRegPort
echo -n "Port range: " && getPortRange
echo -n "Debug mode: " && getDebugStatus
echo -n "Sec. level: " && getSecLevel
return 0
}
#------------------------------------------------------------
# check if our ragent running
[ ! -d "$SRV1CV8_DATA" ] && { logError "SRV1CV8_DATA \"$SRV1CV8_DATA\" is a file, not a directory!"; return 0; }
fi
fi[ ! -f "$SRV1CV8_BINDIR/ragent" ] && { logError "ragent file does not exists!" ; return 0; }
[ ! -x "$SRV1CV8_BINDIR/ragent" ] && { logError "ragent file is not executable!"; return 0; }local cmd2run=`buildCommandLine`
if isRagentRunning "$SRV1CV8_USER" "$cmd2run"; then
logWarning "already started!";
else
# run our process
if [ -z "$SRV1CV8_USER" ]; then
export KRB5_KTNAME="$SRV1CV8_KEYTAB"
$cmd2run
else
su -s /bin/bash - "$SRV1CV8_USER" -c "KRB5_KTNAME=\"$SRV1CV8_KEYTAB\" $cmd2run"
fisleep $SRV1CV8_WAITSTART # wait a bit before check
! isRagentRunning "$SRV1CV8_USER" "$cmd2run" && { logError "service failed to start!"; return 0; }# check if pidfile exists and remove it if neccessary
[ -f "$SRV1CV8_PIDFILE" ] && logWarning "pid file existed on server start. it can mean that last run failed..."
filocal mypid=`getRagentPid $SRV1CV8_USER $cmd2run`
echo ${mypid} > "$SRV1CV8_PIDFILE"success
return 0
}
#------------------------------------------------------------
# displays ragent status
#------------------------------------------------------------
function status() {
echo "$G_TITLE status:"
echo -n "Init script: "
if [ -f "$SRV1CV8_PIDFILE" ]; then
echo STARTED.local cmd2run=`buildCommandLine`
echo -n " Ragent: "
! isRagentRunning "$SRV1CV8_USER" "$cmd2run" && echo -n "NOT "
echo "RUNNING."
else
echo NOT STARTED.
fi
return 0
}
#------------------------------------------------------------
# stops ragent
#------------------------------------------------------------
function stop() {
echo -n "Stopping $G_TITLE: "[ -f "$SRV1CV8_PIDFILE" ] && rm "$SRV1CV8_PIDFILE"
local cmd2run=`buildCommandLine`
if isRagentRunning "$SRV1CV8_USER" "$cmd2run"; then
mypid=`getRagentPid $SRV1CV8_USER $cmd2run`
if [ ! -z "$mypid" ]; then
local childpids=`ps --ppid ${mypid} -o pid=`
delayedkill $mypid $SRV1CV8_WAITSTOP
for childpid in $childpids; do
delayedkill $childpid $SRV1CV8_WAITSTOP
done
fi
else
logWarning "server not running!"
fisuccess
return
}
#------------------------------------------------------------
# functions says something succeded
#------------------------------------------------------------
function success() {
[ "$BOOTUP" != "verbose" -a -z "$LSB" ] && echo OK
return 0
}#------------------------------------------------------------
# script's main function
function main() {
local myname=`getScriptName`
local dirname=`dirname $0`
local realdir=$(cd "$dirname"; pwd)# check if someone passed different config throug command-line option
local configFile=
[ "$1" == "-c" ] && { configFile="$2"; shift 2; }local action=
case $1 in
'')
showUsage $myname
return 1
;;
--help)
showUsage $myname
return 0
;;
info)
action=info
;;
restart)
action=restart
;;
start)
action=start
;;
status)
action=status
;;
stop)
action=stop
;;
*)
showUsage $myname
return 1;
;;
esac
# check for config file existence
if [ -z "$configFile" ]; then
configFile="/etc/sysconfig/$myname"
if [ -z "$configFile" ]; then
configFile="/etc/sysconfig/$myname"
[ -e "$configFile" ] && source "$configFile"
else
[ -f "$configFile" ] && source "$configFile"
fi$action
}#invoke function main
main $*
Огромный....
>[оверквотинг удален]
> getDataDir
> echo -n " Main port: " && getRagentPort
> echo -n " RegPort: " &&
> getRegPort
> echo -n "Port range: " && getPortRange
> echo -n "Debug mode: " && getDebugStatus
> echo -n "Sec. level: " && getSecLevel
> return 0
> }
> #------------------------------------------------------------Просмотрел скрипт наискосок. Сразу что бросается в глаза это:
1)
функция start в конце кода вызывается явно для запуска процесса, но ее объявление в этом скрипте отсутствует2) чуть ниже по коду видим закрывающую скобку }, но соответствующей открывающей нет
ИМХО скрипт поврежден - в нем отсутствует несколько первых строк кода функции start. поэтому сервис и не стартует...
rpm-пакет из которого установка производилась есть?
>[оверквотинг удален]
> && source "$configFile"
> else
> [ -f "$configFile" ]
> && source "$configFile"
> fi
> $action
> }
> #invoke function main
> main $*
> Огромный....PS
поскольку "[оверквотинг удален]" смотри код в скрипте после "function info() {...}".
PSS
неужели при ручном запуске этого скрипта не было ругани от шела?
PSSS
с виду скрипт довольно неплохо написан. ИМХО проще разобраться что в нем не так, чем свой огород городить
>[оверквотинг удален]
>> #invoke function main
>> main $*
>> Огромный....
> PS
> поскольку "[оверквотинг удален]" смотри код в скрипте после "function info() {...}".
> PSS
> неужели при ручном запуске этого скрипта не было ругани от шела?
> PSSS
> с виду скрипт довольно неплохо написан. ИМХО проще разобраться что в нем
> не так, чем свой огород городитьсам сервер 1с запускается.ошибки могли попасть сюда при копипасте мною. ras-сервер по умолчанию этот скрипт не запускает.
>[оверквотинг удален]
>>> Огромный....
>> PS
>> поскольку "[оверквотинг удален]" смотри код в скрипте после "function info() {...}".
>> PSS
>> неужели при ручном запуске этого скрипта не было ругани от шела?
>> PSSS
>> с виду скрипт довольно неплохо написан. ИМХО проще разобраться что в нем
>> не так, чем свой огород городить
> сам сервер 1с запускается.ошибки могли попасть сюда при копипасте мною. ras-сервер по
> умолчанию этот скрипт не запускает.перезапустил сервер, не запустился ras с использованием ВАшего скрипта, в dmesg ничего криминального не обнаружил, что бы указывало на проблему. Просто из консоли скрипт запускается без проблем.
> перезапустил сервер, не запустился ras с использованием ВАшего скрипта, в dmesg ничего
> криминального не обнаружил, что бы указывало на проблему. Просто из консоли
> скрипт запускается без проблем.попробуйте verbose или debug режим ras-сервису при старте включить - наверняка у него такие опции есть.
>[оверквотинг удален]
>>> Огромный....
>> PS
>> поскольку "[оверквотинг удален]" смотри код в скрипте после "function info() {...}".
>> PSS
>> неужели при ручном запуске этого скрипта не было ругани от шела?
>> PSSS
>> с виду скрипт довольно неплохо написан. ИМХО проще разобраться что в нем
>> не так, чем свой огород городить
> сам сервер 1с запускается.ошибки могли попасть сюда при копипасте мною. ras-сервер по
> умолчанию этот скрипт не запускает.Так для запуска ras вообще штатного скрипта нет?