-
2021-05-15 15:13:21
#!/bin/sh
java env
export JAVA_HOME=/usr/local/java/jdk1.7.0_72
export JRE_HOME=$JAVA_HOME/jre
service name
APP_NAME=user
SERVICE_DIR=/home/wusc/edu/service/APPNAMESERVICENAME=edu−service−APP_NAME
SERVICE_NAME=edu-service-APPNAMESERVICENAME=edu−service−APP_NAME
JAR_NAME=KaTeX parse error: Can't use function '\.' in math mode at position 13: SERVICE_NAME\̲.̲jar
PID=SERVICE_NAME.pid
cd $SERVICE_DIR
case “$1” in
start)
nohup $JRE_HOME/bin/java -Xms256m -Xmx512m -jar $JAR_NAME >/dev/null 2>&1 &
echo $! > $SERVICE_DIR/$PID
echo "=== start $SERVICE_NAME"
;;
stop)
kill `cat $SERVICE_DIR/$PID`
rm -rf $SERVICE_DIR/$PID
echo "=== stop $SERVICE_NAME"
sleep 5
##
## edu-service-aa.jar
## edu-service-aa-bb.jar
P_ID=`ps -ef | grep -w "$SERVICE_NAME" | grep -v "grep" | awk '{print $2}'`
if [ "$P_ID" == "" ]; then
echo "=== $SERVICE_NAME process not exists or stop success"
else
echo "=== $SERVICE_NAME process pid is:$P_ID"
echo "=== begin kill $SERVICE_NAME process, pid is:$P_ID"
kill -9 $P_ID
fi
;;
restart)
$0 stop
sleep 2
$0 start
echo "=== restart $SERVICE_NAME"
;;
*)
## restart
$0 stop
sleep 2
$0 start
;;
esac
exit 0
更多相关内容 -
启动停止java服务的shell脚本
2018-09-19 15:40:46启动停止java服务的shell脚本,可以用于微服务,springboot服务,java普通进程,等等都可以 需要积分的话是系统自动涨的,每次有人下载它就会自动给涨,我会定期改成0分 -
java中如何优雅的停止服务
2021-02-27 10:56:40强制进程退出的副作用... 注:若需要平滑停止服务,我们一般可以通过ShutdownHook和Signal来实现。ShutdownHook一般比较难保证关闭任务的执行顺序,这个时候可以考虑使用Signal机制来完全托管我们关闭服务的执行顺序。强制进程退出的副作用:
缓存中的数据尚未持久化到磁盘中,导致数据丢失;
正在进行文件的write操作,没有更新完成,突然退出,导致文件损坏;
线程池的任务队列中尚有接收到的任务还没来得及处理,导致任务丢失;
数据库操作已经完成,例如账户余额更新,准备返回应答消息给客户端时,消息尚在通信线程的发送队列中排队等待发送,进程强制退出导致应答消息没有返回给客户端,客户端发起超时重试,会带来重复更新问题;
其它问题等…
解决方法:
使用ShutdownHook 钩子程序来完成善后工作
使用基于信号的进程通知机制
针对线程池的停机:
使用 DisposableBean 接口
public abstract class ExecutorConfigurationSupport extends CustomizableThreadFactory
implements DisposableBean{
@Override
public void destroy() {
shutdown();
}
/**
* Perform a shutdown on the underlying ExecutorService.
* @see java.util.concurrent.ExecutorService#shutdown()
* @see java.util.concurrent.ExecutorService#shutdownNow()
* @see #awaitTerminationIfNecessary()
*/
public void shutdown() {
if (this.waitForTasksToCompleteOnShutdown) {
this.executor.shutdown();
}
else {
this.executor.shutdownNow();
}
awaitTerminationIfNecessary();
}
/**
* Wait for the executor to terminate, according to the value of the
* {@link #setAwaitTerminationSeconds "awaitTerminationSeconds"} property.
*/
private void awaitTerminationIfNecessary() {
if (this.awaitTerminationSeconds > 0) {
try {
this.executor.awaitTermination(this.awaitTerminationSeconds, TimeUnit.SECONDS));
}
catch (InterruptedException ex) {
Thread.currentThread().interrupt();
}
}
}
}
1 通过 waitForTasksToCompleteOnShutdown 标志来控制是想立刻终止所有任务,还是等待任务执行完成后退出。
2 executor.awaitTermination(this.awaitTerminationSeconds, TimeUnit.SECONDS)); 控制等待的时间,防止任务无限期的运行(前面已经强调过了,即使是 shutdownNow 也不能保证线程一定停止运行)。
更多需要我们的思考的优雅停机策略
服务治理框架一般会考虑到优雅停机的问题。通常的做法是事先隔断流量,接着关闭应用。常见的做法是将服务节点从注册中心摘除,订阅者接收通知,移除节点,从而优雅停机;涉及到数据库操作,则可以使用事务的 ACID 特性来保证即使 crash 停机也能保证不出现异常数据,正常下线则更不用说了;又比如消息队列可以依靠 ACK 机制 + 消息持久化,或者是事务消息保障;定时任务较多的服务,处理下线则特别需要注意优雅停机的问题,因为这是一个长时间运行的服务,比其他情况更容易受停机问题的影响,可以使用幂等和标志位的方式来设计定时任务…
事务和 ACK 这类特性的支持,即使是宕机,停电,kill -9 pid 等情况,也可以使服务尽量可靠;而同样需要我们思考的还有 kill -15 pid,正常下线等情况下的停机策略。最后再补充下整理这个问题时,自己对 jvm shutdown hook 的一些理解。
shutdown hook 会保证 JVM 一直运行,直到 hook 终止 (terminated)。这也启示我们,如果接收到 kill -15 pid 命令时,执行阻塞操作,可以做到等待任务执行完成之后再关闭 JVM。同时,也解释了一些应用执行 kill -15 pid 无法退出的问题,没错,中断被阻塞了。
注:若需要平滑停止服务,我们一般可以通过ShutdownHook和Signal来实现。ShutdownHook一般比较难保证关闭任务的执行顺序,这个时候可以考虑使用Signal机制来完全托管我们关闭服务的执行顺序。
-
停止java服务
2019-07-16 19:44:04停止一个java服务,只需要调用System.exit(int state)方法 JAVA System.exit(0) 和 System.exit(1) 的区别 System.exit(int state) 方法都是来结束当前运行的java虚拟机。所有System.exit(1)、System.exit(0) 执行...停止一个java服务,只需要调用System.exit(int state)方法
JAVA System.exit(0) 和 System.exit(1) 的区别
System.exit(int state) 方法都是来结束当前运行的java虚拟机。所有System.exit(1)、System.exit(0) 执行后都会退出程序。
state为0时时正常退出,非0时为异常退出。所以System.exit(1) 常用于 catch中。
例如公司项目中生成http服务提供两种关闭服务的模式,一种是通过调用执行器去关闭生成的服务,另一种是生成的服务中提供出一个http接口来关闭生成的服务
-
Java使用ExecutorService来停止线程服务
2020-08-19 09:12:54主要介绍了Java使用ExecutorService来停止线程服务,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 -
关于java服务器中线程暂停的问题
2017-10-03 01:26:16服务器中的一个线程没有收到客户端的应答导致另一个线程暂停运行一段时间,这应当怎么去实现啊。 给一个思路方法或着简单的代码样样本吧 -
Java-UDP-Stop-and-Wait:一个用 Java 编写的 UDP 服务器和客户端来模拟 UDP 停止等待 ARQ
2021-06-16 18:24:09Java-UDP-停止和等待 一个用 Java 编写的 UDP 服务器和客户端来模拟 UDP 停止等待 ARQ -
如何在服务停止时停止多线程Windows服务中的工作线程
2021-04-17 04:23:30这是我用来停止Windows服务中的线程的代码(请注意,我直接使用Threads而不是使用线程池):// signal all threads to stopthis.AllThreadsStopSignal.Set();if (logThreads.IsDebugEnabled)logThreads.Debug ("Stop ...这是我用来停止Windows服务中的线程的代码(请注意,我直接使用Threads而不是使用线程池):
// signal all threads to stop
this.AllThreadsStopSignal.Set();
if (logThreads.IsDebugEnabled)
logThreads.Debug ("Stop workers");
// remember the time of the signal
DateTime signalTime = DateTime.Now;
// create an array of workers to be stopped
List workersToBeStopped = new List (workers);
while (true)
{
// wait for some time
Thread.Sleep (1000);
// go through the list and see if any workers have stopped
int i = 0;
while (i < workersToBeStopped.Count)
{
IServiceWorker workerToBeStopped = workersToBeStopped [i];
if (log.IsDebugEnabled)
log.Debug (String.Format (System.Globalization.CultureInfo.InvariantCulture,
"Stopping worker '{0}'. Worker state={1}",
workerToBeStopped.WorkerDescription,
workerToBeStopped.WorkerState));
bool stopped = workerToBeStopped.JoinThread (TimeSpan.Zero);
// if stopped, remove it from the list
if (stopped)
{
workersToBeStopped.RemoveAt (i);
if (log.IsDebugEnabled)
log.Debug (String.Format (System.Globalization.CultureInfo.InvariantCulture,
"Worker '{0}' was stopped.", workerToBeStopped.WorkerDescription));
}
else
{
i++;
if (log.IsDebugEnabled)
log.Debug (String.Format (System.Globalization.CultureInfo.InvariantCulture,
"Worker '{0}' could not be stopped, will try again later. Worker state={1}",
workerToBeStopped.WorkerDescription,
workerToBeStopped.WorkerState));
}
}
// if all workers were stopped, exit from the loop
if (workersToBeStopped.Count == 0)
break;
// check if the duration of stopping has exceeded maximum time
DateTime nowTime = DateTime.Now;
TimeSpan duration = nowTime - signalTime;
if (duration > serviceCustomization.ThreadTerminationMaxDuration)
{
// execute forced abortion of all workers which have not stopped
foreach (IServiceWorker worker in workersToBeStopped)
{
try
{
log.Warn (String.Format (System.Globalization.CultureInfo.InvariantCulture,
"Aborting worker '{0}.", worker.WorkerDescription));
worker.Abort ();
log.Warn (String.Format (System.Globalization.CultureInfo.InvariantCulture,
"Worker '{0}' aborted.", worker.WorkerDescription));
}
catch (ThreadStateException ex)
{
log.Warn (String.Format (System.Globalization.CultureInfo.InvariantCulture,
"Worker '{0}' could not be aborted.", worker.WorkerDescription), ex);
}
}
break;
}
}
-
JAVA实现的流服务(直播,点播)
2018-11-16 10:35:37JAVA实现的流服务(直播,点播),JAVA实现的RTSP协议,可以实现与网络客户端的交互 -
java服务自动停止原因查找
2021-12-21 13:55:47最近发现服务java启动了几天就自己停了,然后查看了,是内存不足造成的。 1.查看是否是由于内存不足造成的 命令: cd /var/log cat messages* |grep java 发现有:Out of memory: Kill process 58235 ... -
Java Service Wrapper 将你的java应用程序安装成windows系统服务
2019-07-13 02:14:16NULL 博文链接:https://s24963386.iteye.com/blog/744637 -
线上java服务自动停止
2021-02-02 22:15:031、检查磁盘是否满了 清理磁盘即可。...如果存在out of memory 等提示,说明是由于内存不足,linux操作系统把java服务给kill掉了。 解决办法:可以调低java服务的内存,或是增加物理内存或swap空间 ... -
【各种**问题系列】Linux上启动和停止jar(Java程序)
2022-02-06 09:52:26一、启动服务 先切到要运行的jar包目录,再执行下面语句!!! 简单运行 java -jar jar文件名字.jar 这是最简单运行jar文件的命令。特点:当前命令行窗口将被锁定,可按CTRL + C中止程序运行,或直接关闭窗口,... -
java cmd 命令 开启服务 关闭服务
2018-01-21 22:47:34用 java 运行 cmd 命令,可以开启、关闭 windows 上的服务,测试通过。 public class Main { public static void main(String[] args) { String exe = new Main().exe("mysql57"); System.... -
Linux 环境如何使用 kill 命令优雅停止 Java 服务.pdf
2021-08-04 23:37:34Linux 环境如何使用 kill 命令优雅停止 Java 服务,超详细讲解与例子! -
Java服务启动、重启、停止shell脚本模板
2022-03-08 16:03:14Java服务启动、重启、停止shell脚本模板需求来源脚本编写样板 需求来源 日常开发部署时,往往需要对打包的程序进行启动、重启、停止等工作重复操作,因此针对简化使用需要设置shell脚本。 脚本编写样板 在服务目录中... -
linux停止java进程
2021-05-15 06:37:06linux停止java进程[2021-02-05 06:47:36]简介:php去除nbsp的方法:首先创建一个PHP代码示例文件;然后通过“preg_replace("/(\s|\ \;| |\xc2\xa0)/", " ", strip_tags($val));”方法去除所有nbsp即可。推荐... -
在Java中停止执行几秒钟的最佳方法是什么? - java
2021-03-13 01:48:13我是Java新手。我试图编写一个程序来检查数据库状态(是否过载)。码:package com.test.service;import java.util.LinkedList;import java.util.List;public class PersonImpl {public PersonService personService;... -
java_trenapp:Java解决方案测试铁路服务
2021-05-01 13:13:03火车服务 问题1:有关路线的服务 直接图 AB5,BC4,CD8,DC8,DE6,AD5,CE2,EB3,AE7 离开 创建直接图 ABC距离:9 距离AD:5 ADC距离:13 AEBCD距离:22 AED距离:没有路线 最大CC-3停止的路线数量:2 完全... -
matlab运行代码暂停-mlp-java:mlp-java
2021-05-27 10:11:09通过Java语言实现对任务服务集群的调度来完成机器学习任务。 涉及语言 Java、python、matlab 涉及技术 Spring Boot2、Spring Cloud Netflix、MyBatis、Redis、MySQL、RabbitMQ、Vue、WebSocket、Echarts、Docker... -
java程序通过命令停止
2021-02-13 01:04:41展开全部tasklist命令找到该程序的e68a8462616964757a...tomcat的启动、结束bat都是调用org.apache.catalina.startup.Bootstrap这个类实现的,startup.bat最终会执行Bootstrap.java里的publicvoidstart()throws... -
JAVA启动停止Tomcat服务
2016-08-02 20:13:31自己做过Java对Tomcat的启动停止通过Runtime.exec()执行对应的startup.bat文件和shutdown.bat文件. 代码等会贴首先配置环境变量JAVA的JDK和JRE这里就不介绍了,本人使用jdk1.6+Tomcat6,Tomcat7 这里先配置CATALINA... -
Java服务器环境搭建(JDK+TOMCAT)
2021-11-17 10:23:02Java开发服务器环境搭建(JDK+TOMCAT) JDK安装 1.下载jdk8 官网手动下载: http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 注意看下载的文件名是否正确 Linux-x64位的tar... -
使用shell脚本文件启动和停止java服务
2020-07-31 14:06:32export JAVA_HOME=/usr/local/jdk1.8/jdk1.8.0_144 export PATH=$JAVA_HOME/bin:$PATH APPDIR=`pwd` PIDFILE=$APPDIR/datahome-hybasedata.pid if [ -f "$PIDFILE" ] && kill -0 $(cat "$PIDFILE"); then ... -
Java游戏服务器搭建
2019-03-19 20:26:03这个监听器用来监听tomcat的启动和停止,当tomcat启动时则启动游戏服务器开始监听端口,当tomcat停止时则做相应的销毁操作。 可能很多人会疑惑为什么要基于tomcat呢? 基于tomcat运行有很多优势: 1... -
使用实时Java进行开发,第2部分:改善服务质量
2021-02-27 07:29:52通过引入不受应用程序控制的暂停或中断机制,Java语言和运行时系统有时可能使应用程序无法满足服务性能指标。本文(本系列的第二部分)解释JVM中的延迟和中断的根源,介绍可用于减轻这些问题的技术,使您的应用程序... -
在Linux下启动Java服务的脚本
2021-02-13 02:06:56/bin/sh#该脚本为Linux下启动java程序的通用脚本。即可以作为开机自启动service脚本被调用,#也可以作为启动java程序的独立脚本来使用。##Author: tudaxia.com, Date: 2011/6/7##警告!!!:该脚本stop部分使用系统... -
java实现服务器的在线升级更新
2020-02-13 09:43:37java实现服务器的更新迭代 -
java+服务器上传和下载文件
2019-08-22 16:13:57代码如下,此代码已经实现了断点续传功能,用户在下载过程可以暂停,和继续下载,对服务器造成的压力也比较小。 加载文件列表,在下载列表中显示出来 后端代码逻辑大部分是相同的,目前能够支持...