У меня есть файл «sh», который запускает сервер узлов.
Это работает хорошо, если я бегу
sh /var/www/init_node.sh
Я хочу, чтобы скрипт запускался каждый раз при перезапуске моего экземпляра (чтобы у меня был запущен и работал сервер узла).
Я добавил скрипт в свой файл /etc/rc.local следующим образом:
sh /var/www/init_node.sh
exit 0
Однако, когда я перезапускаю экземпляр, сервер nodejs не работает. Это экземпляр Ubuntu 64.
Я думаю, это не важно, но вот содержимое моего sh-файла:
cd /var/www/myproject
eval `ssh-agent -s`
ssh-add -D
ssh-add ~/.ssh/id_rsa
git stash
git pull origin master --force
forever start express.js
Также
sh /etc/rc.local
работает отлично
Есть идеи?
решение1
У меня была похожая проблема с файлом rc.local на экземпляре amazon. Оказалось, что у меня была ошибка со скриптом в rc.local, которая не позволяла ему выполняться, если у меня не было tty.
Итак, как узнать, получаете ли вы подобную ошибку? Используйте cloud-init для выполнения вашего скрипта.
Для моего дистрибутива Amazon Linux я сначала отредактировал /etc/init.d/cloud-init-user-scripts
.
Изменить эту строку
/usr/bin/cloud-init-run-module once-per-instance user-scripts execute run-parts ${SCRIPT_DIR} >/dev/null && success || failure
ТО "всегда"
/usr/bin/cloud-init-run-module always user-scripts execute run-parts ${SCRIPT_DIR} >/dev/null && success || failure
Затем создайте каталог mkdir /var/lib/cloud/data/scripts
.. Теперь скопируйте ваш скрипт, который вы хотите, чтобы он выполнялся при запуске, в /var/lib/cloud/data/scripts
. Убедитесь, что бит выполнения вашего скрипта установлен.
Теперь вы сможете выполнить sudo /etc/init.d/cloud-init-user-scripts start
... Затем вы можете проверить /var/log/cloud-init.log
наличие ошибок.