не стартует rc.local (проблема с запуском rc.local)

SLAX, Deep Style, ZenWalk

Модератор: Модераторы разделов

Slack
Сообщения: 86

не стартует rc.local

Сообщение Slack »

Почему-то при запуске системы не стартует rc.local, если после загрузки запустить его ручками - то все нормально, в чем может быть причина и как это исправить (Slackware 12.1)
Спасибо сказали:
Аватара пользователя
bormant
Сообщения: 1354

Re: не стартует rc.local

Сообщение bormant »

Для проверки старта можно в начало 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

Сообщение Slack »

В файле /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

Сообщение bormant »

bormant писал(а):
23.09.2008 08:34
Для проверки старта можно в начало rc.local вставить
echo "$(date) Starting rc.local ... " >> /var/log/debug

И в конце поменять на echo "$(date) Done rc.local ... " >> /var/log/debug
В середине добавить отладочный вывод, чтобы установить 1) запускается ли вообще 2) до какого момента успевает выполниться.
Спасибо сказали:
Slack
Сообщения: 86

Re: не стартует rc.local

Сообщение Slack »

После того, как поставил echo "$(date) Starting rc.local ... " >> /var/log/debug в начало и середину rc.local, выяснилось, что rc.local все-таки запускается, и выполняется до
#Run vncserver
/usr/bin/vncserver
Это впринципе логично, ведь vncserver работает при запущенных иксах, которые запускаются после rc.local, соответственно возникает вопрос, куда тогда "запихать" vncserver, чтоб он атоматически запускался?
Спасибо сказали:
Аватара пользователя
bormant
Сообщения: 1354

Re: не стартует rc.local

Сообщение bormant »

Для понимания сначала прочесть 4.1.3 из SlackBook с диска или, например, тут (en) или (ru).
"при запущенных иксах" это runlevel 4 => добавляем в /etc/rc.d/rc4.d/ стартующий и убивающий скрипты соответственно например Svncserver, Kvncserver.
Для того, чтобы обеспечивать упорядоченность в вызове скриптов из указанных каталогов (а выполняются они в порядке сортировки) после S/K добавляют пару цифр, чтобы быть уверенным, что S50* выполнится раньше S99*.
Как-то так.
И теперь, когда задача решена и появилось свободное время, прочитать SlackBook целиком :-)
Спасибо сказали:
Аватара пользователя
BigKAA
Сообщения: 292

Re: не стартует rc.local

Сообщение BigKAA »

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.
Удачи, Артур Крюков
--
CentOS 5.x | Fedora Core
Home милый wikihome и мой блог
Спасибо сказали:
Аватара пользователя
bormant
Сообщения: 1354

Re: не стартует rc.local

Сообщение bormant »

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

Сообщение BigKAA »

bormant писал(а):
24.09.2008 16:18
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 (замена текущего процесса), то есть обычным дописыванием в хвост команд ситуацию не исправить.

Ну можно запустить перед exec скриптик, в котором сделать sleep на некоторое время. Или он будет контролировать, запустиласт и программулина, и если запустилась, запускать vnc.
Или прописать запуск этого скрипта прямо в /etc/inittab - вообще шикарный выход.
Второй вариант, посмотреть файлы связанные с манагером дисплеев и как то это дело впихнуть туда. Тут не готов сразу давать совет куда и что конкретно надо вспоминать. Для начала попробовать поиграться с xdm - /etc/X11/xdm, если поможет, то перенести это в kdm, у него такие же конфигурационные файлы, но в другой директории. Что делать с gdm, чесслово не знаю :) не юзал.

Править стартовые скрипты в слаке можно, никаких проблем (при условии, что написать правильно) не будет. При апдейте рядом со старым скриптом появится новый, но с расширением .new.

P/S/ Почитал, еще раз подумал, все же скрипт в /etc/inittab лучшее решение этой проблемы.
Удачи, Артур Крюков
--
CentOS 5.x | Fedora Core
Home милый wikihome и мой блог
Спасибо сказали:
Slack
Сообщения: 86

Re: не стартует rc.local

Сообщение Slack »

Пробовал запустить vncsrver из /etc/inittab и из /etc/rc.d/rc.4 - ничего не вышло, не запускается :(
Спасибо сказали:
denistkm
Сообщения: 13
ОС: Slackware GNU/Linux

Re: не стартует rc.local

Сообщение denistkm »

А не легче ли поместить запуск VNC сервера в .xinitrc ?
Спасибо сказали:
Slack
Сообщения: 86

Re: не стартует rc.local

Сообщение Slack »

denistkm писал(а):
26.09.2008 06:23
А не легче ли поместить запуск VNC сервера в .xinitrc ?

Пробовал, тоже не выходит, да и это не выход из положения т.к. .xinitrc выполняется после того как пользователь залогинится, а нужно чтоб через vnc можно было бы ввести пользователя и пароль
Спасибо сказали:
Аватара пользователя
BigKAA
Сообщения: 292

Re: не стартует rc.local

Сообщение BigKAA »

Slack писал(а):
26.09.2008 03:53
Пробовал запустить vncsrver из /etc/inittab и из /etc/rc.d/rc.4 - ничего не вышло, не запускается :(

Можно посмотреть, как и что в inittab писали?
Удачи, Артур Крюков
--
CentOS 5.x | Fedora Core
Home милый wikihome и мой блог
Спасибо сказали:
Slack
Сообщения: 86

Re: не стартует rc.local

Сообщение Slack »

BigKAA писал(а):
26.09.2008 09:42
Slack писал(а):
26.09.2008 03:53
Пробовал запустить vncsrver из /etc/inittab и из /etc/rc.d/rc.4 - ничего не вышло, не запускается :(

Можно посмотреть, как и что в inittab писали?

Я конечно не уверен, что сделал правильно:
Сделал скрипт rc.vncserver и в inittab добавил:
id:4:initdefault:
rc:boot:/etc/rc.d/rc.vncserver
Спасибо сказали: