通过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

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《数字图像处理》实验报告四

一、实验任务与要求 对 Fig0403.tif 进行傅里叶变换并显示其频谱图像&#xff1b;fft2(x) 对 Fig0405.tif 图像进行填充和非填充的高斯滤波&#xff0c;并观察其不同&#xff1b;paddedsize&#xff0c;fft2&#xff08;x,m,n&#xff09; 由 sobel 空间滤波算子生成相应的频率…

多链代币开发:打造跨链互操作性的新纪元

随着区块链技术的迅猛发展&#xff0c;数字资产和加密货币市场也在不断扩大。各大区块链平台如以太坊、币安智能链、波卡、Solana等&#xff0c;均展现出其独特的优势和广泛的应用场景。然而&#xff0c;这些链之间的孤立性和互操作性问题&#xff0c;限制了数字资产的流动性和…

突破架构瓶颈:克服软件系统中的漂移和侵蚀

一种常见但不完美的比喻是将软件系统中的架构漂移和侵蚀与物理建筑的架构相比。虽然这个比喻很直观&#xff0c;但它存在一个根本性的误解&#xff0c;这也常常引发软件开发中的架构问题。 试想一下&#xff0c;一个设计良好的摩天大楼或房屋建成后&#xff0c;我们期望它基本保…

Linux下的信号使用总结

主要参考《【正点原子】I.MX6U嵌入式Linux C应用编程指南V1.4》信号篇 发送给进程的诸多信号中&#xff0c;大多数都是来自于内核。 信号本质上是 int 类型的数字编号&#xff0c;这就好比硬件中断所对应的中断号。内核针对每个信号&#xff0c;都给其定义了一个唯一的整数编号…

docker 容器设置中文环境

1.容器中安装和设置 1.1.进入容器查看已有语言包 locale -a 默认情况下&#xff1a; 1.2 安装中文语言环境 如果没有zh_CN.utf8就安装。 方式1&#xff1a; #直接安装中文语言包 apt-get install -y language-pack-zh-hans 方式2&#xff1a; #安装中文语言环境 apt-g…

线性和二次判别分析

线性判别分析 线性判别分析&#xff08;Linear Discriminant Analysis&#xff0c;LDA&#xff09;亦称 Fisher 判别分析。其基本思想是&#xff1a;将训练样本投影到低维超平面上&#xff0c;使得同类的样例尽可能近&#xff0c;不同类的样例尽可能远。在对新样本进行分类时&…

达梦数据库的系统视图v$lock

达梦数据库的系统视图v$lock 在达梦数据库&#xff08;DM&#xff09;中&#xff0c;V$LOCK 系统视图用于查看当前数据库中的锁定状态。该视图提供了关于所有锁定详细信息&#xff0c;例如锁的内存地址、所属事务 ID&#xff0c;锁类型和锁模式等。这对于数据库管理员进行锁定…

国产数据库 - 内核特性 - CloudberryDB中的Runtime Filter

国产数据库 - 内核特性 - CloudberryDB中的Runtime Filter 今年5月份GreenPlum官方将GitHub仓库代码全部删除&#xff0c;各个分支的issues和bugs讨论等信息全部清除&#xff0c;仅将master分支代码进行归档。对于国内应用GPDB的用户来说&#xff0c;这是一个挑战性事件&#x…

开发网页版加密访问文档

开发一个支持加密访问文档的网页版应用程序涉及多个步骤&#xff0c;包括用户认证、文档加密和解密、文件上传和下载&#xff0c;以及确保整个过程中的数据安全性。下面是一个详细的步骤指南&#xff1a; 步骤1&#xff1a;设置项目环境 首先&#xff0c;设置一个新的项目环境…

函数调用,递归技巧之取反

递归指的是在解决问题的过程中&#xff0c;将问题分解为同类的子问题而解决问题的方法。在程序中通常体现为函数调用自身的方式。 比如是双方回合制对战的游戏进行结算&#xff0c;可以使用一个变量bool类型来完成一回合双方互相战斗并且攻击方同时会作为受攻击方的结算。在递归…

