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 &
    

エントリによるとcrontab、まったく同じシェバンを持ちながら、スクリプトをsh( dash) の引数として実行していることに注意してください。 この場合、これは何の違いも生じませんが、シェバンが異なる場合は注意してください。 通常は、スクリプトを実行可能にし、シェバンを使用して目的のインタープリターを示します。


今、最も重要な部分.は、それぞれのサブシェルで指定されたすべてのジョブを実行し、これらのサブシェルを並列 (非ブロッキング) で生成します。つまり、ジョブを並列で実行します。したがって、およびバックグラウンド処理 ( )cronは必要ありません。(例に基づいて、実行可能) を実行するだけです。nohup&/home/ubuntu/elasticsearch-2.3.4/bin/elasticsearch

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

関連情報