The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"запуск процесса"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Открытые системы на сервере (Системное и пользовательское ПО / Linux)
Изначальное сообщение [ Отслеживать ]

"запуск процесса"  +/
Сообщение от Aleks305 (ok) on 01-Ноя-13, 10:03 
Добрый день, друзья.
Есть необходимость запуска процесса при старте ОС в CentOS6. Процесс запускается командой:
/<путь>/ras --daemon cluster
При этом сразу запускается в фоне.
Добавил строчку в /etc/rc.local
/<путь>/ras --daemon cluster
Если просто запустить скрипт  /etc/rc.local, то все ок, стартует.
А вот при перезагрузке - не хочет ни в какую.
Прошу сказать, что делаю не так.
Спасибо.
Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "запуск процесса"  +/
Сообщение от Дядя_Федор on 02-Ноя-13, 19:32 
Содержимое /etc/rc.local в студию.

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "запуск процесса"  +/
Сообщение от PavelR (ok) on 02-Ноя-13, 21:50 
> Содержимое /etc/rc.local в студию.

А я бы посмотрел на содержимое "/<путь>/ras", если это скрипт, а не бинарник.

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

3. "запуск процесса"  +/
Сообщение от Andrey Mitrofanov on 02-Ноя-13, 22:45 
>> Содержимое /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={{....тут вставить _правильный...}}
и снове перегрузиться, выслать вывод в форум.

Потом... Не, всё хватит! Неправильно делаю что =: отлаживаю скрипт ч-з форум.

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

4. "запуск процесса"  +/
Сообщение от передача переменной включающий пробел в sed on 02-Ноя-13, 23:54 
>[оверквотинг удален]
>   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

Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

6. "запуск процесса"  +/
Сообщение от Дядя_Федор on 04-Ноя-13, 10:01 
Насколько я помню - изначальный файл /etc/rc.local последней строкой должен содержать exit 0. Ну и, если мы говорим об изначальном файле, то первая строка там #!/bin/sh -e. Ну а пихать скрипты из /etc/init.d в rc.local - это как бы не совсем правильно. :) Для этого есть chkconfig в RH-дистрибутивах.
Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

9. "запуск процесса"  +/
Сообщение от Aleks305 (ok) on 05-Ноя-13, 14:05 
> Насколько я помню - изначальный файл /etc/rc.local последней строкой должен содержать exit
> 0. Ну и, если мы говорим об изначальном файле, то первая
> строка там #!/bin/sh -e. Ну а пихать скрипты из /etc/init.d в
> rc.local - это как бы не совсем правильно. :) Для этого
> есть chkconfig в RH-дистрибутивах.

нет, exit0 нет и не было в centos 5. chkconfig здесь не поможет, первая строка там #!/bin/sh.
Засовывал в /etc/init.d скрипт от безысходности

Ответить | Правка | ^ к родителю #6 | Наверх | Cообщить модератору

10. "запуск процесса"  +/
Сообщение от Bolek (ok) on 09-Ноя-13, 01:36 
>> Насколько я помню - изначальный файл /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

Ответить | Правка | ^ к родителю #9 | Наверх | Cообщить модератору

11. "запуск процесса"  +/
Сообщение от Bolek (ok) on 09-Ноя-13, 01:37 
>> Насколько я помню - изначальный файл /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/

Ответить | Правка | ^ к родителю #9 | Наверх | Cообщить модератору

12. "запуск процесса"  +/
Сообщение от Aleks305 (ok) on 15-Ноя-13, 11:19 
>>> Насколько я помню - изначальный файл /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, к сожалению.

Ответить | Правка | ^ к родителю #11 | Наверх | Cообщить модератору

13. "запуск процесса"  +/
Сообщение от Дядя_Федор on 15-Ноя-13, 12:44 
> Спасибо за ответ. Но с запуском 1с-сервера проблем я не испытываю, а
> вот с запуском сервера управления - да. он не запускается с
> по умолчанию установленным скриптом /etc/init.d/srv1cv83, к сожалению.

Дык надо разобраться в причине - почему не запускается. "Я так думаю".

Ответить | Правка | ^ к родителю #12 | Наверх | Cообщить модератору

