shell脚本启动、关闭服务

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell脚本启动、关闭服务相关的知识,希望对你有一定的参考价值。

参考技术A JAVA_APP_PATH_WF=/opt/module/wk-source-wf.jar
JAVA_APP_PATH_REGISTER=/opt/module/wk-register.jar
PYTHON_APP_PATH=/root/main.py

usage()
echo "Usage: sh 执行脚本.sh [start|stop]"
exit 1


python_is_exist()
pid= ps -ef|grep $PYTHON_APP_PATH|grep -v grep|awk 'print $2'
# 如果不存在返回1,存在返回0
if [ -z "$pid" ]; then
return 1
else
return 0
fi


python_start()
python_is_exist
if [ pid ."
else
echo "回传引擎 start run"
nohup python $PYTHON_APP_PATH > /root/log/nohup.out 2>&1 &
fi


python_stop()
python_is_exist
if [ pid
else
echo "回传引擎 is not running"
fi


java_wf_is_exist()
pid= ps -ef|grep $JAVA_APP_PATH_WF|grep -v grep|awk 'print $2'
# 如果不存在返回1,存在返回0
if [ -z "$pid" ]; then
return 1
else
return 0
fi


java_wf_start()
java_wf_is_exist
if [ pid ."
else
echo "采集引擎 start run"
nohup java -jar $JAVA_APP_PATH_WF > /dev/null 2>&1 &
fi


java_wf_stop()
java_wf_is_exist
if [ pid
else
echo "采集引擎 is not running"
fi


java_register_is_exist()
pid= ps -ef|grep $JAVA_APP_PATH_REGISTER|grep -v grep|awk 'print $2'
# 如果不存在返回1,存在返回0
if [ -z "$pid" ]; then
return 1
else
return 0
fi


java_register_start()
java_register_is_exist
if [ pid ."
else
echo "注册中心 start run"
nohup java -jar $JAVA_APP_PATH_REGISTER > /dev/null 2>&1 &
fi


java_register_stop()
java_register_is_exist
if [ pid
else
echo "注册中心 is not running"
fi


start()
echo "启动注册中心..."
java_register_start
java_register_is_exist
until [ pid, 启动采集引擎..."
java_wf_start
java_wf_is_exist
until [ pid, 启动回传引擎..."
python_start
python_is_exist
until [ pid, 所有引擎已启动完成"


stop()
echo "关闭注册中心..."
java_register_stop
java_register_is_exist
until [ ? -eq "1" ]
do
java_wf_is_exist
done
sleep 5
echo "采集引擎已关闭, 关闭回传引擎..."
python_stop
python_is_exist
until [ $? -eq "1" ]
do
python_is_exist
done
sleep 2
echo "回传引擎已关闭, 所有引擎已关闭"


case "$1" in
"start")
start
;;
"stop")
stop
;;
*)
usage
;;
esac
exit 0

java001-java调用shell命令和脚本

一。项目需求:

从某一机构获取证书,证书机构提供小工具,执行.sh脚本即可启动服务,本地调用该服务即可获取证书。

问题:linux服务器启动该服务,不能关闭。一旦关闭,服务即停止。

解决方案:java调用shell命令,利用spring容器启动即执行方案。

参考博文:http://zohan.iteye.com/blog/1709136

项目结构:

原码:

1。RuntimeUtils.java

 1 package com.csvalue.common;
 2 
 3 import org.springframework.util.StringUtils;
 4 
 5 import java.io.File;
 6 import java.io.IOException;
 7 
 8 /*
 9 * java调用sheet脚本工具类
10 * */
11 public class RuntimeUtils {
12     public static Process exec(String command, String envp, String dir)
13             throws IOException {
14         String regex = "\\\\s+";
15         String args[] = null;
16         String envps[] = null;
17         if (!StringUtils.isEmpty(command)) {
18             args = command.split(regex);
19         }
20         if (!StringUtils.isEmpty(envp)) {
21             envps = envp.split(regex);
22         }
23         return Runtime.getRuntime().exec(args, envps, new File(dir));
24     }
25 }
View Code

2。p10Server.java

 1 package com.csvalue.service.impl;
 2 
 3 import com.csvalue.common.RuntimeUtils;
 4 import org.slf4j.LoggerFactory;
 5 import org.springframework.stereotype.Component;
 6 import org.springframework.stereotype.Service;
 7 
 8 import javax.annotation.PostConstruct;
 9 
10 /*
11 * Spring容器启动即启动sh脚本文件
12 * */
13 @Service
14 public class P10Server {
15     final org.slf4j.Logger log = LoggerFactory.getLogger(getClass());
16     @PostConstruct
17     public void init(){
18         System.out.println("启动p10服务:init....");
19         String command = "sh startup.sh";
20         String dir=RuntimeUtils.class.getResource("/").getPath()+"KTServer";
21         System.out.println(dir);
22         try {
23             RuntimeUtils.exec(command, null, dir);
24             //Process process = RuntimeUtils.exec(command, null, dir);
25             //int i = process.waitFor();
26            // System.exit(i);
27         }catch (Exception e){
28             log.error("启动p10异常:"+e.getMessage());
29         }
30 
31     }
32 }
View Code

注意:p10Server.java中注释掉的部分。若开启,则服务一直启动不起来!!!

以上是关于shell脚本启动、关闭服务的主要内容,如果未能解决你的问题,请参考以下文章

CentOS6.8 x86_64bit shell脚本实现模拟nginx服务启动与关闭

java001-java调用shell命令和脚本

rsync启动关闭shell脚本

使用 linux shell脚本启动jar包,进行关闭,查看状态

shell脚本判断进程是不是存在,并重新启动

shell脚本--制作自己的服务脚本