将java程序成为linxu的系统服务
2023-03-14 22:33:18 时间
在分布式环境开发中经常会使用socket,或者使用rmi来对外提供服务,常用的办法是将写一个java代码,然后部署到服务器上,但是问题来了。如何将这个服务成为一个可靠的系统服务,不会应为风吹草动就挂了,那就不好了。
所以想到使用apache commons 下面的daemon框架来充当守护进程。首先需要在系统中安装jsvc工具具体操作方法这里不作详细说明,请查看 http://commons.apache.org/daemon/jsvc.html。
最后jsvc安装成功之后需要有执行 jsvc -help 会显示以下内容:
另外需要编写一个shell脚本,来控制该系统服务启动或者停止,详细请操作如下脚本:
这样可以使用一下脚本来控制系统服务的状态了:
所以想到使用apache commons 下面的daemon框架来充当守护进程。首先需要在系统中安装jsvc工具具体操作方法这里不作详细说明,请查看 http://commons.apache.org/daemon/jsvc.html。
最后jsvc安装成功之后需要有执行 jsvc -help 会显示以下内容:
- ./jsvc -help
- Usage: jsvc [-options] class [args…]
- Where options include:
- -help | –help | -?
- show this help page (implies -nodetach)
- -jvm <JVM name>
- use a specific Java Virtual Machine. Available JVMs:
- ‘client’ ‘server’
- -client
- use a client Java Virtual Machine.
- -server
- use a server Java Virtual Machine.
- -cp / -classpath <directories and zip/jar files>
- set search path for service classes and resouces
- -home <directory>
- set the path of your JDK or JRE installation (or set
- the JAVA_HOME environment variable)
- -version
- show the current Java environment version (to check
- correctness of -home and -jvm. Implies -nodetach)
- -showversion
- show the current Java environment version (to check
- correctness of -home and -jvm) and continue execution.
- -nodetach
- don’t detach from parent process and become a daemon
-
-debug
另外需要编写一个shell脚本,来控制该系统服务启动或者停止,详细请操作如下脚本:
#!/bin/bash
CLASSPATH=./trigger-server/terminator-job-trigger-server-3.1.0-SNAPSHOT.jar for P inls -F ./trigger-server/dependency/
do
CLASSPATH=$CLASSPATH:./trigger-server/dependency/$P
done
#echo $CLASSPATH
export JAVA_HOME=/opt/taobao/java
start(){
echo “starting”
/home/baisui/commons-daemon-1.0.10-native-src/unix/jsvc -pidfile ./pidfile.pid -outfile ./logs/trigger_server_out.log -errfile ./logs/trigger_server_err.log -cp $CLASSPATH com.taobao.terminator.trigger.LaunchServer
echo “start successful”
}
stop(){
/home/baisui/commons-daemon-1.0.10-native-src/unix/jsvc -stop -pidfile ./pidfile.pid -cp $CLASSPATH com.taobao.terminator.trigger.LaunchServer
echo “trigger_server stopped”
}
case “$1” in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
*)
usage
;;
esac
这样可以使用一下脚本来控制系统服务的状态了:
sh start.sh start 启动服务
sh start.sh stop 停止服务 sh start.sh restart 重启服务本文来源于"阿里中间件团队播客",原文发表时间" 2012-09-20 "
相关文章
- Java要抛弃祖宗的基业,Java程序员危险了!
- 十大 Java 语言特性
- JVM 三色标记算法,原来是这么回事!
- 聊聊 Spring 事务控制策略以及 @Transactional 失效问题避坑
- 写给 Java 程序员的前端 Promise 教程
- 写给 Java 程序员的前端 Promise 教程,你学会了吗?
- Java 中为什么不全部使用 Static 方法?
- Java 池化技术你了解多少?
- Java 服务 Docker 容器化优秀实践
- Spring Boot + EasyExcel导入导出,简直太好用了!
- 我们一起聊聊 Java 内存泄漏
- CentOS 下安装 Docker 极简教程
- JDK 19 功能集冻结:Java 19 只有七个新特性
- 关于 CMS 垃圾回收器,你真的懂了吗?
- 为什么会有这么多编程语言?
- 改善Java代码的八个建议
- 接口流量突增,如何做好性能优化?
- Java 以编程方式创建JAR文件
- POJO、Java Bean是如何定义的
- Spring 的 Bean 明明设置了 Scope 为 Prototype,为什么还是只能获取到单例对象?