shell脚本启动、关闭服务
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell脚本启动、关闭服务相关的知识,希望对你有一定的参考价值。
参考技术A JAVA_APP_PATH_WF=/opt/module/wk-source-wf.jarJAVA_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 }
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 }
注意:p10Server.java中注释掉的部分。若开启,则服务一直启动不起来!!!
以上是关于shell脚本启动、关闭服务的主要内容,如果未能解决你的问题,请参考以下文章
CentOS6.8 x86_64bit shell脚本实现模拟nginx服务启动与关闭