为springboot创建守护线程,并开机启动

本文介绍了一个用于确保Java应用持续运行的Shell脚本,通过死循环检查并重启未运行的jar包,同时提供了使脚本开机自动启动的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1,新建shell脚本为服务保活

 

#!/bin/sh
while(true) do
	proc_num=$(ps -ef | grep XXXXXXXXX-0.0.1-SNAPSHOT.jar | grep -v "grep ")
	if [ $proc_num -eq 0 ]
	then 
		echo "start third-party-video-server...."
		nohup /opt/jre/bin/java -jar /opt/XXXXX/XXXXXXX-0.0.1-SNAPSHOT.jar --comName=COM2
	fi	
	sleep 3
done

脚本死循环查看自己jar包运行情况。

通过 ps -ef | grep XXXXXXXXX-0.0.1-SNAPSHOT.jar | grep -v "grep " 查看 XXXXXXXXX-0.0.1-SNAPSHOT.jar的运行数量。

如果等于0说明没有执行的。则启动。

否则3秒后再检测。

 

2,让脚本开机启动。

如果脚本不是死循环检测的,可以是用 corntable 来用定时任务执行,不过缺点是最小1分钟执行一次,时间过久。

这里可以将自己的shell脚本加入 rc.local 中

注意: 

一定要将命令添加在 exit 0之前;

命令即为脚本文件所在的绝对路径,如在第13行添加 /usr/local/bin/test.sh;

如果脚本中有死循环,需要在该脚本路径后加上 & ,让其后台执行

### 如何在 Java 中以守护进程方式启动应用程序 为了确保 Java 应用程序作为守护进程运行,可以通过设置特定的 JVM 参数来实现这一点。通常情况下,这涉及到使用 `nohup` 或者 `setsid` 命令配合 `-Xrs` 参数一起工作。 #### 使用 nohup 启动 Java 守护进程 当希望忽略挂起信号防止终端关闭影响到正在执行的应用时,可以采用如下方法: ```bash nohup java -jar your-application.jar & ``` 这条命令会使得即使用户退出登录之后,Java 程序仍然继续运行[^1]。 #### 设置守护线程属性 如果需要创建一个真正的后台服务,则可以在编写代码的时候指定某些线程为守护线程。通过调用 `Thread.setDaemon(true)` 方法可完成此操作。一旦所有的非守护线程结束,JVM 将终止所有剩余的守护线程停止整个虚拟机实例。 对于命令行参数处理,在 C/C++ 的例子中已经展示了如何利用 `argc` 和 `argv[]` 来获取输入参数[^3];而在 Java 中则可以直接访问 `public static void main(String[] args)` 函数中的 `args` 数组来进行同样的事情。 例如,假设有一个简单的 Spring Boot Web 应用想要将其配置成开机自启的服务,那么应该编辑相应的 `.service` 文件而不是禁用其自动启动功能[^2]。但是这里讨论的是手动启动的情况,因此不需要涉及这部分内容。 最后值得注意的一点是在 Minikube/Minishift 上部署应用前可能需要用到 OpenShift CLI (`oc`) 工具进行集群管理操作[^4]。不过这个问题与当前主题无关联,故不再展开说明。 ```java // Example of handling command-line arguments within a Java application. import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class Application { public static void main(String[] args) { System.out.println("Program name: " + Application.class.getName()); if (args.length > 0){ for (String arg : args){ System.out.println(arg); } } else{ System.out.println("No additional parameters provided."); } SpringApplication.run(Application.class, args); } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值