В моем /etc/rc.local
скрипте есть одна команда, которая должна запускать демон обновления Tiny Tiny RSS во время запуска, но сценарий не запускается во время запуска. Зачем?
Весь файл /etc/rc.local:
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
/sbin/start-stop-daemon -b -c www-data:www-data -S -x /usr/bin/php /var/www/ttrss/update_daemon2.php -- -quiet
exit 0
/etc/rc.local
является исполняемым:
# ls -l /etc/rc.local
-rwxr-xr-x 1 root root 342 May 25 16:14 /etc/rc.local
/etc/init.d/rc.local
существует и является исполняемым:
# ls -l /etc/init.d/rc.local
-rwxr-xr-x 1 root root 801 Jul 27 2012 /etc/init.d/rc.local
/etc/init.d/rc.local
предполагается выполнить при запуске для этого уровня запуска:
# runlevel
N 2
# ls -l /etc/rc2.d/S99rc.local
lrwxrwxrwx 1 root root 18 Sep 22 2012 /etc/rc2.d/S99rc.local -> ../init.d/rc.local
Если я вручную вызываю /etc/rc.local из командной строки, update_daemon загружается ...
# /etc/rc.local
# ps ax | grep update_daemon2.php
2233 ? S 0:00 /usr/bin/php /media/sda5/www/news/update_daemon2.php -quiet
2234 ? S 0:00 /usr/bin/php /media/sda5/www/news/update_daemon2.php -quiet
... что я должен помнить каждый раз, когда мой сервер перезагружается, пока эта проблема не будет устранена.
Подобные вопросы уже существуют, но до сих пор я не смог применить информацию в моей конкретной проблеме.
Почему команда в rc.local не выполняется во время запуска?
requiretty
настройки. Когда вы вошли в систему, вы выполняете сценарий в TTY, но во время загрузки системы его нет в TTY. Эта ссылка может помочь вам shell-tips.com/2014/09/08/… Спасибо.Ответы:
rc.local
Сценарий завершается, если при выполнении какой-либо из его команд возникает какая-либо ошибка (упомяните-e
флаг в#!/bin/sh -e
).Возможно, что некоторые условия не выполняются, когда вы пытаетесь выполнить свои команды, когда
rc.local
выполняется выполнение, поэтому выполнение вашей команды не выполняется.Я сталкивался с тем же самым, когда вручную настраивал процессор и не делал этого
rc.local
. Вот мой собственный обходной путь, который используетсяupdate-rc.d
для запуска ваших команд при запуске:myscript.sh
в каталоге/etc/init.d
с заголовком:#!/bin/sh
sudo chmod +x /etc/init.d/myscript.sh
sudo update-rc.d myscript.sh defaults
Кроме того, вы можете проверить
/etc/network/if-up.d
скрипты и посмотреть, сможете ли вы запускать команды при запуске сети.источник
update-rc.d
у меня была похожая проблема в rc.local не выполняется при запуске
sshades дал мне следующий ответ:
хотя я не проверял его решение, я думаю, что это звучит логично и будет работать. Тем не мение :
Я также нашел решение, что добавление скрипта в ./.config/autostart-scripts/ поможет
источник
rc.local
выключено, какая альтернатива?попробуйте
sudo sysv-rc-conf
и проверьте,rc.local
включен лиисточник
sudo apt install sysv-rc-conf
rc.local
даже нет в моем списке услуг!Убедитесь, что скрипт rc.local является исполняемым:
Затем включите его:
Перезагрузите систему или запустите скрипт вручную, запустив:
Статус сервиса можно отобразить, запустив:
источник
rc-local
службу.У нас была эта проблема на некоторых хостинговых серверах, загружающих правила FW.
На этих блоках они ОЧЕНЬ быстро перезагружаются, и мы обнаружили, что просто поместили «sleep 1» в rc.local до того, как операторы загрузки, похоже, решат проблему. Я полагаю, что это дало немного времени на настройку интерфейсов перед загрузкой правил FW.
источник
sleep 1
решил мою проблему. Интересно, что у меня много серверов, но только один имеет эту проблему.Я однажды отредактировал
rc.local
с помощью Блокнота в Windows, и у него появилась эта проблема.В этом случае использование текстового редактора с поддержкой преобразования EOL, такого как Notepad ++, для преобразования стиля EOL в 'Unix' может решить эту проблему.
Вы также можете сделать это
:set ff=unix
в Vim.источник
В контейнерах Ubuntu lxc я обнаружил, что если rc.local имеет совершенно правильный shebang, например
это терпит неудачу, но если вы удалите shebang, это работает.
Не до конца поняв, почему или какую оболочку он использует, я думаю, что он тоже бомбит первый ненулевой. (В других Ubuntu установка правильного shebang не проблема)
источник
Вам нужно будет убедиться, что
/etc/rc.local
это выполняется во время запуска сервера с помощью команды:sudo systemctl enable rc-local.service
источник