创建脚本来管理服务

创建脚本来管理服务

我需要您的支持来创建一个部署、启动和停止从一台服务器到另一台服务器的服务所需的脚本。该服务是一个带有属性文件的 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 来解决安全问题,我没有服务器的 root 访问权限。

答案1

SystemD 不仅仅适用于root进程(即系统级别)。您可以创建 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

相关内容