サービス管理用のスクリプトの作成

サービス管理用のスクリプトの作成

あるサーバーから別のサーバーにサービスをデプロイ、開始、および停止するために必要なスクリプトを作成するには、サポートが必要です。サービスは属性ファイルを含むjarです。

より多くのオプションを含むメニュースクリプトを作成します。

私は次のようにしました。

#!/bin/bash
PS3='Please enter your choice: '
options=("Start" "Stop" "Deploy" "Quit")
select opt in "${options[@]}"
do
case $opt in
"Start Shaw")
echo "you chose choice 1"
;;
"Stop Shaw")
echo "you chose choice 2"
;;
"Check Shaw Status")
echo "you chose choice 3"
;;
"Quit")
break
;;
*) echo "invalid option $REPLY";;
esac
done

選択肢をさまざまな機能にリンクする方法がわかりません。

スタート機能:

私はこれを考えました:

function start_service ( )
{
ssh $1 'nohup /data/jdk1.8.0_151/bin/java -jar -Xmx1024M /data/apps/file.jar &'
}
echo "Starting servers"
for serv_name in $( cat /data/server_list/list.txt )
do start_service ${serv_name} &
echo $! > pid.file &
sleep 5
done

ここで、list.txtは、このサービスを開始するために必要なすべてのサーバーを含むファイルです。問題は、各サーバーにpid.fileファイルを生成する必要があり、最初のサーバーでそれを開始すると、リストされている各サーバーに対して最初のサーバーにプロセスが作成されず、代わりに各サーバーに対してプロセスが生成されることです。

停止する:

pid.fileから始めてfile.pidを読み込み、プロセスを停止するコマンドが必要です。例: kill $(cat pid.file)

配布:

ここに問題があります。フォルダを作成し、そのフォルダにjarファイルまたはプロパティファイルを配置したいと思います。この機能を選択すると、ファイルは定義されたパス内のすべてのサーバーに展開されます。 jar ファイル: /pathtofile/apps/file.jar ファイル属性: /pathtofile /conf/file.properties

PS:セキュリティ問題を解決するためにsystemdを使用することはできません。サーバーへのルートアクセス権がありません。

ベストアンサー1

rootSystemDはプロセス(つまりシステムレベル)にのみ適用されません。 SystemDユーザーサービス(systemctl --user ...)を生成できます。

#!/bin/bash
PS3='Please enter your choice: '
options=("Start" "Stop" "Deploy" "Quit")
select opt in "${options[@]}"; do
        case $opt in
                "Start")
                        echo "Starting servers"
                        for serv_name in $( cat /data/server_list/list.txt ); do
                                start_service "$serv_name" &
                                echo $! > "$serv_name".pid & # PID of the background subshell
                                sleep 5
                        done
                ;;
                "Stop")
                        echo "you chose choice 2"
                ;;
                "Deploy")
                        echo "you chose choice 3"
                ;;
                "Quit")
                        break
                ;;
                *) echo "invalid option $REPLY";;
        esac
done

おすすめ記事