не стартует rc.local (проблема с запуском rc.local)
Модератор: Модераторы разделов
-
Slack
- Сообщения: 86
не стартует rc.local
Почему-то при запуске системы не стартует rc.local, если после загрузки запустить его ручками - то все нормально, в чем может быть причина и как это исправить (Slackware 12.1)
-
bormant
- Сообщения: 1354
Re: не стартует rc.local
Для проверки старта можно в начало rc.local вставить
echo "$(date) Starting rc.local ... " >> /var/log/debug
и залогинившись посмотреть в /var/log/debug на предмет наличия строки.
Может вполне оказаться, что хотя он и стартует, но запущенное из него умирает вместе с запустившим его процессом bash-а.
Покажи
# grep rc.local /etc/rc.d/rc.M
# ls -l /etc/rc.d/rc.local
# cat /etc/rc.d/rc.local
echo "$(date) Starting rc.local ... " >> /var/log/debug
и залогинившись посмотреть в /var/log/debug на предмет наличия строки.
Может вполне оказаться, что хотя он и стартует, но запущенное из него умирает вместе с запустившим его процессом bash-а.
Покажи
# grep rc.local /etc/rc.d/rc.M
# ls -l /etc/rc.d/rc.local
# cat /etc/rc.d/rc.local
-
Slack
- Сообщения: 86
Re: не стартует rc.local
В файле /var/log/debug строки с Starting rc.local ... нет.
Код: Выделить всё
# grep rc.local /etc/rc.d/rc.M
if [ -x /etc/rc.d/rc.local ]; then
. /etc/rc.d/rc.local
# ls -l /etc/rc.d/rc.local
-rwxr-xr-x 1 root root 720 2008-09-23 16:42 /etc/rc.d/rc.local*
# cat /etc/rc.d/rc.local
#!/bin/sh
#
# /etc/rc.d/rc.local: Local system initialization script.
#
# Put any local startup commands in here. Also, if you have
# anything that needs to be run at shutdown time you can
# make an /etc/rc.d/rc.local_shutdown script and put those
# commands in there.
for s in `ls /dev/tty[0-2]*`; do
# echo -e "\033[?18;0;64c" > $s
#setterm -fore green -back black -blength 0 -store > $s
setleds -D +num < $s
done
#Run vncserver
/usr/bin/vncserver
# Start vboxdrv
# If you do not wish this to be executed here then comment it out,
# and the installer will skip it next time.
if [ -x /etc/rc.d/rc.vboxdrv ]; then
/etc/rc.d/rc.vboxdrv start
fi
echo "$(date) Starting rc.local ... " >> /var/log/debug-
bormant
- Сообщения: 1354
Re: не стартует rc.local
И в конце поменять на echo "$(date) Done rc.local ... " >> /var/log/debug
В середине добавить отладочный вывод, чтобы установить 1) запускается ли вообще 2) до какого момента успевает выполниться.
-
Slack
- Сообщения: 86
Re: не стартует rc.local
После того, как поставил echo "$(date) Starting rc.local ... " >> /var/log/debug в начало и середину rc.local, выяснилось, что rc.local все-таки запускается, и выполняется до
#Run vncserver
/usr/bin/vncserver
Это впринципе логично, ведь vncserver работает при запущенных иксах, которые запускаются после rc.local, соответственно возникает вопрос, куда тогда "запихать" vncserver, чтоб он атоматически запускался?
#Run vncserver
/usr/bin/vncserver
Это впринципе логично, ведь vncserver работает при запущенных иксах, которые запускаются после rc.local, соответственно возникает вопрос, куда тогда "запихать" vncserver, чтоб он атоматически запускался?
-
bormant
- Сообщения: 1354
Re: не стартует rc.local
Для понимания сначала прочесть 4.1.3 из SlackBook с диска или, например, тут (en) или (ru).
"при запущенных иксах" это runlevel 4 => добавляем в /etc/rc.d/rc4.d/ стартующий и убивающий скрипты соответственно например Svncserver, Kvncserver.
Для того, чтобы обеспечивать упорядоченность в вызове скриптов из указанных каталогов (а выполняются они в порядке сортировки) после S/K добавляют пару цифр, чтобы быть уверенным, что S50* выполнится раньше S99*.
Как-то так.
И теперь, когда задача решена и появилось свободное время, прочитать SlackBook целиком :-)
"при запущенных иксах" это runlevel 4 => добавляем в /etc/rc.d/rc4.d/ стартующий и убивающий скрипты соответственно например Svncserver, Kvncserver.
Для того, чтобы обеспечивать упорядоченность в вызове скриптов из указанных каталогов (а выполняются они в порядке сортировки) после S/K добавляют пару цифр, чтобы быть уверенным, что S50* выполнится раньше S99*.
Как-то так.
И теперь, когда задача решена и появилось свободное время, прочитать SlackBook целиком :-)
-
BigKAA
- Сообщения: 292
Re: не стартует rc.local
Slack писал(а): ↑24.09.2008 03:15После того, как поставил echo "$(date) Starting rc.local ... " >> /var/log/debug в начало и середину rc.local, выяснилось, что rc.local все-таки запускается, и выполняется до
#Run vncserver
/usr/bin/vncserver
Это впринципе логично, ведь vncserver работает при запущенных иксах, которые запускаются после rc.local, соответственно возникает вопрос, куда тогда "запихать" vncserver, чтоб он атоматически запускался?
Посмотреть файл /etc/rc.d/rc.4 (кажется так называется) и добавить запуск vnc.
bormant писал(а): ↑24.09.2008 08:08Для понимания сначала прочесть 4.1.3 из SlackBook с диска или, например, тут (en) или (ru).
"при запущенных иксах" это runlevel 4 => добавляем в /etc/rc.d/rc4.d/ стартующий и убивающий скрипты соответственно например Svncserver, Kvncserver.
Для того, чтобы обеспечивать упорядоченность в вызове скриптов из указанных каталогов (а выполняются они в порядке сортировки) после S/K добавляют пару цифр, чтобы быть уверенным, что S50* выполнится раньше S99*.
Как-то так.
И теперь, когда задача решена и появилось свободное время, прочитать SlackBook целиком :-)
Батенька да Вы костыли прикручиваете. Вообщето Слака BSD style system. То, что вы рекомендуете - это SystemV. Причем скрипты в этих директориях запускаются раньше, чем у него на 4 ранлевеле менеджер дисплеев стартанет.
Почему? Ответ простой - скрипт эмулирующий систему инициализации SV запускается гораздо раньше (кажись в файле /etc/rc.d/rc.S), чем файл запускающий манагер дисплеев.
Жаль сейчас под рукой слаки нет, написал бы более точно, что когда и почему стартует.
А вообще, совет - посмотрите файл /etc/inittab на предмет какие файлы в каком порядке на 4-м ранлевеле запускаются. Там в самом конце файл, который придется поправить для запуска vnc.
-
bormant
- Сообщения: 1354
Re: не стартует rc.local
BigKAA писал(а): ↑24.09.2008 15:40Батенька да Вы костыли прикручиваете. Вообщето Слака BSD style system. То, что вы рекомендуете - это SystemV. Причем скрипты в этих директориях запускаются раньше, чем у него на 4 ранлевеле менеджер дисплеев стартанет.
Почему? Ответ простой - скрипт эмулирующий систему инициализации SV запускается гораздо раньше (кажись в файле /etc/rc.d/rc.S), чем файл запускающий манагер дисплеев.
Полностью согласен с: костыли, BSD style/SystemV.
Совет был ошибочен, но по другой причине. /etc/rc.d/rc.4 (а именно он запускается на уровне 4 в соответствии с /etc/inittab) в отличие от rc.{S|M|0|6|K} не содержит вызова /etc/rc.d/rc.sysvinit (который, в свою очередь, исходя из текущего и предыдущего уровней, сам решает, что останавливать/запускать). При таком раскладе из /etc/rc.d/rc4.d/ будут выполняться только K* скрипты.
Лишний раз править rc скрипт уровня не хотелось, имея в виду необходимость его правки в случае обновления скрипта при установке patches/packages либо апгрейда. Но "экономия" в этом случае подвела.
Еще одна беда в том, что по умолчанию запуск {g|k|x}dm производится через exec (замена текущего процесса), то есть обычным дописыванием в хвост команд ситуацию не исправить.
-
BigKAA
- Сообщения: 292
Re: не стартует rc.local
bormant писал(а): ↑24.09.2008 16:18BigKAA писал(а): ↑24.09.2008 15:40Батенька да Вы костыли прикручиваете. Вообщето Слака BSD style system. То, что вы рекомендуете - это SystemV. Причем скрипты в этих директориях запускаются раньше, чем у него на 4 ранлевеле менеджер дисплеев стартанет.
Почему? Ответ простой - скрипт эмулирующий систему инициализации SV запускается гораздо раньше (кажись в файле /etc/rc.d/rc.S), чем файл запускающий манагер дисплеев.
Полностью согласен с: костыли, BSD style/SystemV.
Совет был ошибочен, но по другой причине. /etc/rc.d/rc.4 (а именно он запускается на уровне 4 в соответствии с /etc/inittab) в отличие от rc.{S|M|0|6|K} не содержит вызова /etc/rc.d/rc.sysvinit (который, в свою очередь, исходя из текущего и предыдущего уровней, сам решает, что останавливать/запускать). При таком раскладе из /etc/rc.d/rc4.d/ будут выполняться только K* скрипты.
Лишний раз править rc скрипт уровня не хотелось, имея в виду необходимость его правки в случае обновления скрипта при установке patches/packages либо апгрейда. Но "экономия" в этом случае подвела.
Еще одна беда в том, что по умолчанию запуск {g|k|x}dm производится через exec (замена текущего процесса), то есть обычным дописыванием в хвост команд ситуацию не исправить.
Ну можно запустить перед exec скриптик, в котором сделать sleep на некоторое время. Или он будет контролировать, запустиласт и программулина, и если запустилась, запускать vnc.
Или прописать запуск этого скрипта прямо в /etc/inittab - вообще шикарный выход.
Второй вариант, посмотреть файлы связанные с манагером дисплеев и как то это дело впихнуть туда. Тут не готов сразу давать совет куда и что конкретно надо вспоминать. Для начала попробовать поиграться с xdm - /etc/X11/xdm, если поможет, то перенести это в kdm, у него такие же конфигурационные файлы, но в другой директории. Что делать с gdm, чесслово не знаю
Править стартовые скрипты в слаке можно, никаких проблем (при условии, что написать правильно) не будет. При апдейте рядом со старым скриптом появится новый, но с расширением .new.
P/S/ Почитал, еще раз подумал, все же скрипт в /etc/inittab лучшее решение этой проблемы.
-
Slack
- Сообщения: 86
Re: не стартует rc.local
Пробовал запустить vncsrver из /etc/inittab и из /etc/rc.d/rc.4 - ничего не вышло, не запускается 
-
denistkm
- Сообщения: 13
- ОС: Slackware GNU/Linux
Re: не стартует rc.local
А не легче ли поместить запуск VNC сервера в .xinitrc ?
-
Slack
- Сообщения: 86
-
BigKAA
- Сообщения: 292
Re: не стартует rc.local
Можно посмотреть, как и что в inittab писали?
-
Slack
- Сообщения: 86
Re: не стартует rc.local
Я конечно не уверен, что сделал правильно:
Сделал скрипт rc.vncserver и в inittab добавил:
id:4:initdefault:
rc:boot:/etc/rc.d/rc.vncserver