The OpenNET Project / Index page

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

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

"Проблема при запуске sh скрипта во время старта системы"  
Сообщение от dimasvas email(ok) on 04-Май-06, 12:49 
Стоит FreeBSD 6.0, в /usr/local/etc/rc.d кидаю и делаю chmod +x вот такой скрипт.
--------------------
#!/bin/sh

case "$1" in
start)
    exec /usr/local/bin/softlimit -m 4000000 tcpserver -H -l0 -R -c 512 -x \
    /etc/tcp.smtp.cdb -u VCHKPWUID -g VCHKPWGID 0 smtp \
    /var/qmail/bin/qmail-smtpd hostsystems.ru \
    /usr/local/vpopmail/bin/vchkpw /usr/bin/true &
    exit 0
    ;;

stop)
    exec killall tcpserver
    ;;

esac
-----------------------
Однако при старте системы tcpserver не запускается. Если запускать вручну типа
/usr/local/etc/rc.d/smtpd.sh start - всё ок. Останавливается тоже без проблем.
В чем грабли?


Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

 Оглавление

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


1. "Проблема при запуске sh скрипта во время старта системы"  
Сообщение от levsha (??) on 04-Май-06, 13:44 
А зачем тут всюду exec ?

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

2. "Проблема при запуске sh скрипта во время старта системы"  
Сообщение от phpcoder email(ok) on 04-Май-06, 13:54 
>Однако при старте системы tcpserver не запускается. Если запускать вручну типа
>/usr/local/etc/rc.d/smtpd.sh start - всё ок. Останавливается тоже без проблем.
>В чем грабли?

Гм... попробую предположить, что система запускает скрипт как /usr/local/etc/rc.d/smtpd.sh ?  Т.е. просто запускает скрипт, а если ты запускаешь вручную, то передаешь ей параметр start.

Проверить догадку можно, добавив в case условие для ситуации когда параметр не передан:

...
*)
  echo "Usage: $0 [start|stop]"
  exit 1
  ;;
...

P.S. Фряху в глаза не видел 8)

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

3. "Проблема при запуске sh скрипта во время старта системы"  
Сообщение от dimasvas email(ok) on 04-Май-06, 14:11 
>>Однако при старте системы tcpserver не запускается. Если запускать вручну типа
>>/usr/local/etc/rc.d/smtpd.sh start - всё ок. Останавливается тоже без проблем.
>>В чем грабли?
>
>Гм... попробую предположить, что система запускает скрипт как /usr/local/etc/rc.d/smtpd.sh ?  Т.е.
>просто запускает скрипт, а если ты запускаешь вручную, то передаешь ей
>параметр start.
>
>Проверить догадку можно, добавив в case условие для ситуации когда параметр не
>передан:
>
>...
>*)
>  echo "Usage: $0 [start|stop]"
>  exit 1
>  ;;
>...
>
>P.S. Фряху в глаза не видел 8)

Вот к примеру работающий скрипт кот. нормально запускает qmail

#!/bin/sh

# Using splogger to send the log through syslog.
# Using qmail-local to deliver messages to Maildir format by default

case "$1" in
start)
        exec env - PATH="/var/qmail/bin:$PATH" \
qmail-start ./Maildir/ \
splogger qmail&
        exit 0
        ;;
stop)
        exec killall qmail-send
        ;;
*)
        %%ECHO_CMD%% "Usage: `basename $0` {start|stop}" >&2
        exit 64
        ;;
esac

Принципиальной разницы в самом скрипте я не вижу.

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

4. "Проблема при запуске sh скрипта во время старта системы"  
Сообщение от phpcoder email(ok) on 04-Май-06, 14:33 
>Принципиальной разницы в самом скрипте я не вижу.

Я тоже.

А ты уверен, что система вообще твой скрипт запускает? Скажем, в Linux нужно не только файл положить в /etc/rc.d/init.d, но ещё и сделать вручную симлинки из /etc/rcX.d, где Х нужный уровень. Причем там ещё и симлинки-то специальные.. у вас там, в FreeBSD, не так?


Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

5. "Проблема при запуске sh скрипта во время старта системы"  
Сообщение от dimasvas email(ok) on 04-Май-06, 14:51 
>>Принципиальной разницы в самом скрипте я не вижу.
>
>Я тоже.
>
>А ты уверен, что система вообще твой скрипт запускает? Скажем, в Linux
>нужно не только файл положить в /etc/rc.d/init.d, но ещё и сделать
>вручную симлинки из /etc/rcX.d, где Х нужный уровень. Причем там ещё
>и симлинки-то специальные.. у вас там, в FreeBSD, не так?

У нас во FreeBSD вообще нет уровней, а все скрипты которые относятся к запуску программ установленных дополнительно(например из портов) лежат в /usr/local/etc/rc.d/ Система скрипт запускает только вот так: /usr/local/etc/rc.d/smtpd.sh start и он нормально работает. Мне же нужно чтобы он при рестарте системы нормально запускался.

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

6. "Проблема при запуске sh скрипта во время старта системы"  
Сообщение от phpcoder email(ok) on 04-Май-06, 15:01 
Тогда, к сожалению, ничем не могу помочь :-(

(думал, вдруг всё просто, вот и решил предложить свои варианты.. к тому же других ответов не было...)


Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

7. "Проблема при запуске sh скрипта во время старта системы"  
Сообщение от dimasvas email(ok) on 04-Май-06, 15:10 
>Тогда, к сожалению, ничем не могу помочь :-(
>
>(думал, вдруг всё просто, вот и решил предложить свои варианты.. к тому
>же других ответов не было...)

Спасибо и на этом!

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

8. "Проблема при запуске sh скрипта во время старта системы"  
Сообщение от Forth (??) on 04-Май-06, 15:16 
Добавь в rc.conf :
smtpd_enable="YES"
тогда и скрипт с параметром start будет запущен, также как и при перезагрузке с параметром stop.


Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

9. "Проблема при запуске sh скрипта во время старта системы"  
Сообщение от dimasvas email(ok) on 04-Май-06, 16:10 
>Добавь в rc.conf :
>smtpd_enable="YES"
>тогда и скрипт с параметром start будет запущен, также как и при
>перезагрузке с параметром stop.

По моему такой способ применим если скрипт rc.subr - в данном случае нет, но за ответ спасибо. Попробовал - безрезультатно. Вот кусок dmesg -a
----------------------------------
+ exec
/usr/local/bin/softlimit
-m
4000000
tcpserver
-H
-l0
-R
-c
512
-x
/etc/tcp.smtp.cdb
-u
VCHKPWUID
-g
VCHKPWGID
0
smtp
/var/qmail/bin/qmail-smtpd
hostsystems.ru
/usr/local/vpopmail/bin/vchkpw
/usr/bin/true

+ exit
0
--------------------------------
После загрузки
mail# ps -ax | grep tcp
  591 con- I      0:00.01 /usr/local/libexec/courier-imap/couriertcpd -address=0 -maxprocs=40 -maxperip=4 -nodnslookup -noid
  603 con- I      0:00.01 /usr/local/libexec/courier-imap/couriertcpd -address=0 -maxprocs=40 -maxperip=4 -nodnslookup -noid
  614 con- I      0:00.01 /usr/local/libexec/courier-imap/couriertcpd -address=0 -maxprocs=40 -maxperip=4 -nodnslookup -noid
  625 con- I      0:00.01 /usr/local/libexec/courier-imap/couriertcpd -address=0 -maxprocs=40 -maxperip=4 -nodnslookup -noid

И только если /usr/local/etc/rc.d/smtpd.sh start видим
771  p0  S      0:00.01 tcpserver -H -l0 -R -c 512 -x /etc/tcp.smtp.cdb -u VCHKPWUID -g VCHKPWGID 0 smtp /var/qmail/bin/qm.....

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

10. "Проблема при запуске sh скрипта во время старта системы"  
Сообщение от Forth (??) on 04-Май-06, 16:24 
А вообще зачем exec? Скрипт ведь .sh, ты тем самым процесс обработки /usr/local/etc/rc.d убиваешь на своем скрипте, вдруг даже из-за этого проблема. И вообще почему бы не rc.d нормальный скрипт написать? man rc.d все есть.


Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

11. "Проблема при запуске sh скрипта во время старта системы"  
Сообщение от dimasvas email(ok) on 04-Май-06, 17:37 
>А вообще зачем exec? Скрипт ведь .sh, ты тем самым процесс обработки
>/usr/local/etc/rc.d убиваешь на своем скрипте, вдруг даже из-за этого проблема. И
>вообще почему бы не rc.d нормальный скрипт написать? man rc.d все
>есть.

Да спасибо. На самом деле наверное с rc.d единственный приемлемый выход. Сейчас попробую.

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

12. "Проблема при запуске sh скрипта во время старта системы"  
Сообщение от dimasvas email(ok) on 04-Май-06, 19:04 
>>А вообще зачем exec? Скрипт ведь .sh, ты тем самым процесс обработки
>>/usr/local/etc/rc.d убиваешь на своем скрипте, вдруг даже из-за этого проблема. И
>>вообще почему бы не rc.d нормальный скрипт написать? man rc.d все
>>есть.
>
>Да спасибо. На самом деле наверное с rc.d единственный приемлемый выход. Сейчас
>попробую.

Проблема решена. Если кому интересно то надо было просто полный путь прописать к tcpserver. Метод rc.subr конечно супер.  


Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

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

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




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

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