一些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
关于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
# ll apache-tomcat-8.5.24/bin/
# apache-tomcat-8.5.24/bin/catalina.sh --help
# vim apache-tomcat-8.5.24/bin/startup.sh
# vim apache-tomcat-8.5.24/bin/catalina.sh
# ll jetty-distribution-9.2.13.v20150730/bin/
# jetty-distribution-9.2.13.v20150730/bin/jetty.sh --help
# ll nexus-3.16.0-01/bin/
# nexus-3.16.0-01/bin/nexus --help
# vim nexus-3.16.0-01/bin/nexus
# ll geoserver-2.14.2/bin/
# geoserver-2.14.2/bin/startup.sh --help
# vim geoserver-2.14.2/bin/startup.sh
看脚本内容知,这个脚本不接受参数,执行,直接就前台启动了。
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文件
nexus Dockerfile docker-entrypoint.sh 文件
【nohup和&】nohup和&究竟有啥区别?
https://www.jianshu.com/p/5e9c4871e8f8
关于docker容器中进程和systemd控制的进程
https://www.jianshu.com/p/52cb4c420a56