LINUX.ORG.RU

Точки в загрузочных скриптах Slackware 11


0

0

После установки Apache 2, в /etc/rc.d/rc.M перестало грузиться
все что находиться после него.
...
...
...

# Start Apache web server:
if [ -x /etc/rc.d/rc.apache2 ]; then
  . /etc/rc.d/rc.apache2 start
fi

т.е. все что ниже этой записи - не выполняется!!! Ниже идет вот это:

# Start the VSFTPD server:
if [ -x /etc/rc.d/rc.vsftpd ]; then
  . /etc/rc.d/rc.vsftpd start
fi

# Start the VPN:
if [ -x /etc/rc.d/rc.vpn ]; then
  . /etc/rc.d/rc.vpn start
fi

# Start the local setup procedure.
if [ -x /etc/rc.d/rc.local ]; then
  . /etc/rc.d/rc.local
fi

Ни ftp, ни vpn, ни rc.local, ни чего... все игнорируется :(
Потом убрал точки внутри if'ов и все заработало.
Т.е. вместо

# Start Apache web server:
if [ -x /etc/rc.d/rc.apache2 ]; then
  . /etc/rc.d/rc.apache2 start
fi

сделал

# Start Apache web server:
if [ -x /etc/rc.d/rc.apache2 ]; then
  /etc/rc.d/rc.apache2 start
fi

и так для всего остального.
Ворпос: что это за точки и какую они играют роль? И кто их поставил?
И вообще - что случилось то... раньше все нормально грузилось а тут...
ничего не пойму.  Уважаемые, у кого Slackware - будьте добры, 
посмотрите у вас эти точки тоже стоят?
anonymous

. <сценарий>

-используется для запуска скрипта без порожления процесса-интерпретатора, то есть, в контексте уже запущенного shell, который в твоём случае обрабатывает /etc/rc.d/rc.M

Обычно так делают для того, чтобы изменения переменных, производимые в вызываемом сценарии происходили для текущего shell, а не для дочернего интерпретатора, после завершения которого они пропадут.

Раз у тебе Slackware, то поставил эти точки не кто иной, как сам Патрик.

Evil_And ★★
()
Ответ на: комментарий от Vanilin

Ок, теперь все ясно. Особенно после внимательного чтения комментариев в самом /etc/rc.d/rc.apache2 :)
...
#  Note that this script should NOT be sourced (using the "." command),
#  since it contains "exit" statements which would cause rc.M to exit
#  prematurely.  This is similar to rc.cups, which also cannot be sourced.
...
Т.е. этот скрипт нельзя запускать с точкой, т.к. он содержит "exit" и это может привести к немедленному выходу из rc.M.
Забавно... Дело в том, что я эти блин точки со всего rc.M поубирал, а нужно было только с апача... Где бы найти оригинальный rc.M?
Люди, выложите плз. кто нибудь свой rc.M (c точками) :), себе скопирую... :) Заранее большое спасибо.

P.S. Хотя все равно не понятно почему вырубает. Запускаю же его как rc.apache2 start а там exit нет... :(
Вот содержимое моего rc.apache2

$ cat /etc/rc.d/rc.apache2
#!/bin/sh
#
# Slackware startup script for Apache2
# Written by Ken Zalewski <kennyz@nycap.rr.com> on 19 September 2006
# Last revision on 3 October 2006
#
# NOTES:
#
#  This script can be run directly from a root command shell, using:
#        root# /etc/rc.d/rc.apache2 start
#  or
#        root# /etc/rc.d/rc.apache2 stop
#
#  For automatic startup, it should be added to /etc/rc.d/rc.M, just
#  beneath the MySQL startup, or to /etc/rc.d/rc.local.
#  A sample startup line:
#
#        [ -x /etc/rc.d/rc.apache2 ] && /etc/rc.d/rc.apache2 start
#
#  or more traditionally:
#
#        if [ -x /etc/rc.d/rc.apache2 ]; then
#          /etc/rc.d/rc.apache2 start
#        fi
#
#  Note that this script should NOT be sourced (using the "." command),
#  since it contains "exit" statements which would cause rc.M to exit
#  prematurely.  This is similar to rc.cups, which also cannot be sourced.
#
#  By default, Slackware ships rc.M with an rc.httpd script that is
#  sourced.  This file uses an alternate name so that there is no confusion.
#

PEXEC=/usr/sbin/apachectl
PNAME=Apache2

check_env() {
  # Confirm that the package is installed correctly.
  if [ ! -x $PEXEC ]; then
    echo "$PNAME is not installed correctly" >&2
    exit 1
  fi
}

start() {
  check_env
  echo -n "Starting $PNAME: "
  $PEXEC start && echo "ok" || echo "failed"
}

stop() {
  echo -n "Stopping $PNAME: "
  $PEXEC stop && echo "ok" || echo "failed"
}

restart() {
  echo -n "Restarting $PNAME: "
  $PEXEC restart && echo "ok" || echo "failed"
}


case "$1" in
  start)
    start
    ;;
  stop)
    stop
    ;;
  restart)
    restart
    ;;
 *)
    echo "Usage: $0 {start|stop|restart}" >&2
    exit 1
    ;;
esac

exit 0

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.