Как я могу заставить /etc/rc.local запускаться при запуске?

У меня есть сценарий, который я хотел бы запустить при запуске моей системы, и я вставил его в /etc/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

В моем случае ни одна из инструкций не была идеальным решением, поэтому попробуйте эту подробную инструкцию:

  1. Сохраните весь выполняемый код в отдельном текстовом файле с произвольным именем, например foo.sh
  2. Добавь #!/bin/sh в качестве первой строки в foo.sh, выполняя его через sudo foo.sh для проверки на наличие ошибок
  3. В /etc/rc.local, поместите полный путь к foo.sh, предваряемый sh, прежде чем exit 0:
    sh '/path/to/your/script/foo.sh'
  4. Проверьте первую строку в /etc/rc.local является #!/bin/sh -e
  5. Обеспечивать /etc/rc.local является исполняемым:
    sudo chown root /etc/rc.localsudo chmod 755 /etc/rc.local
  6. Убедитесь, что все работает нормально:
    sudo /etc/init.d/rc.local start
  7. Перезагрузка для тестирования

В более новых версиях Ubuntu systemd используется и /etc/rc.local по умолчанию загружается не всегда.

Проверьте, загружена ли служба совместимости с

systemctl status rc-local.service

screenshot

Если он содержит активен (вышел) ваши настройки кажутся нормальными, и у вас может быть еще одна ошибка в вашем /etc/rc.local файл (например, это может быть команда, которая завершается с ошибкой).

2 предложения.

  1. Убедитесь, что целевой файл сценария также помечен как исполняемый.
  2. Является ли целевой скрипт выполняющим потеть командовать? Если это так, вы можете указать для него пароль sudo.

Моя вина. Тогда просто проверь один. Спасибо за исправление энзотиба :)

Используя systemd в качестве менеджера запуска, убедитесь, что запущена совместимость rc.local: systemctl status rc-local.service

Где находится команда xsetwacom? /etc/rc.local выполняется с очень простым ПУТЕМ при запуске. Вероятно, он отличается от ПУТИ, по которому вы вошли в систему на терминале. В терминале введите: type -p xsetwacom, затем замените команду “xsetwacom” в /etc/rc.local на полный путь, возвращаемый “type -p”. Нужно ли вам выполнять какие-либо инициализации вручную, прежде чем xsetwacom заработает для вас?

комментарий уолтинатора был моей проблемой. Из-за минимального пути он не знал, как запускать скрипты, которые я хотел запустить. Путь, загруженный в мою систему Ubuntu 14.04 во время запуска /etc/rc.local, был следующим: /sbin:/usr/sbin:/bin:/usr/bin… вы можете проверить свой, поместив echo $PATH > /home/rc_local_path в свой /etc/rc.local, а затем проверив файл после его запуска при запуске.

Имейте в виду, что если ваш скрипт должен ** выполняться непрерывно ** вы должны запустить его как демон в файле rc.local!

Используйте “sudo systemctl enable rc-local.service”, чтобы убедиться, что “/etc/rc.local” выполняется во время запуска сервера