|
- #!/usr/bin/env bash
- # 常量初始化
- set_runtime_vars(){
- # 日期时间
- Now_Date=`date +"%Y-%m-%d %H:%M:%S"`
-
- # 服务状态
- Service_Status=(
- "服务已开启"
- "服务已停止"
- )
-
- # 动作状态
- Action_Status=(
- "服务启动成功"
- "服务停止成功"
- "服务启动失败"
- "服务停止失败"
- )
-
- # 程序名称
- App_Name=(
- "------Java-----"
- "------.Net-----"
- "------Node-----"
- "-----Python----"
- "------Web------"
- "--Java数据模拟--"
- "--.Net数据模拟--"
- )
-
- # 线程名称
- Thread_Name=(
- "java -javaagent:/home/ymliu/Skywalking/Agent/demo_java_linux/ShinyAPM-agent/ShinyAPM-agent.jar -jar /home/ymliu/Skywalking/Agent/demo_java_linux/spring-boot-jpa-thymeleaf-curd-3.0.0.jar" # java程序在线程中的名称
- "dotnet demo2.dll --environment=Development" # .net程序在线程中的名称
- "node web.js" # node程序在线程中的名称
- "python manage.py runserver" # python程序在线程中的名称
- "dotnet demo_web.dll" # web程序在线程中的名称
- "DataGenerator.sh" # Java数据模拟程序在线程中的名称
- "python DataGenerator.py" # .net数据模拟程序在线程中的名称
- )
-
- # 日志文件
- File_Name=$Script_Dir/start.log
- }
- # 获取线程数量
- Get_Thread_Num(){
- thread_Name=$1
- num=`ps -ef | grep "${thread_Name}" | grep -v grep | wc -l`
- }
- # 获取线程ID
- Get_Thread_ID(){
- thread_Name=$1
- pid=`ps -ef | grep "${thread_Name}" | grep -v grep | awk '{print $2}'`
- }
- # 检查Java服务状态
- Check_Java_Status(){
- Get_Thread_Num "${Thread_Name[0]}"
- Get_Thread_ID "${Thread_Name[0]}"
-
- if [[ $num > 0 && $pid!=null ]]; then
- echo "${App_Name[0]}${Service_Status[0]}"
- else
- echo "${App_Name[0]}${Service_Status[1]}"
- fi
- }
- # 检查.net服务状态
- Check_Net_Status(){
- Get_Thread_Num "${Thread_Name[1]}"
- Get_Thread_ID "${Thread_Name[1]}"
-
- if [[ $num > 0 && $pid!=null ]]; then
- echo "${App_Name[1]}${Service_Status[0]}"
- else
- echo "${App_Name[1]}${Service_Status[1]}"
- fi
- }
- # 检查node服务状态
- Check_Node_Status(){
- Get_Thread_Num "${Thread_Name[2]}"
- Get_Thread_ID "${Thread_Name[2]}"
-
- if [[ $num > 0 && $pid!=null ]]; then
- echo "${App_Name[2]}${Service_Status[0]}"
- else
- echo "${App_Name[2]}${Service_Status[1]}"
- fi
- }
- # 检查python服务状态
- Check_Python_Status(){
- Get_Thread_Num "${Thread_Name[3]}"
- Get_Thread_ID "${Thread_Name[3]}"
-
- if [[ $num > 0 && $pid!=null ]]; then
- echo "${App_Name[3]}${Service_Status[0]}"
- else
- echo "${App_Name[3]}${Service_Status[1]}"
- fi
- }
- # 检查web服务状态
- Check_Web_Status(){
- Get_Thread_Num "${Thread_Name[4]}"
- Get_Thread_ID "${Thread_Name[4]}"
-
- if [[ $num > 0 && $pid!=null ]]; then
- echo "${App_Name[4]}${Service_Status[0]}"
- else
- echo "${App_Name[4]}${Service_Status[1]}"
- fi
- }
- # 检查Java数据模拟服务状态
- Check_JavaData_Status(){
- Get_Thread_Num "${Thread_Name[5]}"
- Get_Thread_ID "${Thread_Name[5]}"
-
- if [[ $num > 0 && $pid!=null ]]; then
- echo "${App_Name[5]}${Service_Status[0]}"
- else
- echo "${App_Name[5]}${Service_Status[1]}"
- fi
- }
- # 检查.net数据模拟服务状态
- Check_NetData_Status(){
- Get_Thread_Num "${Thread_Name[6]}"
- Get_Thread_ID "${Thread_Name[6]}"
-
- if [[ $num > 0 && $pid!=null ]]; then
- echo "${App_Name[6]}${Service_Status[0]}"
- else
- echo "${App_Name[6]}${Service_Status[1]}"
- fi
- }
- # 启动Java程序
- Start_Java_App(){
- if [[ $(Check_Java_Status) == "${App_Name[0]}${Service_Status[0]}" ]]; then
- echo "${App_Name[0]}${Service_Status[0]}"
- else
- cd $Script_Dir/demo_java_linux
- nohup ./start.sh & # 启动程序的命令
- Get_Thread_ID "${Thread_Name[0]}"
- if [[ $(Get_Thread_ID "${Thread_Name[0]}") != null ]]; then
- echo "${App_Name[0]}${Action_Status[0]}"
- echo "${Now_Date}:${App_Name[0]}应用服务启动成功,线程ID=${pid}" >> $File_Name # 把时间、应用名称写入日志
- else
- echo "${App_Name[0]}${Action_Status[2]}"
- echo "${Now_Date}:${App_Name[0]}应用服务启动失败" >> $File_Name # 把时间、应用名称写入日志
- fi
- fi
- }
- # 启动net程序
- Start_Net_App(){
- if [[ $(Check_Net_Status) == "${App_Name[1]}${Service_Status[0]}" ]]; then
- echo "${App_Name[1]}${Service_Status[0]}"
- else
- cd $Script_Dir/demo_net_linux
- nohup ./start.sh & # 启动程序的命令
- if [[ $(Get_Thread_ID "${Thread_Name[1]}") != null ]]; then
- echo "${App_Name[1]}${Action_Status[0]}"
- echo "${Now_Date}:${App_Name[1]}应用服务启动成功,线程ID=${pid}" >> $File_Name # 把时间、应用名称写入日志
- else
- echo "${App_Name[1]}${Action_Status[2]}"
- echo "${Now_Date}:${App_Name[1]}应用服务启动失败" >> $File_Name # 把时间、应用名称写入日志
- fi
- fi
- }
- # 启动node程序
- Start_Node_App(){
- if [[ $(Check_Node_Status) == "${App_Name[2]}${Service_Status[0]}" ]]; then
- echo "${App_Name[2]}${Service_Status[0]}"
- else
- cd $Script_Dir/demo_node_linux
- nohup ./start.sh & # 启动程序的命令
- if [[ $(Get_Thread_ID "${Thread_Name[2]}") != null ]]; then
- echo "${App_Name[2]}${Action_Status[0]}"
- echo "${Now_Date}:${App_Name[2]}应用服务启动成功,线程ID=${pid}" >> $File_Name # 把时间、应用名称写入日志
- else
- echo "${App_Name[2]}${Action_Status[2]}"
- echo "${Now_Date}:${App_Name[2]}应用服务启动失败" >> $File_Name # 把时间、应用名称写入日志
- fi
- fi
- }
- # 启动python程序
- Start_Python_App(){
- if [[ $(Check_Python_Status) == "${App_Name[3]}${Service_Status[0]}" ]]; then
- echo "${App_Name[3]}${Service_Status[0]}"
- else
- cd $Script_Dir/demo_python/mysite
- source venv/bin/activate # 启动python虚拟环境
- nohup ./feizhuru_start.sh & # 启动程序的命令
- if [[ $(Get_Thread_ID "${Thread_Name[3]}") != null ]]; then
- echo "${App_Name[3]}${Action_Status[0]}"
- echo "${Now_Date}:${App_Name[3]}应用服务启动成功,线程ID=${pid}" >> $File_Name # 把时间、应用名称写入日志
- else
- echo "${App_Name[3]}${Action_Status[2]}"
- echo "${Now_Date}:${App_Name[3]}应用服务启动失败" >> $File_Name # 把时间、应用名称写入日志
- fi
- fi
- }
- # 启动web程序
- Start_Demo_Web(){
- if [[ $(Check_Web_Status) == "${App_Name[4]}${Service_Status[0]}" ]]; then
- echo "${App_Name[4]}${Service_Status[0]}"
- else
- cd $Script_Dir/demo_web
- nohup ./start.sh & #启动程序的命令
- if [[ $(Get_Thread_ID "${Thread_Name[4]}") != null ]]; then
- echo "${App_Name[4]}${Action_Status[0]}"
- echo "${Now_Date}:${App_Name[4]}应用服务启动成功,线程ID=${pid}" >> $File_Name # 把时间、应用名称写入日志
- else
- echo "${App_Name[4]}${Action_Status[2]}"
- echo "${Now_Date}:${App_Name[4]}应用服务启动失败" >> $File_Name # 把时间、应用名称写入日志
- fi
- fi
- }
- # 启动Java模拟数据程序
- Start_Datagenerator_Bash_App(){
- if [[ $(Check_JavaData_Status) == "${App_Name[5]}${Service_Status[0]}" ]]; then
- echo "${App_Name[5]}${Service_Status[0]}"
- else
- cd $Script_Dir/ScriptFile/bash
- nohup ./DataGenerator.sh & # 启动程序的命令
- if [[ $(Get_Thread_ID "${Thread_Name[5]}") != null ]]; then
- echo "${App_Name[5]}${Action_Status[0]}"
- echo "${Now_Date}:${App_Name[5]}应用服务启动成功,线程ID=${pid}" >> $File_Name # 把时间、应用名称写入日志
- else
- echo "${App_Name[5]}${Action_Status[2]}"
- echo "${Now_Date}:${App_Name[5]}应用服务启动失败" >> $File_Name # 把时间、应用名称写入日志
- fi
- fi
- }
- # 启动net模拟数据程序
- Start_Datagenerator_Python_App(){
- if [[ $(Check_NetData_Status) == "${App_Name[6]}${Service_Status[0]}" ]]; then
- echo "${App_Name[6]}${Service_Status[0]}"
- else
- cd $Script_Dir/ScriptFile/python
- source venv/bin/activate
- nohup python DataGenerator.py & # 启动程序的命令
- if [[ $(Get_Thread_ID "${Thread_Name[6]}") != null ]]; then
- echo "${App_Name[6]}${Action_Status[0]}"
- echo "${Now_Date}:${App_Name[6]}应用服务启动成功,线程ID=${pid}" >> $File_Name # 把时间、应用名称写入日志
- else
- echo "${App_Name[6]}${Action_Status[2]}"
- echo "${Now_Date}:${App_Name[6]}应用服务启动失败" >> $File_Name # 把时间、应用名称写入日志
- fi
- fi
- }
- # 停止Java程序
- Stop_Java_App(){
- if [[ $(Check_Java_Status) == "${App_Name[0]}${Service_Status[0]}" ]]; then
- Get_Thread_ID "${Thread_Name[0]}"
- kill -9 $pid
- if [[ $(Get_Thread_Num "${Thread_Name[0]}") > 0 && $(Get_Thread_ID "${Thread_Name[0]}") != null ]]; then
- echo "${App_Name[0]}${Action_Status[3]}"
- echo "${Now_Date}:${App_Name[0]}应用服务停止失败,线程ID=${pid}" >> $File_Name # 把时间、应用名称写入日志
- else
- echo "${App_Name[0]}${Action_Status[1]}"
- echo "${Now_Date}:${App_Name[0]}应用服务停止成功" >> $File_Name # 把时间、应用名称写入日志
- fi
- else
- echo "${App_Name[0]}${Service_Status[1]}"
- fi
- }
- # 停止Net程序
- Stop_Net_App(){
- if [[ $(Check_Net_Status) == "${App_Name[1]}${Service_Status[0]}" ]]; then
- Get_Thread_ID "${Thread_Name[1]}"
- kill -9 $pid
- if [[ $(Get_Thread_Num "${Thread_Name[1]}") > 0 && $(Get_Thread_ID "${Thread_Name[1]}") != null ]]; then
- echo "${App_Name[1]}${Action_Status[3]}"
- echo "${Now_Date}:${App_Name[1]}应用服务停止失败,线程ID=${pid}" >> $File_Name # 把时间、应用名称写入日志
- else
- echo "${App_Name[1]}${Action_Status[1]}"
- echo "${Now_Date}:${App_Name[1]}应用服务停止成功" >> $File_Name # 把时间、应用名称写入日志
- fi
- else
- echo "${App_Name[1]}${Service_Status[1]}"
- fi
- }
- # 停止node程序
- Stop_Node_App(){
- if [[ $(Check_Node_Status) == "${App_Name[2]}${Service_Status[0]}" ]]; then
- Get_Thread_ID "${Thread_Name[2]}"
- kill -9 $pid
- if [[ $(Get_Thread_Num "${Thread_Name[2]}") > 0 && $(Get_Thread_ID "${Thread_Name[2]}") != null ]]; then
- echo "${App_Name[2]}${Action_Status[3]}"
- echo "${Now_Date}:${App_Name[2]}应用服务停止失败,线程ID=${pid}" >> $File_Name # 把时间、应用名称写入日志
- else
- echo "${App_Name[1]}${Action_Status[1]}"
- echo "${Now_Date}:${App_Name[2]}应用服务停止成功" >> $File_Name # 把时间、应用名称写入日志
- fi
- else
- echo "${App_Name[2]}${Service_Status[1]}"
- fi
- }
- # 停止python程序
- Stop_Python_App(){
- if [[ $(Check_Python_Status) == "${App_Name[3]}${Service_Status[0]}" ]]; then
- Get_Thread_ID "${Thread_Name[3]}"
- kill -9 $pid
- if [[ $(Get_Thread_Num "${Thread_Name[3]}") > 0 && $(Get_Thread_ID "${Thread_Name[3]}") != null ]]; then
- echo "${App_Name[3]}${Action_Status[3]}"
- echo "${Now_Date}:${App_Name[3]}应用服务停止失败,线程ID=${pid}" >> $File_Name # 把时间、应用名称写入日志
- else
- echo "${App_Name[3]}${Action_Status[1]}"
- echo "${Now_Date}:${App_Name[3]}应用服务停止成功" >> $File_Name # 把时间、应用名称写入日志
- fi
- else
- echo "${App_Name[3]}${Service_Status[1]}"
- fi
- }
- # 停止web程序
- Stop_Demo_Web(){
- if [[ $(Check_Web_Status) == "${App_Name[4]}${Service_Status[0]}" ]]; then
- Get_Thread_ID "${Thread_Name[4]}"
- kill -9 $pid
- if [[ $(Get_Thread_Num "${Thread_Name[4]}") > 0 && $(Get_Thread_ID "${Thread_Name[4]}") != null ]]; then
- echo "${App_Name[4]}${Action_Status[3]}"
- echo "${Now_Date}:${App_Name[4]}应用服务停止失败,线程ID=${pid}" >> $File_Name # 把时间、应用名称写入日志
- else
- echo "${App_Name[4]}${Action_Status[1]}"
- echo "${Now_Date}:${App_Name[4]}应用服务停止成功" >> $File_Name # 把时间、应用名称写入日志
- fi
- else
- echo "${App_Name[4]}${Service_Status[1]}"
- fi
- }
- # 停止Java模拟数据程序
- Stop_Datagenerator_Bash_App(){
- if [[ $(Check_JavaData_Status) == "${App_Name[5]}${Service_Status[0]}" ]]; then
- Get_Thread_ID "${Thread_Name[5]}"
- kill -9 $pid
- if [[ $(Get_Thread_Num "${Thread_Name[5]}") > 0 && $(Get_Thread_ID "${Thread_Name[5]}") != null ]]; then
- echo "${App_Name[5]}${Action_Status[3]}"
- echo "${Now_Date}:${App_Name[5]}应用服务停止失败,线程ID=${pid}" >> $File_Name # 把时间、应用名称写入日志
- else
- echo "${App_Name[5]}${Action_Status[1]}"
- echo "${Now_Date}:${App_Name[5]}应用服务停止成功" >> $File_Name # 把时间、应用名称写入日志
- fi
- else
- echo "${App_Name[5]}${Service_Status[1]}"
- fi
- }
- # 停止net模拟数据程序
- Stop_Datagenerator_Python_App(){
- if [[ $(Check_NetData_Status) == "${App_Name[6]}${Service_Status[0]}" ]]; then
- Get_Thread_ID "${Thread_Name[6]}"
- kill -9 $pid
- if [[ $(Get_Thread_Num "${Thread_Name[6]}") > 0 && $(Get_Thread_ID "${Thread_Name[6]}") != null ]]; then
- echo "${App_Name[6]}${Action_Status[3]}"
- echo "${Now_Date}:${App_Name[6]}应用服务停止失败,线程ID=${pid}" >> $File_Name # 把时间、应用名称写入日志
- else
- echo "${App_Name[6]}${Action_Status[1]}"
- echo "${Now_Date}:${App_Name[6]}应用服务停止成功" >> $File_Name # 把时间、应用名称写入日志
- fi
- else
- echo "${App_Name[6]}${Service_Status[1]}"
- fi
- }
- # 开启程序
- Start_All(){
- Start_Java_App
- Start_Net_App
- Start_Node_App
- Start_Python_App
- Start_Demo_Web
- Start_Datagenerator_Bash_App
- Start_Datagenerator_Python_App
- }
- # 结束程序
- Stop_All(){
- Stop_Java_App
- Stop_Net_App
- Stop_Node_App
- Stop_Python_App
- Stop_Demo_Web
- Stop_Datagenerator_Bash_App
- Stop_Datagenerator_Python_App
- }
- # 状态查询
- Status_All(){
- Check_Java_Status
- Check_Net_Status
- Check_Node_Status
- Check_Python_Status
- Check_Web_Status
- Check_JavaData_Status
- Check_NetData_Status
- }
- # 主函数
- main(){
- # 程序初始化
- Script_Dir=$(
- cd $(dirname "$0") || exit
- pwd
- )
-
- set_runtime_vars
-
- Script_Param=$1
- case ${Script_Param} in
- "start")
- Start_All
- ;;
- "stop")
- Stop_All
- ;;
- "status")
- Status_All
- ;;
- *)
- echo "用法:startup.sh [选项]"
- echo "选项:[status: 状态查询] [start: 开启服务] [stop: 停止服务]"
- ;;
- esac
- }
- main "$@"
复制代码 来源:https://www.cnblogs.com/lym003/p/17384891.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作! |
|