Как запустить скрипты при старте в Amazon Linux?

Вопрос или проблема

Я пытаюсь создать скрипт, который должен запускаться при старте.

Теперь я создал файл myScript в /etc/init.d/ и затем запустил sudo chkconfig --add myScript;

chkconfig --list myScript вывод:

myScript 0:off 1:off 2:on 3:on 4:on 5:on 6:off

myScript:

#!/bin/sh
# chkconfig: 2345 98 02
# description:
# processname:

# Подключаем библиотеку функций.
if [ -f /etc/init.d/functions ] ; then
  . /etc/init.d/functions
elif [ -f /etc/rc.d/init.d/functions ] ; then
  . /etc/rc.d/init.d/functions
else
  exit 0
fi
KIND="_"

start() {
   echo starting `date` >> ~/myScript.log
}

stop() {
   echo stopping myScript
}

restart() {
   echo restarting
}

case "$1" in
  start)
          start
        ;;
  stop)
          stop
        ;;
  restart)
          restart
        ;;
  *)
        echo $"Usage: $0 {start|stop|restart}"
        exit 1
esac
exit $?

Теперь я могу успешно запустить service myScript start, и запись в журнал будет добавлена. Но если я запущу sudo reboot или перезагружу экземпляр через консоль AWS UI, это не работает так, как ожидалось.

Хотя вывод runlevel такой:

N 3

Нужна помощь.

Ваша конфигурация chkconfig будет работать, если вы shutdown ваш экземпляр.

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

Ответ или решение

Как запускать скрипты при старте на Amazon Linux

Запуск скриптов при старте системы в Amazon Linux может потребовать выполнения нескольких шагов для успешной конфигурации. В данном руководстве мы рассмотрим, как правильно настроить скрипт для автоматического выполнения при загрузке системы, а также объясним, почему в некоторых случаях ваши скрипты могут не запускаться при перезагрузке.

Шаг 1: Создание и настройка скрипта

Вы правильно создали свой скрипт и поместили его в директорию /etc/init.d/. Убедитесь, что скрипт имеет необходимые права на выполнение. В вашем случае команду для установки прав можно выполнить так:

sudo chmod +x /etc/init.d/myScript

Также вы уже добавили скрипт в систему управления службами:

sudo chkconfig --add myScript

Проверьте снова статус с помощью:

chkconfig --list myScript

Убедитесь, что ваш скрипт установлен для нужных уровней выполнения (runlevels). В вашем случае это 2, 3, 4 и 5 – что является правильным.

Шаг 2: Проверка содержимого скрипта

Ваш скрипт должен корректно определять и обрабатывать команды start, stop и restart. Убедитесь, что все команды внутри функций выполняются без ошибок. Пример, который вы предоставили, выглядит правильным. Однако вы можете добавить больше логирования для диагностики, если скрипт не будет срабатывать.

Шаг 3: Использование системы инициализации

Amazon Linux использует систему инициализации SysVinit и не применяет процесс запуска сервисов так, как это делает SystemD. Это может стать причиной того, что ваш скрипт не запускается при перезагрузке, особенно если вы просто перезапускаете систему через интерфейс AWS.

Обратите внимание: В некоторых случаях, если вы просто перезагружаете инстанс в AWS (например, через AWS Management Console), могут возникать различия в процессе инициализации. Система может не обрабатывать все скрипты, которые должны запускаться при обычной загрузке.

Шаг 4: Завершение настроек

Если ваш скрипт не запускается при обычной перезагрузке, попробуйте следующее:

  1. Проверьте наличие ошибок в логах. Проверьте системные логи, такие как /var/log/messages или /var/log/syslog, на наличие сообщений об ошибках, связанных с вашим скриптом.

  2. Использование альтернатив. Если ваш скрипт продолжает не запускаться, рассмотрите использование системы crontab с опцией @reboot, что может быть более надежным способом для выполнения скрипта после загрузки системы. Для этого выполните команду:

    crontab -e

    И добавьте строку:

    @reboot /etc/init.d/myScript start
  3. Тестирование. Тестируйте выполнение скрипта вручную после каждой модификации, выполняя:

    sudo service myScript start
    sudo shutdown -h now

    и затем загрузите систему снова.

Заключение

Настройка скрипта для автоматического запуска может быть проблематичной, но следуя вышеизложенным шагам, вы сможете добиться желаемого результата. Убедитесь в правильности конфигурации вашего окружения и проводите тестирование для диагностики потенциальных проблем, связанных с запуском. Если проблемы продолжатся, рассмотрите возможность использования других систем инициализации, таких как SystemD, или анализируйте другие зарегистрированные ошибки в логах.

Этот подход гарантирует, что ваши скрипты будут работать, даже если система перезагружается через интерфейс AWS.

Оцените материал
Добавить комментарий

Капча загружается...