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

55

У меня есть сценарий, который я хотел бы запустить, когда начнется моя система. Я надел его на «rc.local», но он не работает. Как включить его при запуске?

    
задан pedroo 28.10.2010 в 01:35
источник

4 ответа

38

Можно ли запустить скрипт вручную? Если нет, это проблема с этим скриптом; иначе посмотрите больше на 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
    
ответ дан Roger Pate 28.10.2010 в 03:15
источник
41

В моем случае ни одна из инструкций не была идеальным решением. Если бы вы были так же неудачны, как и я, попробуйте этот подробный

  1. Поместите весь исполняемый код в отдельный текстовый файл с произвольным именем, например foo.sh и сохранить его в произвольном месте.
  2. Добавить

    #!/bin/sh
    

    как первая строка вашего кода.

  3. Попробуйте выполнить foo.sh с помощью

    sudo foo.sh
    

    чтобы проверить отсутствие ошибок.

  4. Предоставьте сценарий /etc/rc.local полный путь и имя созданного скрипта после команды sh

    sh '/path/to/your/script/foo.sh'
    
  5. Не забудьте поставить вышеприведенную строку перед последней строкой кода

    exit 0
    

    в конце сценария /etc/rc.local.

  6. Проверить первую строку /etc/rc.local на

    #!/bin/sh -e
    
  7. Сделайте исполняемый файл /etc/rc.local в случае, если он еще не выполним

    sudo chown root /etc/rc.local
    sudo chmod 755 /etc/rc.local
    
  8. Проверить, что все работает нормально, выполнив

    sudo /etc/init.d/rc.local start
    
  9. Тест перезагрузите вашу систему.
ответ дан shvahabi 06.01.2014 в 18:36
14

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

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

systemctl status rc-local.service

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

    
ответ дан rubo77 21.04.2016 в 10:06
3

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

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

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

    
ответ дан Ankit 29.06.2011 в 23:12