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

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

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

4 ответа

Вы можете запустить свой скрипт вручную? Если нет, это проблема с этим скриптом; иначе посмотрите больше на 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
39
ответ дан 26 May 2018 в 00:46
  • 1
    Да, я могу запустить скрипт вручную. Как я могу убедиться, что /etc/rc.local является исполняемым? Что мне нужно печатать? Это «$ ls -l /etc/rc.local -rwxr-xr-x 1»? Благодаря! – pedroo 28 October 2010 в 13:47
  • 2
    @pedroo: Я скопировал именно то, что я вижу в моем терминале (так что вы видите подсказку, ввод и вывод все выше). Команда имеет значение: ls -l /etc/rc.local" и если он будет исполняемым, он будет иметь эти Xs в выходе. – user 28 October 2010 в 13:50
  • 3
    Я попробовал & ls -l /etc/rc.local" и он выполним, но я не могу заставить его работать при запуске ... Любая идея? – pedroo 29 October 2010 в 04:49
  • 4
    @pedroo: Что делает этот скрипт? Записывает ли он какие-либо файлы журналов, которые необходимо проверить? (Я думаю, что пришло время обновить вопрос более подробно). – user 29 October 2010 в 04:51
  • 5
    @pedroo: для этого нужен X-сервер, который не выполняется, когда выполняется rc.local. Запуск его из rc.local приведет к его завершению без каких-либо действий (хотя я надеюсь, что он отправит сообщение в syslog или в другом месте). Вам нужно поместить команды xsetwacom в ~ / .xinitrc или / etc / X / xinit / xinitrc. – user 29 October 2010 в 05:07

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

Поместите весь свой исполняемый код в отдельный текстовый файл с произвольным именем, например 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
. Тестируйте перезапуск системы.
43
ответ дан 26 May 2018 в 00:46
  • 1
    Шаг 8 был ключевым, проверяя, что сценарий будет запущен в среде запуска. В моем случае мне нужно дать полный путь к команде. – Peter Gluck 19 July 2015 в 05:22
  • 2
    Префект и шаг за шагом велики, он работает на centos, но sudo /etc/rc.local start сначала запускается. – Mahdi Parsa 28 October 2015 в 15:35
  • 3
    Спасибо - этот провал действительно помог мне, и, как и выше, шаг 8 был для меня ключом! Без этого он не перенаправляет +1 (для справки, приложение узла, работающее на облачном сервере битнами, используя forever для непрерывного запуска). – fidev 29 September 2016 в 11:56
  • 4
    Шаг 8 был хорошим советом, но я думаю, что шаг 7 может быть тем, что было исправлено, я пытался запустить скрипт, используя cron, чтобы открыть туннель, но он случайно не срабатывал – SeanClt 17 June 2017 в 22:19

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

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

systemctl status rc-local.service

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

16
ответ дан 26 May 2018 в 00:46

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

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

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

3
ответ дан 26 May 2018 в 00:46
  • 1
    rc.local запускается с правами root, поэтому пароль не требуется. – enzotib 30 June 2011 в 02:22

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

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