У меня есть сценарий, который я хотел бы запустить, когда начнется моя система. Я надел его на «rc.local», но он не работает. Как включить его при запуске?
Вы можете запустить свой скрипт вручную? Если нет, это проблема с этим скриптом; иначе посмотрите больше на rc.local. (Если этот скрипт должен запускаться от имени пользователя root, вам нужно использовать sudo для его запуска вручную.)
Убедитесь, что исполняемый файл /etc/rc.local и исполняемый скрипт также является исполняемым. [!d1 ]
$ 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
В моем случае ни одна из инструкций не была идеальным решением. Если вы были так же неудачны, как и я, попробуйте этот подробный один
Поместите весь свой исполняемый код в отдельный текстовый файл с произвольным именем, например foo.sh, и сохраните его в произвольном месте. Добавьте#!/bin/sh
в первую строку кода. Попробуйте выполнить foo.sh с помощью sudo foo.sh
, чтобы проверить отсутствие ошибок. Предоставьте сценарий /etc/rc.local полный путь и имя созданного скрипта после команды sh sh '/path/to/your/script/foo.sh'
Не забудьте поставить вышеприведенную строку перед последней строкой кода exit 0
в конце / etc / rc. локальный скрипт. Проверьте первую строку /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
Если он содержит systemd , ваш параметр кажется прекрасным, и вы могли бы получить еще одну ошибку в вашем файле /etc/rc.local (это может быть неудачная команда).
2 предложения.
Убедитесь, что файл целевого скрипта также отмечен как исполняемый. Является ли целевой скрипт запущенным командой sudo? Если это так, вы можете указать на него пароль sudo.Мой плохой. Тогда просто проверьте. Спасибо за исправление enzotib:)