Help! rc.d скрипты: не работает command_arg
Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
- Fast_Deer
- мл. сержант
- Сообщения: 131
- Зарегистрирован: 2013-01-09 10:56:34
Help! rc.d скрипты: не работает command_arg
Господа, нужна помощь!
ОС 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 скриптов и может помочь, то могу выложить/выслать листинг своих прог.....
ЗЫ: просто на другом форуме просмотров много но не ни одного ответа
ОС 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
Тарифы на хостинг в России, от 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/
Тарифы на виртуальные сервера (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
- майор
- Сообщения: 2548
- Зарегистрирован: 2007-11-16 18:22:04
Re: Help! rc.d скрипты: не работает command_arg
Вы хотите параметры из первого скрипта передавать тоже параметрами во второй?
- Fast_Deer
- мл. сержант
- Сообщения: 131
- Зарегистрирован: 2013-01-09 10:56:34
Re: Help! rc.d скрипты: не работает command_arg
насколько я понимаю (как это должно работать) из документации:
где "агрументы" перечислены в command_args файла start_scipt
вообщем строка формируется без аргументов либо я чтото недопонимаю про вызов
run_rc_command "$1"
в start_scipt прописаноДополнительные аргументы команде $command можно передать в переменной command_args. Эти аргументы будут добавлены в командную строку после значения переменной $mumbled_flags. Поскольку командная строка, получившаяся в результате этих преобразований передается команде eval, то перенаправления ввода-вывода могут быть указаны в переменной command_args.
то есть у нас из start_scipt должна формироваться след строка:command="/homepath/start_soft"
command_args="аргументы"
Код: Выделить всё
start_soft аргументы
вообщем строка формируется без аргументов либо я чтото недопонимаю про вызов
run_rc_command "$1"
- skeletor
- майор
- Сообщения: 2548
- Зарегистрирован: 2007-11-16 18:22:04
Re: Help! rc.d скрипты: не работает command_arg
Поймите, просто добавить в скрипт строку run_rc_command "$1" ничего не даст. В вашем скрипте должны присутствовать (не уверен, обязательно ли эти 3 строки, может и не все, но желательно):
А вообще - возьмите любой скрипт из rc.d и просто модифицируйте под себя.
Код: Выделить всё
. /etc/rc.subr
name="ИМЯ"
load_rc_config $name
- Fast_Deer
- мл. сержант
- Сообщения: 131
- Зарегистрирован: 2013-01-09 10:56:34
Re: Help! rc.d скрипты: не работает command_arg
да присутствует это все и в rc.conf прописаны необходимые переменные для запуска, но не работает. Я и так брал готовый скрипт и хочу его переделать, но вот с аргументами не могу пока понять почему не работает
ИМХО: просто модифицировать под себя без понимания - будут те же "грабли"
ИМХО: просто модифицировать под себя без понимания - будут те же "грабли"
- skeletor
- майор
- Сообщения: 2548
- Зарегистрирован: 2007-11-16 18:22:04
Re: Help! rc.d скрипты: не работает command_arg
Грабли могут быть всегда и везде, даже если знаешь матчасть. Для того, что бы переделать скрипт автозапуска под себя необязательно перечитать кучу мануалов про rc-скрипты (на это может уйти очень много времени). А вообще, можно просто поместить команду с аргументами в /etc/rc.local
- Fast_Deer
- мл. сержант
- Сообщения: 131
- Зарегистрирован: 2013-01-09 10:56:34
Re: Help! rc.d скрипты: не работает command_arg
Во первых мне интересно в этом разобраться и научится писать самому скрипты. Во вторых во FreeBSD Handbook написано:skeletor писал(а):Грабли могут быть всегда и везде, даже если знаешь матчасть. Для того, что бы переделать скрипт автозапуска под себя необязательно перечитать кучу мануалов про rc-скрипты (на это может уйти очень много времени). А вообще, можно просто поместить команду с аргументами в /etc/rc.local
в третьих^ если прогу (бинарник) вызываешь не из его каталога, то базу с которой работает прога, она не находит и при этом сильно ругается. причем пути на базу в опциях проги не предусмотрено - считается что она лежит в каталоге с прогой. А так как я хочу обеспечить автозапуск и автошотдаун работы этой проги (перезагрузка ОС), то нужен нормальный rc.d скрипт, который может обрабатывать стандартные аргументы из rc.subr.Заметьте, что rc.local используется для запуска сервисов только в крайнем случае. Если есть лучший способ запустить сервис, используйте его.
Насколько я понимаю спецов по rc.d-скриптингу тут тоже нет (или они в отпуске )
- skeletor
- майор
- Сообщения: 2548
- Зарегистрирован: 2007-11-16 18:22:04
Re: Help! rc.d скрипты: не работает command_arg
Ну если у вас времени вагон, то можно и разбираться, а если нужно за полчаса сделать - то вникать особо нету времени.
- Fast_Deer
- мл. сержант
- Сообщения: 131
- Зарегистрирован: 2013-01-09 10:56:34
Re: Help! rc.d скрипты: не работает command_arg
ну времени не вагон но это все ж домашний сервак, а не рабочий, где стоит начальство над душой...
.... хотя жена над душой все ж стоит по поводу неработоспособности сервака
.... хотя жена над душой все ж стоит по поводу неработоспособности сервака
- FreeBSP
- майор
- Сообщения: 2020
- Зарегистрирован: 2009-05-24 20:20:19
- Откуда: Москва
Re: Help! rc.d скрипты: не работает command_arg
Код: Выделить всё
# 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
- мл. сержант
- Сообщения: 131
- Зарегистрирован: 2013-01-09 10:56:34
Re: Help! rc.d скрипты: не работает command_arg
Спасибо! Поразбираюсь.
- Fast_Deer
- мл. сержант
- Сообщения: 131
- Зарегистрирован: 2013-01-09 10:56:34
Re: Help! rc.d скрипты: не работает command_arg
Спасибо! нашел ошибку! "Олень" все ж я!
Тему можно закрывать
Тему можно закрывать
- skeletor
- майор
- Сообщения: 2548
- Зарегистрирован: 2007-11-16 18:22:04
Re: Help! rc.d скрипты: не работает command_arg
Напишите хотя бы, где была ошибка, а то такие же потом искать проблему и кричать.
- FreeBSP
- майор
- Сообщения: 2020
- Зарегистрирован: 2009-05-24 20:20:19
- Откуда: Москва
Re: Help! rc.d скрипты: не работает command_arg
Fast_Deer писал(а): по идее, из start_scipt должна формироваться строка вида $HOME/start_soft $command_arg_
он с недосыпа букву пропустилFreeBSP писал(а):command_args="arg1 arg2 arg3"
Человек начинает получать первые наслаждения от знакомства с unix системами. Ему нужно помочь - дальше он сможет получать наслаждение самостоятельно ©
Ламер — не желающий самостоятельно разбираться. Не путать с новичком: ламер опасен и знает это!
Ламер — не желающий самостоятельно разбираться. Не путать с новичком: ламер опасен и знает это!