Запустите Скрипт на запуске на AWS Ec2 Сервер Ubuntu 1404

Я Потребность запустить сервисы, такие как elasticsearch, kafka на времени начальной загрузки экземпляра Ec2

Я попробовал @reboot на crontab, но что-то идет не так, как надо

Сценарий оболочки:

#!/bin/sh

nohup /home/ubuntu/elasticsearch-2.3.4/bin/elasticsearch &

Запись Crontab:

@reboot sh /home/abhijeet/startServices.sh

Я не знаю, где я иду не так, как надо

0
задан 9 September 2016 в 23:29

1 ответ

cron выполнения окружают в измененной среде с минимальным PATH и по-видимому /usr/bin не представляют там так /usr/bin/nohup не находится.

Вы можете:

  • добавить /usr/bin к PATH, вместо того, чтобы изменять Ваш crontabодин, необходимо добавить это наверху сценария:

    #!/bin/sh
    export PATH="$PATH":/usr/bin
    nohup /home/ubuntu/elasticsearch-2.3.4/bin/elasticsearch &
    
  • Используйте полный путь для nohup:

    #!/bin/sh
    /usr/bin/nohup /home/ubuntu/elasticsearch-2.3.4/bin/elasticsearch &
    

Отметьте это, согласно crontab запись, Вы выполняете сценарий как аргумент sh (dash) при наличии точно той же хижины. В этом случае это не имеет никакого значения, но осторожно относительно этого, если хижина отличается. Обычно можно было бы сделать исполняемый файл сценария и хижину использования для указания на желаемый интерпретатор.


Теперь, самая важная часть. cron выполнения все данные задания в их соответствующих подоболочках и икре они подокружают параллельный (неблокирование) т.е. задания выполнений параллельным способом. Таким образом, Вам не нужно nohup и фоновая обработка (&), просто сделайте (на основе Вашего примера, /home/ubuntu/elasticsearch-2.3.4/bin/elasticsearch исполняемый файл):

@reboot /home/ubuntu/elasticsearch-2.3.4/bin/elasticsearch
0
ответ дан 28 September 2019 в 14:40

Другие вопросы по тегам:

Похожие вопросы: