shell脚本调用.out程序,终端中打开服务
2021/6/4 7:27:46
本文主要是介绍shell脚本调用.out程序,终端中打开服务,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
shell脚本调用.out程序,终端中打开服务。
关键命令:
gnome-terminal -x bash -c "./FEPServer.out;exec bash;"
FEPServer.out为要打开的.out程序,也可以是要打开的sh文件。
整体代码如下:
#!/bin/bash #author:zilong #file: caiji_start.sh #comment: caiji start script. #histroy: # 2021-03-30 10:00AM created by Zi Long at Philisense #初始化参数 #服务名 SERVICE_NAME=( FEP RTDB AlarmServer AlarmGraf ) #服务启动包所在的目录,根据实际地址设置 SERVICE_PATH=( /PhiliCube/Application/PhiliFEP /PhiliCube/Application/PhiliRTDB /PhiliCube/Application/PhiliAlarm /PhiliCube/Application/PhiliAlarm ) #服务启动包 SERVICE_PACKAGE=( FEPServer.out RTDBServer.out AlarmServer.out AlarmGraf.out ) # 脚本提示信息 tips(){ echo "-------------------------------------" echo "" echo "Version:1.0" echo "Author:zilong" echo "Comment:" echo " 命令举例:sh caiji_start.sh - status" echo " 当前支持如下服务的启动:FEP、RTDB、AlarmServer、AlarmGraf" echo " 启动参数:" echo " -status -查看平台所有服务运行状态" echo " -start -启动平台所有服务" echo " -stop -停止平台所有服务" echo " -restart -重启平台所有服务" echo " -fep -重启采集服务" echo " -rtdb -重启实时数据服务" echo " -alarm -重启报警服务" echo " -graf -重启报警消息服务" echo "" echo "-------------------------------------" } #查看状态 status(){ echo "" echo "---------查看状态 开始执行 ...-----------" for((i=0;i<${#SERVICE_NAME[@]};i++)) do num=$((i+1)) service_name=${SERVICE_NAME[i]} #查找pid之ps方法 #service_pid=$(ps -ef | grep "$service_name" | grep -v grep | grep -v bash | awk '{print $2}') #查找pid之pgrep方法 service_pid=$(pgrep -f -n "$service_name") if [ -z "$service_pid" ]; then echo "--- 服务$num: 【$service_name】未运行!!!" else echo "--- 服务$num: 【$service_name】【$service_pid】运行中..." fi done echo "---------查看状态 执行完毕 !!!-----------" echo "" } #一键启动 start() { echo "" echo "---------启动程序 开始执行 ...-----------" for((i=0;i<${#SERVICE_NAME[@]};i++)) do num=$((i+1)) service_name=${SERVICE_NAME[i]} service_path=${SERVICE_PATH[i]} service_package=${SERVICE_PACKAGE[i]} echo "---服务$num:【$service_name】开始启动 ..." echo "--- 服务目录地址为: $service_path" echo "--- 服务安装程序为: $service_package" cd "$service_path" || return # path=`pwd` # echo "--- 当前目录地址为:$path" #查找pid之ps方法 #service_pid=$(ps -ef | grep "$service_name" | grep -v "grep" | grep -v "bash" | awk '{print $2}') #查找pid之pgrep方法 service_pid=$(pgrep "$service_name") if [ -n "$service_pid" ];then echo "--- $service_name进程存在,无需启动。当前进程为:$service_pid" else ##启动服务 echo "--- $service_name进程不存在,启动服务 ..." gnome-terminal -x bash -c "./$service_package;exec bash;" ##睡1秒,等程序反应,否则可能拿不到pid sleep 1 service_pid_new=$(pgrep "$service_name") until [ -n "$service_pid_new" ] do service_pid_new=$(pgrep "$service_name") done echo "--- $service_name 启动完毕!!!当前进程为:$service_pid_new" fi sleep 1 done echo "---------启动程序 执行完毕 !!!-----------" echo "" } #一键停止 stop(){ echo "" echo "---------停止程序 开始执行 ...-----------" for((i=0;i<${#SERVICE_NAME[@]};i++)) do num=$((i+1)) service_name=${SERVICE_NAME[i]} #查找启动服务的终端 ps #service_pid=$(ps -ef | grep "$service_name" | grep "bash" | grep -v "grep" | awk '{print $2}') #查找启动服务的终端 grep service_pid=$(pgrep -f -n "$service_name") if [ -z "$service_pid" ]; then echo "--- 服务$num: 【$service_name】进程不存在或已停止运行!!!" else echo "--- 服务$num: 【$service_name】【$service_pid】运行中..." #关终端进程 terminal_pid=$(ps -ef | grep "$service_name" | grep "bash" | grep -v "grep" | awk '{print $2}') if [ -n "$terminal_pid" ]; then echo "--- 服务$num: 【$service_name】【$terminal_pid】存在窗口" kill -9 "$terminal_pid" echo "--- 服务$num: 【$service_name】窗口停止成功。" fi #关服务进程 kill -9 "$service_pid" echo "--- 服务$num: 【$service_name】【$service_pid】服务停止成功。" fi sleep 1 done echo "---------停止程序 执行完毕 !!!-----------" echo "" } ##一键重启 restart(){ echo "" echo "---------重启 开始执行 ...-----------" stop sleep 1 start sleep 1 status echo "---------重启 执行完毕 !!!-----------" echo "" } #重启某服务处理函数 reservice(){ echo "--- 获取参数 ..." service_name=$1 service_path=$2 service_package=$3 echo "--- 服务名称为: 【$service_name】" echo "--- 服务目录地址为:$service_path" echo "--- 服务安装程序为:$service_package" #到启动程序目录 cd "$service_path" || return # path=`pwd` # echo "--- 当前目录地址为:$path" #检查服务是否存在进程,有则杀掉 pid=$(pgrep -f -o "$service_name") if [ -n "$pid" ]; then echo "--- 服务进程存在,pid=[$pid]关闭当前进程 ..." kill -9 "$pid" echo "--- 清理进程后,启动 ..." else echo "--- 服务进程不存在 ..." fi #重启 gnome-terminal -x bash -c "./$service_package;exec bash;" sleep 1 service_pid_new=$(pgrep -f -n "$service_name") until [ -n "$service_pid_new" ] do service_pid_new=$(pgrep -f -n "$service_name") done echo "--- 服务已启动,当前进程为:$service_pid_new" } #采集服务 FEP fep(){ echo "" echo "---------采集服务 程序开始执行 ... -----------" service_name=${SERVICE_NAME[0]} service_path=${SERVICE_PATH[0]} service_package=${SERVICE_PACKAGE[0]} reservice "$service_name" "$service_path" "$service_package" echo "---------采集服务 程序执行完毕 !!!-----------" echo "" } #实时数据服务 RTDB rtdb(){ echo "" echo "---------实时数据服务 程序开始执行 ... -----------" service_name=${SERVICE_NAME[1]} service_path=${SERVICE_PATH[1]} service_package=${SERVICE_PACKAGE[1]} reservice "$service_name" "$service_path" "$service_package" echo "---------实时数据服务 程序执行完毕 !!!-----------" echo "" } #报警服务 AlarmServer alarm(){ echo "" echo "---------报警服务 程序开始执行 ... -----------" service_name=${SERVICE_NAME[2]} service_path=${SERVICE_PATH[2]} service_package=${SERVICE_PACKAGE[2]} reservice "$service_name" "$service_path" "$service_package" echo "---------报警服务 程序执行完毕 !!!-----------" echo "" } #报警消息服务 AlarmGraf graf(){ echo "" echo "---------报警服务 程序开始执行 ... -----------" service_name=${SERVICE_NAME[3]} service_path=${SERVICE_PATH[3]} service_package=${SERVICE_PACKAGE[3]} reservice "$service_name" "$service_path" "$service_package" echo "---------报警服务 程序执行完毕 !!!-----------" echo "" } ##终端输入参数调用 case "$1" in "-status") status ;; "-start") start ;; "-stop") stop ;; "-restart") restart ;; "-fep") fep ;; "-rtdb") rtdb ;; "-alarm") alarm ;; "-graf") graf ;; *) tips ;; esac exit 0
这篇关于shell脚本调用.out程序,终端中打开服务的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解
- 2024-11-23Java对接阿里云智能语音服务入门教程
- 2024-11-23JAVA对接阿里云智能语音服务入门教程
- 2024-11-23Java副业入门:初学者的简单教程
- 2024-11-23JAVA副业入门:初学者的实战指南