У меня есть скрипт в Ubuntu 9.04 в init.d, который я настроил на запуск при запуске с update-rc.d с использованием update-rc.d init_test defaults 99. Все символические ссылки на месте, и разрешения, похоже, правильные.
-rwxr-xr-x 1 root root 642 2010-10-28 16:44 init_test
mike@xxxxxxxxxx:~$ find /etc -name S99* | grep init_test
find: /etc/rc5.d/S99init_test
find: /etc/rc4.d/S99init_test
find: /etc/rc2.d/S99init_test
find: /etc/rc3.d/S99init_test
Скрипт проходит через source и ./ без проблем и ведет себя правильно. Вот исходник скрипта:
#!/bin/bash
### BEGIN INIT INFO
# Provides: init test script
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start daemon at boot time
# Description: Enable service provided by daemon.
### END INIT INFO
start() {
echo "hi"
echo "start called" >> /tmp/test.log
return
}
stop() {
echo "Stopping"
}
echo "Script called" >> /tmp/test.log
case "$1" in
start)
start
;;
stop)
stop
;;
*)
echo "Usage: {start|stop|restart}"
exit 1
;;
esac
exit $?
Когда машина запускается, я вообще не вижу "script called" или "start called" в test.log. Есть ли что-то очевидное, что я что-то путаю?
решение1
Я понял, что было не так. Был совершенно не связанный скрипт, который блокировался при запуске, потому что он запрашивал нажатие клавиши у пользователя, что, похоже, останавливало все остальные скрипты запуска. Есть ли способ устранить такие неполадки, как регистрация того, какие скрипты init.d запускаются?