通过systemctl启停tomcat

目录

  • 目的
  • .service配置文件的结构介绍
  • 实验步骤
    • 1. 安装java
    • 2. 二进制安装tomcat
    • 3. 编写`/usr/systemd/system/tomcat.service`文件
    • 4. 测试
      • 启动
      • 关闭

目的

通过二进制安装的tomcat,只能通过tomcat文件目录下的.sh脚本进行启停。
而我们一般使用的服务,是通过systemd提供的systemctl进行服务启停。
systemd也是一个服务,它可以通过/usr/systemd/system/xxx.service进行二进制安装的服务的systemd启停。

具体的systemd服务可以查看官方文档,这里不过多赘述。

.service配置文件的结构介绍

# 查看nginx这个systemd启动配置文件
[root@front03 tools]# systemctl cat nginx
# /usr/lib/systemd/system/nginx.service
[Unit] # 指定注释信息,依赖(先后顺序)
Description=nginx - high performance web server # 说明与注释
Documentation=http://nginx.org/en/docs/ # 文档的路径
After=network-online.target remote-fs.target nss-lookup.target # 在指定的服务之后启动
Wants=network-online.target # 弱依赖关系,这个服务启动失败或停止运行,不影响nginx.service继续执行

[Service] # 用于指定服务开启命令,关闭命令,重启命令.
Type=forking # 指定类型 simple 或forking即可
PIDFile=/var/run/nginx.pid # 进程文件,不是必须的
ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf # systemctl start 时使用的命令
ExecReload=/bin/sh -c "/bin/kill -s HUP $(/bin/cat /var/run/nginx.pid)" # systemctl restart 时使用的命令
ExecStop=/bin/sh -c "/bin/kill -s TERM $(/bin/cat /var/run/nginx.pid)" # systemctl stop 时使用的命令

[Install] # 内容固定,用于指定运行级别
WantedBy=multi-user.target # 运行级别,一般都是多用户模式

# 以下忽略,内容同上
# /usr/lib/systemd/system/nginx.service.d/php-fpm.conf
[Unit]
Wants=php-fpm.service

以上,我们根据nginx.service的文件模板修改配置即可。

实验步骤

1. 安装java

二进制安装的化可以 到官网安装一个java.tar.gz
这里的版本是jdk-8u351-linux-x64.tar.gz

# 解压上传上来的文件包,解压文件指定路径到/app/tools
tar xf jdk-8u351-linux-x64.tar.gz -C /app/tools/

# 设置软连接,便于使用
ln -s /app/tools/jdk1.8.0_351/ /app/tools/jdk

# 添加环境变量
# 使用单引号是因为输入内容包含$变量,使用才可以正常输入
cat >> /etc/profile <<'EOF'
export JAVA_HOME=/app/tools/jdk
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
export CLASSPATH=.$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar
EOF

# 重新引用环境变量
source /etc/profile

# 测试,直接java而不是/app/tools/java
[root@front03 tools]# java -version
java version "1.8.0_351"
Java(TM) SE Runtime Environment (build 1.8.0_351-b10)
Java HotSpot(TM) 64-Bit Server VM (build 25.351-b10, mixed mode)

2. 二进制安装tomcat

通过官网下载tomcat.tar.gz的二进制包
我使用的是apache-tomcat-9.0.52.tar.gz

# 解压到指定目录
tar xf apache-tomcat-9.0.52.tar.gz -C /app/tools/

# 软连接
ln -s /app/tools/apache-tomcat-9.0.52 /app/tools/tomcat

# 测试
[root@front03 tools]# tomcat/bin/version.sh
Using CATALINA_BASE:   /app/tools/tomcat
Using CATALINA_HOME:   /app/tools/tomcat
Using CATALINA_TMPDIR: /app/tools/tomcat/temp
Using JRE_HOME:        /app/tools/jdk
Using CLASSPATH:       /app/tools/tomcat/bin/bootstrap.jar:/app/tools/tomcat/bin/tomcat-juli.jar
Using CATALINA_OPTS:
Server version: Apache Tomcat/9.0.52
Server built:   Jul 31 2021 04:12:17 UTC
Server number:  9.0.52.0
OS Name:        Linux
OS Version:     4.18.0-448.el8.x86_64
Architecture:   amd64
JVM Version:    1.8.0_351-b10
JVM Vendor:     Oracle Corporation

# 启动tomcat,查看进成
tomcat/bin/startup.sh

[root@front03 tools]# ss -tunlp | grep java
tcp   LISTEN 0      1      [::ffff:127.0.0.1]:8005             *:*    users:(("java",pid=2326,fd=65))                                                                                                                                           
tcp   LISTEN 0      100                     *:8080             *:*    users:(("java",pid=2326,fd=57))  

