Как я могу сделать & ldquo; rc.local & rdquo; выполняться при запуске?

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

75
задан 24 May 2015 в 17:05

4 ответа

Можете ли вы запустить скрипт вручную? Если нет, то это проблема с этим скриптом; в противном случае посмотрите больше на 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
0
ответ дан 24 May 2015 в 17:05

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

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

systemctl status rc-local.service

screenshot

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

28
ответ дан 24 May 2015 в 17:05

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

  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. Тестовый перезапуск Ваша система.
53
ответ дан 24 May 2015 в 17:05

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

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

Мои ошибки Просто отметьте одно. Спасибо за исправление энзотиба :)

0
ответ дан 24 May 2015 в 17:05

Другие вопросы по тегам:

Похожие вопросы: