【java】关于java服务的控制脚本

一、说明

 

一些java服务(用到jre) 喜欢用 一个shell脚本封装一下 java服务控制,我们称之为 控制脚本。

 

我们以如下几个包为例说一下:

apache-tomcat-8.5.24.tar.gz

geoserver-2.14.2-bin.zip

nexus-3.16.0-01-unix.tar.gz

jetty-distribution-9.2.13.v20150730.tar.gz

 

相关包下载地址:

https://archive.apache.org/dist/tomcat/tomcat-8/v8.5.24/bin/apache-tomcat-8.5.24.tar.gz

https://repo1.maven.org/maven2/org/eclipse/jetty/jetty-distribution/9.2.13.v20150730/jetty-distribution-9.2.13.v20150730.tar.gz

http://download.sonatype.com/nexus/3/nexus-3.16.0-01-unix.tar.gz

https://versaweb.dl.sourceforge.net/project/geoserver/GeoServer/2.14.2/geoserver-2.14.2-bin.zip

 

【java】关于java服务的控制脚本_第1张图片

关于jetty ,你可以看做是一个轻量级 tomcat。

 

nexus-3.16.0-01-unix.tar.gz

geoserver-2.14.2-bin.zip

这两个软件包,其实是内置jetty来提供Web服务。

你用一个服务,可以提供管理界面时,你就应该想一下,这是哪个组件提供的?

 

 

二、解包看内容

 

# tar -zxf apache-tomcat-8.5.24.tar.gz

# tar -zxf jetty-distribution-9.2.13.v20150730.tar.gz

# tar -zxf nexus-3.16.0-01-unix.tar.gz

# unzip geoserver-2.14.2-bin.zip

 

【java】关于java服务的控制脚本_第2张图片

 

tomcat

 

#  ll   apache-tomcat-8.5.24/bin/

 

【java】关于java服务的控制脚本_第3张图片

# apache-tomcat-8.5.24/bin/catalina.sh --help

 

【java】关于java服务的控制脚本_第4张图片

 

#  vim  apache-tomcat-8.5.24/bin/startup.sh

# vim  apache-tomcat-8.5.24/bin/catalina.sh

【java】关于java服务的控制脚本_第5张图片

 

jetty

 

# ll jetty-distribution-9.2.13.v20150730/bin/

 

【java】关于java服务的控制脚本_第6张图片

 

# jetty-distribution-9.2.13.v20150730/bin/jetty.sh --help

【java】关于java服务的控制脚本_第7张图片

 

nexus


# ll nexus-3.16.0-01/bin/

【java】关于java服务的控制脚本_第8张图片


# nexus-3.16.0-01/bin/nexus --help

【java】关于java服务的控制脚本_第9张图片

 

# vim   nexus-3.16.0-01/bin/nexus

【java】关于java服务的控制脚本_第10张图片

 

GeoSever

# ll geoserver-2.14.2/bin/

【java】关于java服务的控制脚本_第11张图片

 

# geoserver-2.14.2/bin/startup.sh --help

# vim geoserver-2.14.2/bin/startup.sh

【java】关于java服务的控制脚本_第12张图片

看脚本内容知,这个脚本不接受参数,执行,直接就前台启动了。

 

 

三、总结

 

1. 从上面的解包看内容可知,这类依赖于jre的服务安装包,目录机构都非常相似

2. 一般控制脚本都在其解压包的 bin/ 目录下,这些脚本可以控制进程的启动、停止,重启等等

3. 有些软件的控制脚本除了shell外,还提供Windows上bat脚本,说明此安装包还可以用于Windows服务上的服务部署

4. 关于控制脚本参数,一般 提供后台执行和前台执行选项 ,X.sh  接run这个参数一般是前台,start是后台。

前台执行的形式:   java -jar ${JAVA_OPTS} X.jar

后台执行的形式: nohup  java -jar ${JAVA_OPTS} X.jar  >/dev/null  2>&1  &

 

为什么我会关注前台、后台执行呢?

因为写服务的systemd service文件和服务部署的容器化写Dockerfile会用到。

 

下面贴几张图,大家感受一下:

 

  nexus systemd  service文件

【java】关于java服务的控制脚本_第13张图片

  

nexus Dockerfile docker-entrypoint.sh 文件

 

【java】关于java服务的控制脚本_第14张图片

 

 

四、参考

 

【nohup和&】nohup和&究竟有啥区别?

https://www.jianshu.com/p/5e9c4871e8f8

 

关于docker容器中进程和systemd控制的进程

https://www.jianshu.com/p/52cb4c420a56

你可能感兴趣的:(java)