16. "запуск процесса"  +/
Сообщение от LSTemp (ok) on 15-Ноя-13, 14:22 
>[оверквотинг удален]
>>>> строка там #!/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?


Ответить | Правка | ^ к родителю #12 | Наверх | Cообщить модератору

14. "запуск процесса"  +/
Сообщение от LSTemp (ok) on 15-Ноя-13, 13:56 
>> Насколько я помню - изначальный файл /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.


Ответить | Правка | ^ к родителю #9 | Наверх | Cообщить модератору

5. "запуск процесса"  +/
Сообщение от передача переменной включающий пробел в sed on 02-Ноя-13, 23:56 
>> Содержимое /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


Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

7. "запуск процесса"  +/
Сообщение от Дядя_Федор on 04-Ноя-13, 10:05 
> 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

Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

8. "запуск процесса"  +/
Сообщение от Aleks305 (ok) on 05-Ноя-13, 14:03 
>> 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

нет,иксы не нужны. он отлично работает в фоне, но почему-то не получается запустить его в качестве демона/процеса при автозапуске.

Ответить | Правка | ^ к родителю #7 | Наверх | Cообщить модератору

15. "запуск процесса"  +/
Сообщение от LSTemp (ok) on 15-Ноя-13, 14:17 
>[оверквотинг удален]
>>> [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С идет? Если последне, то возможно для его нормальной работы требуются какие-то переменные окружения, которые не определены в процессе загрузки ОС.


Ответить | Правка | ^ к родителю #8 | Наверх | Cообщить модератору

17. "запуск процесса"  +/
Сообщение от Aleks305 (ok) on 15-Ноя-13, 15:57 
>[оверквотинг удален]
>>>  Попутно подумалось. А 1С-cерваку, случайно Иксы не нужны? Чего ldd /opt/1C/v8.3/i386/ras
>>> кажет? А то если он на Иксы (вдруг) завязан - вариант
>>> с /etc/rc.local не прокатит. На всякий случай добавлю - ИМХО. Это
>>> я к тому, что могу ошибаться - зависит от дефолтного уровня
>>> запуска в /etc/inittab
>> нет,иксы не нужны. он отлично работает в фоне, но почему-то не получается
>> запустить его в качестве демона/процеса при автозапуске.
> А ras_start это Ваш скрипт или в составе 1С идет? Если последне,
> то возможно для его нормальной работы требуются какие-то переменные окружения, которые
> не определены в процессе загрузки ОС.

ras_start - мой скрипт, да думаю в этом причина. ищу пока еще проблему.

Ответить | Правка | ^ к родителю #15 | Наверх | Cообщить модератору

18. "запуск процесса"  +/
Сообщение от Bolek (ok) on 15-Ноя-13, 17:31 
> 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>

Ответить | Правка | ^ к родителю #17 | Наверх | Cообщить модератору

19. "запуск процесса"  +/
Сообщение от LSTemp (ok) on 16-Ноя-13, 23:00 
> в CentOS особо не вникал, но в Ubuntu init-скрипт для asterisk выглядит
> вот так. думаю Вы сможете провести аналогии

не  - там клон RedHat - по другому делается.


Ответить | Правка | ^ к родителю #18 | Наверх | Cообщить модератору

20. "запуск процесса"  +/
Сообщение от LSTemp (ok) on 16-Ноя-13, 23:34 
>>[оверквотинг удален]
>> А ras_start это Ваш скрипт или в составе 1С идет? Если последне,
>> то возможно для его нормальной работы требуются какие-то переменные окружения, которые
>> не определены в процессе загрузки ОС.
> ras_start - мой скрипт, да думаю в этом причина. ищу пока еще
> проблему.

тогда пробуйте примерно такой шаблон скрипта:

------ script 1CRAS ---------
#!/bin/bash
#
# chkconfig: 2345 99 1
# description: 1C RAS server

function 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/1CRAS

2) ставим права доступа:
chown root:root /etc/rc.d/init.d/1CRAS
chmod 750 /etc/rc.d/init.d/1CRAS

3) добавляем сервис в автозапуск и проверяем:
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 включен?

Ответить | Правка | ^ к родителю #17 | Наверх | Cообщить модератору

