Невозможно запустить bash-скрипт при запуске EC2

Я сканировал различные ресурсы и пробовал разные вещи, но безрезультатно.

Вот ситуация;

У меня есть экземпляр EC2, который запускает приложение node.js. Я также хочу запустить bash-скрипт (цикл с промежуточным сном) в фоновом режиме, который проверяет, есть ли какие-либо новые изменения в репозитории git приложения узла.

В части пользовательских данных моего экземпляра у меня есть это;

#!/bin/bash
su - ec2-user -c 'cd sample-node-app; node index.js'
su - ec2-user -c 'bash /home/ec2-user/check_git.sh &'

Скрипт, адаптированный отсюда

#!/bin/bash
while true
do

#move into your git repo
cd ~/sample-node-app;

git fetch;
LOCAL=$(git rev-parse HEAD);
REMOTE=$(git rev-parse @{u});

#if our local revision id doesn't match the remote, we will need to pull the changes
if [ $LOCAL != $REMOTE ]; then
    #pull and merge changes
    git pull origin master;
    git reset --hard origin/master
    killall node

    npm start;
fi
sleep 5
done
  • Попробовал предложения отсюда, сюда и добавив путь к файлу rc.local, Когда я сделал rc.local часть, приложение узла прекращается автоматически при каждом запуске.
  • Установить разрешения для скрипта, используя chmod +x check_git.sh,
  • Испытанные варианты ввода пользовательских данных, такие как bash /home/ec2-user/check_git.sh а также ./check_git.sh (Я имею #!/bin/bash в верхней части сценария.)

Заранее спасибо.

1 ответ

Удалось заставить это работать, добавив следующее в мои пользовательские данные EC2;

#cloud-config

runcmd:
 - rm -rf /var/lib/cloud/*
 - su - ec2-user -c 'bash check_git.sh'
 - su - ec2-user -c 'cd sample-node-app; node index.js'

Пока не нашли причину того, почему это работает, но работаем над этим.

РЕДАКТИРОВАТЬ

Мне удалось сломать вышеупомянутое по некоторым причинам. Работал временами, но не последовательно. В конце концов я прибег к следующему;

В check_git.shУ меня есть оператор if, чтобы проверить и запустить приложение:

if ! pgrep -x "node" > /dev/null
then
    node index.js &
fi

И следующее в user-data экземпляра EC2:

#!/bin/bash
sudo rm -rf /var/lib/cloud/*
su - ec2-user -c 'bash /home/ec2-user/check_git.sh'
Другие вопросы по тегам