Vue跨标签页数据通信

跨标签页数据通信 在同一浏览器项目地址处于不同的标签页中,建立两个页面间的数据通信&#xff0c;即&#xff1a;B页面新增/修改数据;A页面表格自动更新数据 跨标签页通信常见方案: BroadCast Channel (广播频道) Service Worker LocalStorage Window.onstorage监听 Shared…

English note 1

It was right that I decided not to buy new course before. A few days ago, the after-sales staff of this software announced that all the courses of this software would be taken down. 之前决定不继续买新的课程是对的。几天前&#xff0c;这个软件的售后人员就宣布…

Zookeeper 三、Zookeeper基本使用

1.Zookeeper系统模型 1&#xff09;Zookeeper数据模型之ZNode 在Zookeeper中&#xff0c;数据信息被保存在一个个数据节点上&#xff0c;这些节点被称为ZNode。ZNode是Zookeeper中最小数据单位&#xff0c;在ZNode下面又可以再挂ZNode&#xff0c;这样一层层下去就形成了一个…

Reactor模型:网络线程模型演进

一&#xff0c;阻塞IO线程池模型&#xff08;BIO&#xff09; 这是传统的网络编程方案所采用的线程模型。 即有一个主循环&#xff0c;socket.accept阻塞等待&#xff0c;当建立连接后&#xff0c;创建新的线程/从线程池中取一个&#xff0c;把该socket连接交由新线程全权处理。…

【机器参数】安装适合的nvidia驱动

背景&#xff1a;我现在nvidia-smi没有显示&#xff0c;我的目标是让nvidia-smi正常显示 参考&#xff1a; nchttps://www.cnblogs.com/carle-09/p/11504544.html 可能是驱动版本不对&#xff0c;所以我重新去nvidia官网下载了驱动。 Official Drivers | NVIDIA 得到了NVID…

discuz迪恩cul!教育课程培训网站模板

Discuz x3.2模板 迪恩cul!教育课程培训 GBK&#xff0c;程序包中内附详细的安装教程&#xff0c;下载后按照教程安装即可 discuz迪恩cul!教育课程培训网站模板

如何将本地的Django项目部署到阿里云服务器上?

场景&#xff1a;在本地的pycharm上已经写好了一个Django架构的网站&#xff0c;现在要把它放到公网上 一、阿里云服务器 选择云服务器ECS&#xff0c;新用户可以免费使用三个月 购买时选择预装宝塔面板 买好后&#xff0c;进入云服务器控制台 重置实例密码 远程连接至服务…

python-17-零基础自学python-

学习内容&#xff1a;《python编程&#xff1a;从入门到实践》第二版 知识点&#xff1a; 类、子类、继承、调用函数 练习内容&#xff1a; 练习9-6&#xff1a;冰激凌小店 冰激凌小店是一种特殊的餐馆。编写一个名为IceCreamStand的类&#xff0c;让它继承为完成练习9-1或…

宝塔计划任务调用node程序时,log4js日志保存本地位置会发生变化

接我上一篇文章的情况 超简单的nodejs使用log4js保存日志到本地&#xff08;可直接复制使用&#xff09;-CSDN博客 原本应当保存在node项目目录下的日志文件&#xff0c;如果使用宝塔的计划任务来定时执行的话&#xff0c;日志保存路径会发生变化到如下图的位置&#xff1a; 如…

六款顶级原型设计工具推荐,满足你所有需求!

即时设计作为一款专业原型工具&#xff0c;无论是从功能还是插件库配备情况来看&#xff0c;都是毫无疑问可以进行原型图设计的&#xff0c;而且&#xff0c;即时设计内设海量资源库&#xff0c;可以支持大家通过关键词进行搜索相关资源&#xff0c;并且在线编辑使用&#xff0…