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