rc.local на Ubuntu на EC2 не будет работать - PullRequest
0 голосов
/ 25 марта 2012

Ниже приведено содержимое моего файла rc.local.Когда я запускаю sudo /etc/rc.local, он работает нормально.Когда я загружаюсь и экземпляр.Я ожидаю, что Монит будет установлен, но это не так.Я в полной растерянности.Я обычно использую 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.

apt-get -y install monit
/etc/init.d/monit stop
cd /home/ubuntu/workspace/rtbopsConfig/
git fetch
git checkout origin/master rtb_ec2_boot/ec2_boot.py
git checkout origin/master config/
cp /home/ubuntu/workspace/rtbopsConfig/config/monit/redis/monitrc /etc/monit/
/usr/bin/python /home/ubuntu/workspace/rtbopsConfig/rtb_ec2_boot/ec2_boot.py >>  /home/ubuntu/workspace/ec2_boot.txt 2>&1

/etc/init.d/monit start
chkconfig monit on

exit 0

Ответы [ 2 ]

4 голосов
/ 25 марта 2012

Возможно, вы захотите запустить скрипт с:

apt-get update

, так как ваш кэш apt может быть устаревшим для "apt-get install".

Вы также можете отладитьСценарий, запустив его с помощью следующих двух строк:

#!/bin/bash -ex
exec > >(tee /var/log/rc.local.log|logger -t rc.local -s 2>/dev/console) 2>&1

Это будет выводить каждую команду и ее вывод в /var/log/rc.local.log, чтобы вы могли узнать, что происходит с ошибкой и с какой ошибкой.

Убедитесь, что файл является исполняемым:

sudo chmod 755 /etc/rc.local

Обратите внимание, что rc.local запускается при при каждой загрузке, а не только при первой загрузке.Убедитесь, что вы согласны с тем, что он запускается снова после того, как система некоторое время работала.

Вот статья, которую я написал, с более подробной информацией о приведенной выше команде "exec": http://alestic.com/2010/12/ec2-user-data-output

0 голосов
/ 15 июня 2016

В моем случае я случайно использовал CRLF окончания строки в rc.local.После преобразования их в LF-окончания мой rc.local был наконец выполнен.

Неправильно

#!/bin/sh\r\n
#\r\n
# This script will be executed *after* all the other init scripts.\r\n
# You can put your own initialization stuff in here if you don't
# want to do the full Sys V style init stuff.\r\n
\r\n
touch /var/lock/subsys/local\r\n

Исправлено

#!/bin/sh\n
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...