Я пытаюсь понять, почему rc.local не запускается во время загрузки.
Сам файл исполняемый, он вызывается из /etc/rc2.d.
Также файл из командной строки не возвращает никаких ошибок.
Есть идеи, что еще проверить, чтобы выяснить, почему он не запускается?
решение1
Поскольку вы говорите, что rc.local
при ручном запуске все выполняется правильно, на ум сразу приходят две вещи:
- Что-то идет не так во время загрузки, но работает, когда вы запускаете это сами. Возможно, вы пытаетесь запустить программу, которая не находится в PATH во время загрузки.
/etc/rc.local
на самом деле не запускается при загрузке.
В обоих случаях первое, что я бы сделал, это добавил бы что-то вроде
/usr/bin/printenv > /var/tmp/rc.local-$(date +%T)
как самая первая строка rc.local
после #!/bin/sh
строки. Это будет печатать переменные среды в файл с меткой времени при каждом запуске. (Не записывайте файл, /tmp
потому что он очищается при загрузке.) Запустите /etc/rc.local
вручную и быстро посмотрите на полученный файл (он будет называться как-то вроде /var/tmp/rc.local-21:14:35
). Затем перезагрузите систему.
У вас должно быть два файла в /var/tmp
(или где-то еще), которые вы можете сравнить. Если у вас только первый файл, /etc/rc.local
на самом деле не вызывается. Если у вас два файла, сравните их. Последний будет иметьоченьразреженная среда и PATH. Просмотрите свой rc.local
скрипт и посмотрите, нет ли чего-то, что вы пытаетесь запустить, что зависит от какой-то переменной или какого-то компонента PATH, который не находится в среде загрузки. Если вы что-то нашли, добавьте необходимую инициализацию в rc.local
.