Help! rc.d скрипты: не работает command_arg

Простые/общие вопросы по UNIX системам. Спросите здесь, если вы новичок

Модераторы: vadim64, terminus

Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
Fast_Deer
мл. сержант
Сообщения: 126
Зарегистрирован: 2013-01-09 10:56:34

Help! rc.d скрипты: не работает command_arg

Непрочитанное сообщение Fast_Deer » 2013-01-09 11:59:53

Господа, нужна помощь!
ОС FREEBSD 9.
Shell: /bin/sh
Есть 2 скрипта: один находится в каталоге rc.d (к примеру start_scipt) и должен запускать другой из домашнего каталога пользователя (к примеру start_soft). И это как бы работает но не передаются дополнительные аргументы описанные в первом скрипте в параметре command_arg. Из-за этого прога вызываемая во втором скрипте не пашет должным образом. по идее, из start_scipt должна формироваться строка вида $HOME/start_soft $command_arg (где вместо command_arg - значение этой переменной), но из дебага видно что идет простой вызов параметра command без передачи аргументов. Может я что то недопонял из чтения доков? Объясните мне пожалуйста "на пальцах" как заставить передать параметры из переменной command_arg в start_soft. Интересует работа именно этой "встроенной фишки" а не прописывание в переменную command агрументов на ряду со скриптом.
Если кто нить разобрался с написанием rc.d скриптов и может помочь, то могу выложить/выслать листинг своих прог.....
ЗЫ: просто на другом форуме просмотров много но не ни одного ответа

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
skeletor
майор
Сообщения: 2508
Зарегистрирован: 2007-11-16 18:22:04
Откуда: Kiev
Контактная информация:

Re: Help! rc.d скрипты: не работает command_arg

Непрочитанное сообщение skeletor » 2013-01-09 12:13:30

Вы хотите параметры из первого скрипта передавать тоже параметрами во второй?
"Винда съела дрова и резет здесь не фурычит."
"Все говорят, что у меня /dev/hands криво и я всё делаю через /dev/ass. А у меня этих фалов вообще нет!"

Аватара пользователя
Fast_Deer
мл. сержант
Сообщения: 126
Зарегистрирован: 2013-01-09 10:56:34

Re: Help! rc.d скрипты: не работает command_arg

Непрочитанное сообщение Fast_Deer » 2013-01-09 12:46:47

насколько я понимаю (как это должно работать) из документации:
Дополнительные аргументы команде $command можно передать в переменной command_args. Эти аргументы будут добавлены в командную строку после значения переменной $mumbled_flags. Поскольку командная строка, получившаяся в результате этих преобразований передается команде eval, то перенаправления ввода-вывода могут быть указаны в переменной command_args.
в start_scipt прописано
command="/homepath/start_soft"
command_args="аргументы"
то есть у нас из start_scipt должна формироваться след строка:

Код: Выделить всё

start_soft аргументы
где "агрументы" перечислены в command_args файла start_scipt
вообщем строка формируется без аргументов либо я чтото недопонимаю про вызов
run_rc_command "$1"

Аватара пользователя
skeletor
майор
Сообщения: 2508
Зарегистрирован: 2007-11-16 18:22:04
Откуда: Kiev
Контактная информация:

Re: Help! rc.d скрипты: не работает command_arg

Непрочитанное сообщение skeletor » 2013-01-09 12:54:23

Поймите, просто добавить в скрипт строку run_rc_command "$1" ничего не даст. В вашем скрипте должны присутствовать (не уверен, обязательно ли эти 3 строки, может и не все, но желательно):

Код: Выделить всё

. /etc/rc.subr
name="ИМЯ"
load_rc_config $name
А вообще - возьмите любой скрипт из rc.d и просто модифицируйте под себя.
"Винда съела дрова и резет здесь не фурычит."
"Все говорят, что у меня /dev/hands криво и я всё делаю через /dev/ass. А у меня этих фалов вообще нет!"

Аватара пользователя
Fast_Deer
мл. сержант
Сообщения: 126
Зарегистрирован: 2013-01-09 10:56:34

Re: Help! rc.d скрипты: не работает command_arg

Непрочитанное сообщение Fast_Deer » 2013-01-09 13:11:29

да присутствует это все и в rc.conf прописаны необходимые переменные для запуска, но не работает. Я и так брал готовый скрипт и хочу его переделать, но вот с аргументами не могу пока понять почему не работает
ИМХО: просто модифицировать под себя без понимания - будут те же "грабли"

Аватара пользователя
skeletor
майор
Сообщения: 2508
Зарегистрирован: 2007-11-16 18:22:04
Откуда: Kiev
Контактная информация:

Re: Help! rc.d скрипты: не работает command_arg

Непрочитанное сообщение skeletor » 2013-01-09 14:02:41

Грабли могут быть всегда и везде, даже если знаешь матчасть. Для того, что бы переделать скрипт автозапуска под себя необязательно перечитать кучу мануалов про rc-скрипты (на это может уйти очень много времени). А вообще, можно просто поместить команду с аргументами в /etc/rc.local
"Винда съела дрова и резет здесь не фурычит."
"Все говорят, что у меня /dev/hands криво и я всё делаю через /dev/ass. А у меня этих фалов вообще нет!"

Аватара пользователя
Fast_Deer
мл. сержант
Сообщения: 126
Зарегистрирован: 2013-01-09 10:56:34

Re: Help! rc.d скрипты: не работает command_arg

Непрочитанное сообщение Fast_Deer » 2013-01-09 15:39:47

