Вопрос

Я создал собственный Amazon AMI (Fedora), запускающий несколько сценариев и затем отключающийся.

Проблема с AMI заключается в том, что если мой код изменится, у экземпляра AMI должен быть способ получить последние сценарии перед их выполнением.

Я написал сценарий оболочки и вставил его /etc/init.d/nt_startup

Чтобы поддерживать код в актуальном состоянии, я выполняю git pull сценарий оболочки в моем репозитории кода, а затем выполните его.

Проблема в том, git pull похоже, не запускается при загрузке экземпляра, но сценарий Python работает нормально.Не знаю, чего мне не хватает...вот скрипт запуска:

#!/bin/bash
#
# ec2 Startup script for EC2 machines
#
# chkconfig: 345 99 02
# description: Script used to issue startup and shutdown commands.
#

if [ "$1" = "start" ]; then
 /usr/scripts/code/git_latest
 python /usr/scripts/code/process.py
 exit
fi

if [ "$1" = "stop" ]; then
#nothing
exit
fi

А /usr/scripts/code/git_latest сценарий оболочки выглядит следующим образом:

#pulls in the latest code from the repository
cd /usr/scripts/code
sudo git pull

Он должен снести последнюю process.py сценарий.

Странно то, что если я подключусь к своему экземпляру по SSH и выполню сценарий запуска вручную (/etc/init.d/nt_startup "start"), скрипт git работает нормально.

Я что-то пропустил?

Это было полезно?

Решение

Хорошо, я наконец понял это.Изучив вывод EC2, я нашел эту строку:

"Запуск ntstartup:судо:извините, у вас должен быть tty, чтобы запустить sudo"

Судя по всему, Fedora блокирует команды sudo, не относящиеся к tty.

Быстрый поиск привел к решению:

  1. От имени пользователя root запустите «visudo».
  2. Найдите строку с «Требованиями по умолчанию» и закомментируйте ее (#Требования по умолчанию).

Надеюсь, это будет полезно для всех, кто сталкивается с этой проблемой.

Другие советы

Вам необходимо поместить ссылку для запуска в /etc/rc?.d.Вы можете использовать chkconfig(8) или ntsysv(8) для администрирования этих каталогов.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top