21. "запуск процесса"  +/
Сообщение от LSTemp (ok) on 17-Ноя-13, 00:53 
> ras_start - мой скрипт, да думаю в этом причина. ищу пока еще
> проблему.

кстати покажите cat /etc/init.d/srv1cv83 если он не слишком большой. проще будет проанализировать зависимости запуска сервиса RAS от различных условий (ИМХО они в стандартном скрипте должны быть учтены).


Ответить | Правка | ^ к родителю #17 | Наверх | Cообщить модератору

22. "запуск процесса"  +/
Сообщение от передача переменной включающий пробел в sed on 17-Ноя-13, 01:30 
>> 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
    shift

    local 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}"
    fi

    echo $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"
        fi

        sleep $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..."
    fi

    local 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!"
    fi

    success
    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 $*


Огромный....

Ответить | Правка | ^ к родителю #21 | Наверх | Cообщить модератору

23. "запуск процесса"  +/
Сообщение от LSTemp (ok) on 17-Ноя-13, 02:16 
>[оверквотинг удален]
> 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
с виду скрипт довольно неплохо написан. ИМХО проще разобраться что в нем не так, чем свой огород городить

Ответить | Правка | ^ к родителю #22 | Наверх | Cообщить модератору

24. "запуск процесса"  +/
Сообщение от передача переменной включающий пробел в sed on 17-Ноя-13, 11:13 
>[оверквотинг удален]
>> #invoke function main
>> main $*
>> Огромный....
> PS
> поскольку "[оверквотинг удален]" смотри код в скрипте после "function info() {...}".
> PSS
> неужели при ручном запуске этого скрипта не было ругани от шела?
> PSSS
> с виду скрипт довольно неплохо написан. ИМХО проще разобраться что в нем
> не так, чем свой огород городить

сам сервер 1с запускается.ошибки могли попасть сюда при копипасте мною. ras-сервер по умолчанию этот скрипт не запускает.

Ответить | Правка | ^ к родителю #23 | Наверх | Cообщить модератору

25. "запуск процесса"  +/
Сообщение от передача переменной включающий пробел в sed on 17-Ноя-13, 11:33 
>[оверквотинг удален]
>>> Огромный....
>> PS
>> поскольку "[оверквотинг удален]" смотри код в скрипте после "function info() {...}".
>> PSS
>> неужели при ручном запуске этого скрипта не было ругани от шела?
>> PSSS
>> с виду скрипт довольно неплохо написан. ИМХО проще разобраться что в нем
>> не так, чем свой огород городить
> сам сервер 1с запускается.ошибки могли попасть сюда при копипасте мною. ras-сервер по
> умолчанию этот скрипт не запускает.

перезапустил сервер, не запустился ras с использованием ВАшего скрипта, в dmesg ничего криминального не обнаружил, что бы указывало на проблему. Просто из консоли скрипт запускается без проблем.

Ответить | Правка | ^ к родителю #24 | Наверх | Cообщить модератору

27. "запуск процесса"  +/
Сообщение от LSTemp (ok) on 20-Ноя-13, 00:37 
> перезапустил сервер, не запустился ras с использованием ВАшего скрипта, в dmesg ничего
> криминального не обнаружил, что бы указывало на проблему. Просто из консоли
> скрипт запускается без проблем.

попробуйте verbose или debug режим ras-сервису при старте включить - наверняка у него такие опции есть.

Ответить | Правка | ^ к родителю #25 | Наверх | Cообщить модератору

26. "запуск процесса"  +/
Сообщение от LSTemp (ok) on 20-Ноя-13, 00:16 
>[оверквотинг удален]
>>> Огромный....
>> PS
>> поскольку "[оверквотинг удален]" смотри код в скрипте после "function info() {...}".
>> PSS
>> неужели при ручном запуске этого скрипта не было ругани от шела?
>> PSSS
>> с виду скрипт довольно неплохо написан. ИМХО проще разобраться что в нем
>> не так, чем свой огород городить
> сам сервер 1с запускается.ошибки могли попасть сюда при копипасте мною. ras-сервер по
> умолчанию этот скрипт не запускает.

Так для запуска ras вообще штатного скрипта нет?


Ответить | Правка | ^ к родителю #24 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру