На серваке с FreeBSD 4.5 вдруг ни с того не с сего при перезагрузке перестали исполнятся скрипты из каталога /usr/local/etc/rc.d/ (вернее один скрипт, т. к. он там один).
Права на каталог:
bash-2.05a$ ls -l /usr/local/etc/
drwxr-xr-x 2 root wheel 512 27 ноя 19:08 rc.d
Права на сам скрипт:
bash-2.05a$ ls -l /usr/local/etc/rc.d/
-rwxr-xr-x 1 root wheel 865 27 ноя 18:45 startup.sh
В скрипте ошибок нет. Проверено: после старта от рута делаю:
server# /usr/local/etc/rc.d/sam.startup
Всё что прописанно в скрипте без проблем стартует.
Не подскажите почему это может происходить, ну и как с этим боротся?
Возможно, для старта твоему скрипту, необходима определенная сетевая среда :) которая на момент запуска отсутствует. А когда загрузка завершена - присутствует. М.б. померять порядок следования при запуске скриптов, а может доставлял что или удалял %)С уважением Алексей Леончик
Да я и не знаю с каких это пор - тачка долго не перегружалась, а теперь надо было перезапустить и вот на тебе. Сетевые интерфейсы на данный момент уже подняты. Порядок следования скриптов? Так он у меня один. Он рабочий сто пудово!
>Да я и не знаю с каких это пор - тачка долго
>не перегружалась, а теперь надо было перезапустить и вот на тебе.
>Сетевые интерфейсы на данный момент уже подняты. Порядок следования скриптов? Так
>он у меня один. Он рабочий сто пудово!а что делает скрипт?
при загрузке нет ли ругани?что в /etc/rc.conf на предмет
local_startup?
если ничего, что в /etc/defaults/rc.conf по этому поводу?
Пардон , а какой скрипт не стартует-rwxr-xr-x 1 root wheel 865 27 ноя 18:45 startup.sh
В скрипте ошибок нет. Проверено: после старта от рута делаю:
server# /usr/local/etc/rc.d/sam.startupstartup.sh
или
sam.startup
>Пардон , а какой скрипт не стартует
Стартует вот что:
server# /usr/local/etc/rc.d/startup.sh
C sam.startup он раньше назывался, но это было очень давно. С новым названием он точно стартовал раньше... короче это одно и то же...
>>Пардон , а какой скрипт не стартует
>Стартует вот что:
>server# /usr/local/etc/rc.d/startup.sh
>C sam.startup он раньше назывался, но это было очень давно. С новым
>названием он точно стартовал раньше... короче это одно и то же...
>скрипт в студию, че муслоить?
>а что делает скрипт?
сейчас в качестве теста он делает:
#!/bin/sh
/bin/hostname > /usr/local/etc/rc.d/test
и всё, (но он этого не делает при загрузке)...
>при загрузке нет ли ругани?
в логе нет а на экран - кто его знает, он далеко от меня...
>что в /etc/rc.conf на предмет
>local_startup?
в /etc/rc.conf нет ни чего...
я сделал
local_startup="/usr/local/etc/rc.d"
>скрипт в студию, че муслоить?
вот он:
#!/bin/sh
echo -n ' Run startup script on '
/bin/hostname > /usr/local/etc/rc.d/test
# delete postgres lock files (if system stoped bed)
rm /tmp/.s.PGSQL*
echo -n ' SQL server lock file is removed...'
echo -n ' Load firewall rules on '
/bin/hostname
sh /usr/local/etc/rc.d/my_rc.firewall
echo -n ' Rules loaded! '
/sbin/ldconfig -m /usr/local/pgsql/lib
[ -x /usr/local/pgsql/bin/postmaster ] && {
su postgres -c '/usr/local/pgsql/bin/postmaster -S -i -D /usr/local/pgsql/data'
echo -n ' SQL Server started! ...'
}
/usr/sbin/dhcpd xl0
echo -n ' DHCP Server started! ...'
/usr/local/apachessl/bin/apachectl startssl
echo -n ' HTTP Server started! ...'
/bin/hostname
/bin/date >> /usr/local/etc/rc.d/testкстати /bin/sh тоже существует!
#ll /bin/sh
-r-xr-xr-x 1 root wheel 452412 28 янв 2002 /bin/shHELP!!!
>>скрипт в студию, че муслоить?
>вот он:
>#!/bin/sh
>echo -n ' Run startup script on '
>/bin/hostname > /usr/local/etc/rc.d/test
># delete postgres lock files (if system stoped bed)
>rm /tmp/.s.PGSQL*
>echo -n ' SQL server lock file is removed...'
>echo -n ' Load firewall rules on '
>/bin/hostname
>sh /usr/local/etc/rc.d/my_rc.firewall
>echo -n ' Rules loaded! '
>/sbin/ldconfig -m /usr/local/pgsql/lib
>[ -x /usr/local/pgsql/bin/postmaster ] && {
> su postgres -c '/usr/local/pgsql/bin/postmaster
>-S -i -D /usr/local/pgsql/data'
> echo -n ' SQL
>Server started! ...'
> }
>/usr/sbin/dhcpd xl0
>echo -n ' DHCP Server started! ...'
>/usr/local/apachessl/bin/apachectl startssl
>echo -n ' HTTP Server started! ...'
>/bin/hostname
>/bin/date >> /usr/local/etc/rc.d/test
>
>кстати /bin/sh тоже существует!
>#ll /bin/sh
>-r-xr-xr-x 1 root wheel 452412 28 янв 2002
>/bin/sh
>
>HELP!!!
сомневаюсь что он будет стартовать, пример:
[unix1]~/perl > ls -la /usr/local/etc/rc.d/redir.sh
-rwxr-xr-x 1 root wheel 956 25 апр 2002 /usr/local/etc/rc.d/redir.sh
[unix1]~/perl >--------------------------------- redir.sh -----------------------------
#!/bin/sh
##--lavr; redir - redirect tcp-connecton, use local-host=--laddr for bind
# and it's local-port=--lport for redirect my stream to remote host
# remote-address=--caddr and it's remote-port=--cport
#
# for syslog.conf
# redir
# *.* /var/log/redir.loghost_to="proxy.jinr.ru"
host_to_port="8080"myport="9000"
myrun="/usr/local/bin/redir"
pid="/var/run/redir.pid"case "$1" in
'start')
if [ -x ${myrun} ]; then
echo -n ' Redirect Service Started:'
${myrun} --caddr=${host_to} --lport ${myport} \
--cport ${host_to_port} --syslog > /dev/null &
echo $! > ${pid}
fi
;;
'stop')
if [ -f ${pid} ]; then
echo -n ' Redirect Service Stopped:'
kill -9 `cat ${pid}`
rm -f ${pid}
fi
;;
*)
echo "Usage: `basename $0` {start|stop}" >&2
exit 7
;;
esac
------------------------------- end of redir.sh ------------------------так доходчиво?
>>а что делает скрипт?
>сейчас в качестве теста он делает:
>#!/bin/sh
>/bin/hostname > /usr/local/etc/rc.d/test
>и всё, (но он этого не делает при загрузке)...
>>при загрузке нет ли ругани?
>в логе нет а на экран - кто его знает, он далеко
>от меня...
>>что в /etc/rc.conf на предмет
>>local_startup?
>в /etc/rc.conf нет ни чего...
>я сделал
>local_startup="/usr/local/etc/rc.d"это еще зачем, см:
[unix1]~ > grep local_startup /etc/defaults/rc.conf
local_startup="/usr/local/etc/rc.d /usr/X11R6/etc/rc.d" # startup script dirs.
[unix1]~ >должно быть в дефолтном rc.conf, или полностью оттуда эту строку возьми
в свой /etc/rc.conf
>это еще зачем, см:
>[unix1]~ > grep local_startup /etc/defaults/rc.conf
>local_startup="/usr/local/etc/rc.d /usr/X11R6/etc/rc.d" # startup script dirs.
>[unix1]~ >
>
>должно быть в дефолтном rc.conf, или полностью оттуда эту строку возьми
>в свой /etc/rc.conf
Так я сделал, но путь /usr/X11R6/etc/rc.d т.к. он не существует (не помню в где, но была во фрюхе засада с несуществующими путями). Не помогло и теперь я всё вернул как было: в /etc/rc.conf нет ни чего про local_startup, а в /etc/defaults/rc.conf всё поумолчанию........
>так доходчиво?
Я вижу намёк что у меня ошибку в сктипте. Это вселяет надежду, что починить можно. То lavr - скрипт как скрипт. В чём моя ошибка... ткните носом!
>>это еще зачем, см:
>>[unix1]~ > grep local_startup /etc/defaults/rc.conf
>>local_startup="/usr/local/etc/rc.d /usr/X11R6/etc/rc.d" # startup script dirs.
>>[unix1]~ >
>>
>>должно быть в дефолтном rc.conf, или полностью оттуда эту строку возьми
>>в свой /etc/rc.conf
>Так я сделал, но путь /usr/X11R6/etc/rc.d т.к. он не существует (не помню
>в где, но была во фрюхе засада с несуществующими путями). Не
>помогло и теперь я всё вернул как было: в /etc/rc.conf нет
>ни чего про local_startup, а в /etc/defaults/rc.conf всё поумолчанию.
>
>.......
>>так доходчиво?
>Я вижу намёк что у меня ошибку в сктипте. Это вселяет надежду,
>что починить можно. То lavr - скрипт как скрипт. В чём
>моя ошибка... ткните носом!кусок из /etc/rc:
# For each valid dir in $local_startup, search for init scripts matching *.sh
#
case ${local_startup} in
[Nn][Oo] | '')
;;
*)
echo -n 'Local package initialization:'
slist=""
if [ -z "${script_name_sep}" ]; then
script_name_sep=" "
fi
for dir in ${local_startup}; do
if [ -d "${dir}" ]; then
for script in ${dir}/*.sh; do
slist="${slist}${script_name_sep}${script}"
done
fi
done
script_save_sep="$IFS"
IFS="${script_name_sep}"
for script in ${slist}; do
if [ -x "${script}" ]; then
(set -T
trap 'exit 1' 2
${script} start)
fi
done
IFS="${script_save_sep}"
echo '.'
;;
esacпоможет?
Во блин - переименовал свой скрипт в startup.sh и на тебе ПОЕХАЛО! Более полугода считал что фря исполняет при старте все скрипты из /usr/local/etc/rc.d/ (от фанаря ставил им расширение *.sh, ведь шеловые...), а оказывается по умолчанию только *.sh. Огромное спасибо lavr-у. Вопрос решён.
С названием скрипта я тут вас нечаянно обманул, совсем в тачках запутался. Короче бардак, ни какой системы. Вот хотел порядок навести, а получилось что проблем себе нашёл. За то теперь я и это знаю.