# 关闭tomcat
tomcat/bin/shutdown.sh

3. 编写/usr/systemd/system/tomcat.service文件

# 环境变量才文件中是不生效的,所以要写一个java的环境变量的文件用于给tomcat.service调用
cat /etc/sysconfig/tomcat
JAVA_HOME=/app/tools/jdk
PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
CLASSPATH=.$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar

# 编写tomcat.service文件
cat /usr/lib/systemd/system/tomcat.service
# /usr/lib/systemd/system/tomcat.service
[Unit]
Description=tomcat - java vm
After=network.target

[Service]
Type=forking
EnvironmentFile=/etc/sysconfig/tomcat
ExecStart=/app/tools/tomcat/bin/startup.sh
ExecReload=/app/tools/tomcat/bin/shutdown.sh && sleep 2 &&/app/tools/tomcat/bin/startup.sh
ExecStop=/app/tools/tomcat/bin/shutdown.sh

[Install]
WantedBy=multi-user.target

# 重新读取service文件,不然新的文件不会生效
systemctl daemon-reload

4. 测试

启动

[root@front03 tools]# systemctl start tomcat
[root@front03 tools]# ss -tunlp | grep java
tcp   LISTEN 0      1      [::ffff:127.0.0.1]:8005             *:*    users:(("java",pid=3463,fd=65))                                                                                                                                           
tcp   LISTEN 0      100                     *:8080             *:*    users:(("java",pid=3463,fd=57))   

在这里插入图片描述

关闭

[root@front03 tools]# systemctl stop tomcat
[root@front03 tools]# ss -tunlp | grep java

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/756091.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

kubuadm 方式部署 k8s 集群

准备三台机器 主机名IP地址CPU/内存角色K8S版本Docker版本k8s231192.168.99.2312C4Gmaster1.23.1720.10.24k8s232192.168.99.2322C4Gwoker1.23.1720.10.24k8s233192.168.99.2332C4Gwoker1.23.1720.10.24 需要在K8S集群各节点上面安装docker&#xff0c;如未安装则参考 …

探究互联网领域知识,解密数字化时代神秘面纱

随着信息时代的不断发展&#xff0c;互联网的发展呈现出爆炸式的增长&#xff0c;以至于引起广泛的关注和深入的探究。互联网作为一个庞大的网络体系&#xff0c;涵盖着无穷无尽的信息和知识&#xff0c;其背后的科技和应用已经改变了人们的生活&#xff0c;产生了翻天覆地的变…

使用java代码实现GUI画面的简易项目操作

要使用Java创建一个图形用户界面&#xff08;GUI&#xff09;&#xff0c;我们可以使用Swing库&#xff0c;它是Java提供的一个标准GUI工具包。以下是一个简单的Java Swing程序示例&#xff0c;它创建了一个窗口&#xff08;JFrame&#xff09;&#xff0c;并在其中添加了一个标…

Ubuntu系统,实现FastDDS的源码编译

目录 一、Ubuntu系统介绍二、FastDDS是什么三、FastDDS的源码编译四、FastDDS的简单测试 一、Ubuntu系统介绍 Ubuntu是一个基于Linux的开源操作系统&#xff0c;由Canonical公司开发和维护。它以其易用性、稳定性和安全性而受到广泛赞誉。Ubuntu系统提供了一个图形化的桌面环境…

深入解析链表:解锁数据结构核心奥秘

一. 链表的定义 链表是一种线性数据结构&#xff0c;由一系列节点组成。每个节点包含两个部分&#xff1a; 数据域&#xff08;Data&#xff09;&#xff1a;存储节点的数据。指针域&#xff08;Pointer&#xff09;&#xff1a;存储指向下一个节点的地址。 链表的第一个节点…

微信小程序开发_准备工作

1 注册小程序 注册地址 https://mp.weixin.qq.com/wxopen/waregister?actionstep1&sourcempregister&token&langzh_CN 2 完善小程序信息 进入微信公众平台https://mp.weixin.qq.com/,登录账号 登录后,在首页完善小程序信息和小程序类目 完成后在左侧找到开发…

权威认可 | Smartbi连续5年入选“Gartner增强数据分析代表厂商”

近日&#xff0c;全球权威技术研究与咨询公司Gartner最新发布《2024 年中国数据、分析和人工智能技术成熟度曲线》&#xff0c;Smartbi以其卓越的增强数据分析及自助分析能力&#xff0c;再次入选代表厂商&#xff0c;这也是Smartbi连续5年入选增强数据分析及自助分析代表厂商&…

优选算法2

五、位运算 常见位运算总结 &&#xff1a;有0就是0&#xff1b; |&#xff1a;有1就是1 ^&#xff1a;相同为0&#xff0c;相异就是1/无进位相加 给定一个数n,确定它的二进制表示中的第x位是0还是1&#xff1a;二进制中权值最小的是第0位&#xff0c;所以int整型是从第0位到…

