
У меня есть скрипт на Ubuntu, который я поместил в /etc/init.d. У него разрешения 0755, и я могу запустить его вручную, как исполняя его, так и ссылаясь на него, с хорошими результатами. У меня есть символические ссылки в /etc/rc3.d и /etc/rc5.d, оба с именем S01raid, оба указывают на скрипт init.d. Однако, когда я перезагружаю машину, скрипт, похоже, не запускается. Я не вижу смонтированного или даже запущенного массива, и я не вижу запущенного демона монитора в выводе ps -A
Что я здесь упускаю?
Содержание сценария:
#!/bin/sh -e
modprobe raid5
mdadm --assemble --scan
mdadm --monitor --scan --daemonize --delay 120 --program /etc/mdadm/scram.sh
mount -t xfs /dev/md0 /mnt/
решение1
Я бы посоветовал вам воспользоваться стандартными инструментами для запуска скрипта при запуске системы.
Посмотри наэтот ответна аналогичный вопрос, где я перечислил шаги, которым нужно следовать. Также, как упомянул другой пользователь в этом вопросе, для целей тестирования я бы просто поместил команды в /etc/rc.local, перед "exit 0".
Вам также нужно убедиться, что все службы, от которых это зависит, уже запущены, когда это выполняется. Проверьте журналы в /var/log на наличие сообщений об ошибках.
решение2
"S01" означает, что он запускается довольно рано в процессе загрузки. Первое, что я бы сделал, это убедился, что нет вещей, которые должны запускаться первыми, но которые запускаются позже (имеют более высокие номера).
В моей системе Ubuntu sysklogd имеет значение S10, а mdadm — S25, поэтому, по крайней мере, установите его значение выше, чтобы можно было увидеть, регистрирует ли он что-либо.