AWS Ec2 Ubuntu 1404 서버 시작 시 스크립트 실행

AWS Ec2 Ubuntu 1404 서버 시작 시 스크립트 실행

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을 사용하여 원하는 인터프리터를 나타냅니다.shdash


지금,가장 중요한 부분. cron주어진 모든 작업을 해당 하위 쉘에서 실행하고 이러한 하위 쉘을 병렬(비차단) 생성합니다. 즉 작업을 병렬 방식으로 실행합니다. 따라서 nohup및 배경화( ) 가 필요하지 않습니다. &그냥 수행하십시오(귀하의 예에 따르면 /home/ubuntu/elasticsearch-2.3.4/bin/elasticsearch실행 가능함).

@reboot /home/ubuntu/elasticsearch-2.3.4/bin/elasticsearch

관련 정보