os实训课程模拟考试(选择题复习)

目录 一、操作系统的基本功能和设计目标 &#xff08;1&#xff09;基础知识 &#xff08;2&#xff09;题目与答案 1、操作系统是一组 B &#xff08;单选&#xff09; 2、以下哪项不是操作系统关心的主要问题&#xff1f;D &#xff08;单选&#xff09; 3、下列关于…

基于Ansys workbench进行发动机风扇非定常流固耦合计算

添加图片注释&#xff0c;不超过 140 字&#xff08;可选&#xff09; 添加图片注释&#xff0c;不超过 140 字&#xff08;可选&#xff09; 添加图片注释&#xff0c;不超过 140 字&#xff08;可选&#xff09; 添加图片注释&#xff0c;不超过 140 字&#xff08;可选&…

MFC扩展库BCGControlBar Pro v35.0新版亮点 - 工具栏、菜单全新升级

BCGControlBar库拥有500多个经过全面设计、测试和充分记录的MFC扩展类。 我们的组件可以轻松地集成到您的应用程序中&#xff0c;并为您节省数百个开发和调试时间。 BCGControlBar专业版 v35.0已全新发布了&#xff0c;这个版本改进类Visual Studio 2022的视觉主题、增强对多个…

pytest中的极其重要固件(request)的理解

pytest 是一个非常流行的Python测试框架&#xff0c;它为开发人员提供了丰寴的测试工具和功能。 在pytest中&#xff0c;固件&#xff08;fixture&#xff09;是一种非常核心的概念&#xff0c;用于设置测试前的预条件&#xff0c;清理测试后的环境&#xff0c;或者提供测试过…

vxeTable反转表格

文章目录 前言 前言 如果遇到列为动态值&#xff0c;行相对固定的情况&#xff0c;这种时候就需要用到行列反转&#xff0c;这里我以vxeTable表格为例。 直接上代码 <vxe-gridref"tableRefRight":auto-resize"true":columns"dataColumn":dat…

springboot中使用springboot cache

前言&#xff1a;SpringBoot中使用Cache缓存可以提高对缓存的开发效率 此图片是SpringBootCache常用注解 Springboot Cache中常用注解 第一步&#xff1a;引入依赖 <!--缓存--><dependency><groupId>org.springframework.boot</groupId><artifactId…

【ai】trition:tritonclient yolov4:ubuntu18.04部署python client成功

X:\05_trition_yolov4_clients\01-python server代码在115上,client本想在windows上, 【ai】trition:tritonclient.utils.shared_memory 仅支持linux 看起来要分离。 【ai】tx2 nx:ubuntu18.04 yolov4-triton-tensorrt 成功部署server 运行 client代码远程部署在ubuntu18.0…

分布式锁及其实现与应用场景

分布式锁及其实现与应用场景 分布式锁是一种用于在分布式系统中协调多个进程或线程对共享资源进行访问的机制。它的主要目的是确保在同一时间只有一个进程或线程可以访问特定资源&#xff0c;从而避免数据竞争和不一致问题。分布式锁通常用于集群环境中&#xff0c;例如微服务…

二次封装 el-dialog 实现 全屏和最小化 功能

效果 封装后的组件 <template><el-dialog v-model"dialogVisible" :show-close"false" :fullscreen"fullscreen" draggable overflow><template #header"{ close }"><div><span style"font-weight: b…

Python operator模块这么用,效率杠杠的!

目录 1、基础操作符应用 🐍 1.1 加载operator模块 1.2 使用itemgetter进行排序 1.3 attrgetter与方法调用 2、高级功能探索 🔍 2.1 methodcaller的妙用 2.2 操作符重载与定制 3、结合lambda表达式 ✨ 3.1 lambda与operator模块协同工作 3.2 实战案例分析 4、结合…

nginx架构基本数据结构配置模块请求详解

nginx源码的目录结构&#xff1a; . ├── auto 自动检测系统环境以及编译相关的脚本 │ ├── cc 关于编译器相关的编译选项的检测脚本 │ ├── lib nginx编译所需要的一些库的检测脚本 │ ├── os 与平台相关的一些系统参…

【sqlmap命令学习及测试dvwa_SQL_Injection】

文章目录 1.sqlmap命令及 不同级别探索 能否注入命令option1.1 low等级1.2 Medium等级1. 3 High等级 2. 注入流程2.1 数据库2.2 指定数据库表名2.3 指定表的 字段名2.4 内容2.5 当前用户信息2.6 用户密码2.7 其他 1.sqlmap命令及 不同级别探索 能否注入 命令option sqlmap -u…