0

アプリを AWS EC2 インスタンスにデプロイしており、.ebextensions フォルダー内の構成ファイルを使用して bash スクリプトを実行しています。

スクリプトでは、特定のサービスが実行されているかどうかを検出しています。実行されていない場合は、rpm を使用してパッケージをインストールします。

#!/bin/bash

service --status-all | grep -q 'MyService'

if [ $? -ne 0 ];
then
    install my package
else
    do nothing
fi

しかし、スクリプトは機能せず、常にサービスを再度インストールします。

なぜなら

service --status-all

私を混乱させるものはまったく返されません! しかし、デプロイ後、EC2 インスタンスに移動してスクリプトを試してみると、うまくいきます。展開中に機能しないというだけです。

少なくともいくつかのサービスが実行されているはずですが、空ですか?

私はこれを正しくやっていますか?

4

1 に答える 1

0

何が問題なのかを把握し、みんなの参考のためにここに置きます。

service --status-all 

bash プロンプトでは機能しますが、AWS EC2 のデプロイ中には何も返されないようです。

私はそれを次のようなものに変更しました

if ps ax | grep -v grep | grep -q 'My Service' 

ここから: http://www.akamaras.com/linux/linux-script-to-check-if-a-service-is-running-and-start-it-if-its-stopped/

そしてそれは完全に機能します。

于 2016-10-14T06:57:24.790 に答える