У меня есть сценарий, который я хотел бы запустить, когда начнется моя система. Я надел его на «rc.local», но он не работает. Как включить его при запуске?
У меня есть сценарий, который я хотел бы запустить, когда начнется моя система. Я надел его на «rc.local», но он не работает. Как включить его при запуске?
Можно ли запустить скрипт вручную? Если нет, это проблема с этим скриптом; иначе посмотрите больше на rc.local. (Если этот скрипт должен запускаться от имени root, вам нужно использовать sudo для его ручного запуска.)
Убедитесь, что исполняемый файл /etc/rc.local и исполняемый скрипт также выполним.
$ ls -l /etc/rc.local
-rwxr-xr-x 1 root root 419 2010-08-27 11:26 /etc/rc.local
Убедитесь, что rc.local имеет строку shebang (по умолчанию):
$ head -n1 /etc/rc.local
#!/bin/sh -e
В моем случае ни одна из инструкций не была идеальным решением. Если бы вы были так же неудачны, как и я, попробуйте этот подробный
Добавить
#!/bin/sh
как первая строка вашего кода.
Попробуйте выполнить foo.sh с помощью
sudo foo.sh
чтобы проверить отсутствие ошибок. Р>
Предоставьте сценарий /etc/rc.local полный путь и имя созданного скрипта после команды sh
sh '/path/to/your/script/foo.sh'
Не забудьте поставить вышеприведенную строку перед последней строкой кода
exit 0
в конце сценария /etc/rc.local.
Проверить первую строку /etc/rc.local на
#!/bin/sh -e
Сделайте исполняемый файл /etc/rc.local в случае, если он еще не выполним
sudo chown root /etc/rc.local
sudo chmod 755 /etc/rc.local
Проверить, что все работает нормально, выполнив
sudo /etc/init.d/rc.local start
В более новых версиях Ubuntu используется systemd
, а по умолчанию /etc/rc.local
не загружается по умолчанию.
Проверьте, загружена ли служба совместимости с
systemctl status rc-local.service
Если он содержит активный (завершенный) , ваш параметр кажется прекрасным, и у вас может быть другая ошибка в файле /etc/rc.local
(это может быть неудачная команда).
2 предложения.
Мой плохой. Тогда просто проверьте. Спасибо за исправление enzotib:)