You never can tell with bees (dil) wrote,
You never can tell with bees
dil

This journal has been placed in memorial status. New entries cannot be posted to it.

Грабельки, хорошо присыпанные листвой

Конечно, я на них наступил. На домашней машинке, работающей по совместительству роутером в провайдерские интернеты, в /etc/rc.local было несколько команд. В один прекрасный день, после какого-то апгрейда, они перестали работать. Причём запускаешь вручную после загрузки системы — всё работает.

При внимательном разглядывании после включения всей отладочной информации обнаружилось, что сам по себе скрипт при загрузке системы запускается, но выполняется из него ровно одна команда. Первая: rmmod usbhid. Неудачно, потому что на этот момент модуль usbhid ещё не загружен. А остальные выполняться перестали совсем.

Вопрос для сисадминов нумер раз: угадайте, почему. Вопрос нумер два: какого хрена?

Полные тексты /etc/init.d/rc.local и /etc/rc.local под катом.

/etc/init.d/rc.local:

#! /bin/sh
### BEGIN INIT INFO
# Provides:          rc.local
# Required-Start:    $remote_fs $syslog $all
# Required-Stop:
# Default-Start:     2 3 4 5
# Default-Stop:
# Short-Description: Run /etc/rc.local if it exist
### END INIT INFO

PATH=/sbin:/usr/sbin:/bin:/usr/bin

. /lib/init/vars.sh
. /lib/lsb/init-functions

do_start() {
	if [ -x /etc/rc.local ]; then
	        [ "$VERBOSE" != no ] && log_begin_msg "Running local boot scripts (/etc/rc.local)"
		/etc/rc.local
		ES=$?
		[ "$VERBOSE" != no ] && log_end_msg $ES
		return $ES
	fi
}

case "$1" in
    start)
	do_start
        ;;
    restart|reload|force-reload)
        echo "Error: argument '$1' not supported" >&2
        exit 3
        ;;
    stop)
        ;;
    *)
        echo "Usage: $0 start|stop" >&2
        exit 3
        ;;
esac

/etc/rc.local:

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
/sbin/rmmod usbhid
/sbin/modprobe hid-aureal
/sbin/modprobe usbhid
/usr/local/sbin/masq.sh
exit 0

Оригинал этой записи. Комментировать можно тут или там.

Любые материалы из этого блога запрещается использовать на сайте livejournal.ru в любой форме и любом объёме

Tags: linux, грабли, домашнее, задачки для сисадминов, маршрутизация
Subscribe
  • Post a new comment

    Error

    Comments allowed for friends only

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 25 comments