Я Потребность запустить сервисы, такие как elasticsearch, kafka на времени начальной загрузки экземпляра Ec2
Я попробовал @reboot на crontab, но что-то идет не так, как надо
Сценарий оболочки:
#!/bin/sh
nohup /home/ubuntu/elasticsearch-2.3.4/bin/elasticsearch &
Запись Crontab:
@reboot sh /home/abhijeet/startServices.sh
Я не знаю, где я иду не так, как надо
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