Ec2 인스턴스 부팅 시 elasticsearch, kafka 등의 서비스를 시작해야 합니다.
crontab에서 @reboot를 시도했지만 문제가 발생했습니다.
쉘 스크립트:
#!/bin/sh
nohup /home/ubuntu/elasticsearch-2.3.4/bin/elasticsearch &
Crontab 항목:
@reboot sh /home/abhijeet/startServices.sh
나는 내가 어디로 잘못 가고 있는지 모른다
답변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 &
항목 에 따르면 정확히 동일한 shebang을 사용하면서 ( ) crontab
에 대한 인수로 스크립트를 실행하고 있습니다 . 이 경우에는 아무런 차이가 없지만 shebang이 다른 경우에는 주의해야 합니다. 일반적으로 스크립트를 실행 가능하게 만들고 shebang을 사용하여 원하는 인터프리터를 나타냅니다.sh
dash
지금,가장 중요한 부분. cron
주어진 모든 작업을 해당 하위 쉘에서 실행하고 이러한 하위 쉘을 병렬(비차단) 생성합니다. 즉 작업을 병렬 방식으로 실행합니다. 따라서 nohup
및 배경화( ) 가 필요하지 않습니다. &
그냥 수행하십시오(귀하의 예에 따르면 /home/ubuntu/elasticsearch-2.3.4/bin/elasticsearch
실행 가능함).
@reboot /home/ubuntu/elasticsearch-2.3.4/bin/elasticsearch