skeletor писал(а):Грабли могут быть всегда и везде, даже если знаешь матчасть. Для того, что бы переделать скрипт автозапуска под себя необязательно перечитать кучу мануалов про rc-скрипты (на это может уйти очень много времени). А вообще, можно просто поместить команду с аргументами в /etc/rc.local
Во первых мне интересно в этом разобраться и научится писать самому скрипты. Во вторых во FreeBSD Handbook написано:
Заметьте, что rc.local используется для запуска сервисов только в крайнем случае. Если есть лучший способ запустить сервис, используйте его.
в третьих^ если прогу (бинарник) вызываешь не из его каталога, то базу с которой работает прога, она не находит и при этом сильно ругается. причем пути на базу в опциях проги не предусмотрено - считается что она лежит в каталоге с прогой. А так как я хочу обеспечить автозапуск и автошотдаун работы этой проги (перезагрузка ОС), то нужен нормальный rc.d скрипт, который может обрабатывать стандартные аргументы из rc.subr.
Насколько я понимаю спецов по rc.d-скриптингу тут тоже нет :( (или они в отпуске :-D )

Аватара пользователя
skeletor
майор
Сообщения: 2508
Зарегистрирован: 2007-11-16 18:22:04
Откуда: Kiev
Контактная информация:

Re: Help! rc.d скрипты: не работает command_arg

Непрочитанное сообщение skeletor » 2013-01-09 15:45:18

Ну если у вас времени вагон, то можно и разбираться, а если нужно за полчаса сделать - то вникать особо нету времени.
"Винда съела дрова и резет здесь не фурычит."
"Все говорят, что у меня /dev/hands криво и я всё делаю через /dev/ass. А у меня этих фалов вообще нет!"

Аватара пользователя
Fast_Deer
мл. сержант
Сообщения: 126
Зарегистрирован: 2013-01-09 10:56:34

Re: Help! rc.d скрипты: не работает command_arg

Непрочитанное сообщение Fast_Deer » 2013-01-09 19:56:34

ну времени не вагон но это все ж домашний сервак, а не рабочий, где стоит начальство над душой...
.... хотя жена над душой все ж стоит по поводу неработоспособности сервака

Аватара пользователя
FreeBSP
майор
Сообщения: 2020
Зарегистрирован: 2009-05-24 20:20:19
Откуда: Москва

Re: Help! rc.d скрипты: не работает command_arg

Непрочитанное сообщение FreeBSP » 2013-01-09 20:43:50

Код: Выделить всё

# chmod +x  /usr/local/etc/rc.d/testscript
# /usr/local/etc/rc.d/testscript
Usage: /usr/local/etc/rc.d/testscript [fast|force|one](start|stop|restart|rcvar|status|poll)
# /usr/local/etc/rc.d/testscript onestart
/usr/local/etc/rc.d/testscript: WARNING: run_rc_command: cannot run /root/bin/test_rc_target
# chmod +x /root/bin/test_rc_target
# /usr/local/etc/rc.d/testscript onestart
Starting test.
3
arg1 arg2 arg3
# cat /usr/local/etc/rc.d/testscript
#!/bin/sh
#
# $FreeBSD: release/9.0.0/etc/rc.d/cron 174438 2007-12-08 07:20:23Z dougb $
#

# PROVIDE: test
# REQUIRE: LOGIN
# KEYWORD: shutdown

. /etc/rc.subr

name="test"
rcvar="`set_rcvar`"

load_rc_config $name

command="/root/bin/test_rc_target"
command_args="arg1 arg2 arg3"

: ${test_enable="NO"}

run_rc_command "$1"

# cat /root/bin/test_rc_target
#!/bin/sh

echo $#
echo $*
#
Человек начинает получать первые наслаждения от знакомства с unix системами. Ему нужно помочь - дальше он сможет получать наслаждение самостоятельно ©
Ламер — не желающий самостоятельно разбираться. Не путать с новичком: ламер опасен и знает это!

Аватара пользователя
Fast_Deer
мл. сержант
Сообщения: 126
Зарегистрирован: 2013-01-09 10:56:34

Re: Help! rc.d скрипты: не работает command_arg

Непрочитанное сообщение Fast_Deer » 2013-01-10 23:35:44

Спасибо! Поразбираюсь.

Аватара пользователя
Fast_Deer
мл. сержант
Сообщения: 126
Зарегистрирован: 2013-01-09 10:56:34

Re: Help! rc.d скрипты: не работает command_arg

Непрочитанное сообщение Fast_Deer » 2013-01-11 0:16:37

Спасибо! нашел ошибку! "Олень" все ж я!
Тему можно закрывать

Аватара пользователя
skeletor
майор
Сообщения: 2508
Зарегистрирован: 2007-11-16 18:22:04
Откуда: Kiev
Контактная информация:

Re: Help! rc.d скрипты: не работает command_arg

Непрочитанное сообщение skeletor » 2013-01-14 18:40:55

Напишите хотя бы, где была ошибка, а то такие же потом искать проблему и кричать.
"Винда съела дрова и резет здесь не фурычит."
"Все говорят, что у меня /dev/hands криво и я всё делаю через /dev/ass. А у меня этих фалов вообще нет!"

Аватара пользователя
FreeBSP
майор
Сообщения: 2020
Зарегистрирован: 2009-05-24 20:20:19
Откуда: Москва

Re: Help! rc.d скрипты: не работает command_arg

Непрочитанное сообщение FreeBSP » 2013-01-15 10:01:24

Fast_Deer писал(а): по идее, из start_scipt должна формироваться строка вида $HOME/start_soft $command_arg_
FreeBSP писал(а):command_args="arg1 arg2 arg3"
он с недосыпа букву пропустил
Человек начинает получать первые наслаждения от знакомства с unix системами. Ему нужно помочь - дальше он сможет получать наслаждение самостоятельно ©
Ламер — не желающий самостоятельно разбираться. Не путать с новичком: ламер опасен и знает это!