• 首页

  • 归档

  • 标签

  • 分类

  • 友链
M S B l o g
M S B l o g

ms

获取中...

06
27
总结
教程

使用systemctl创建tomcat服务

发表于 2022-06-27 • 总结 linux tomcat • 被 2,464 人看爆

systemd 是一种init的进化产品,大部分Linux发行版本都支持。
systemd 配置自启动时配置文件在usr/lib/systemd/system/ 文件夹下。
systemctl 为管理 systemd的工具。

一,使用systemctl配置tomcat

  1. 创建启动脚本

vim /usr/lib/systemd/system/tomcat.service

[Unit]
Description=tomcat
After=network.target

[Service]
Type=forking
ExecStart=/usr/local/apache-tomcat-9.0.34/bin/startup.sh
ExecReload=
ExecStop=/usr/local/apache-tomcat-9.0.34/bin/shutdown.sh
PrivateTmp=true

[Install]
WantedBy=multi-user.target
  1. 加载启动脚本

systemctl daemon-reload

  1. 查看系统文件是否被识别

systemctl list-unit-file --type=service | grep tomcat

  1. 设置开机自启

systemctl enable tomcat

  1. 常用操作

启动tomcat: systemctl start tomcat
关闭tomcat:systemctl stop tomcat
重启tomcat: systemctl restart tomcat
查看tomcat状态: systemctl status tomcat
  1. 查看服务日志

journalctl -xe

查看指定服务日志

journalctl -flu tomcat

二,可能遇到的错误

报错 control process exited code-exited status=203

解决方法:

  • ExecStart参数指定启动脚本路径不对,会提示203错误,可以将ExecStart,ExecReload,ExecStop的路径都拿出来执行下,保证路径没有写错
  • 启动程序脚本(.sh文件)中未指定脚本解析器,会提示203错误,在文件开头添加:#!/bin/sh
  • 启动程序脚本(.sh文件)没有执行权限,会提示203错误,chmod +x myapp.sh
  • 如果启动脚本添加#!/bin/sh不生效,可以换成#!/bin/bash,或者在创建的tomca.service指定,如:

ExecStart=/bin/bash /usr/local/apache-tomcat-9.0.34/bin/startup.sh

三,启动脚本xx.service详解

[Unit]
Description= a sample thing

[Service]
type=simple
Restart=on-failure
ExecStart=/home/ubuntu/mimc-fast-aarch64

[Install]
WantedBy=multi-user.target

1. [Unit]

定义启动的顺序以及依赖的关系

可选项描述
Description主要是填写一些信息,用于当前服务的简单描述
Documentation可以用来指定文档的位置,用于当前服务文档查询
After可以指定在哪些服务之后进行启动
Before可以指定在哪些服务之前进行启动
Wants可以指定服务依赖于哪些服务(这种依赖是"弱依赖",即使所依赖的服务的启动情况不影响当前的服务是否启动)
Requires可以指定服务依赖于哪些服务(这种依赖是"强依赖",一旦所依赖的服务异常,当前的服务也随之停止)

2. [Service]

定义启动、关闭和重启服务等操作时的方式

可选项描述
EnvironmentFile用来指定当前服务启动的环境变量 以路径的形式在文件中用key=value 的形式写入 读取时可以使用$key来读取
ExecStart指定服务启动时执行的命令
ExecStop指定服务停止时执行的命令
ExecReload指定服务重启时执行的命令
ExecStartPre指定服务启动之前执行的命令
ExecStartPost指定服务启动之后执行的命令
ExecStopPost指定服务停止之后执行的命令
RestartSec指定服务在重启前等待的时间(单位为 “秒”)
Type指定启动类型:见下方Type
Restart指定重启时的类型:见下方Restart
KillMode指定停止的方式:见下方KillMode
PrivateTmp是否使用私有的tmp目录
  • [Type]

可选项描述
simple指定ExecStart字段的进程为主进程
forking指定以fork() 子进程执行ExecStart字段的进程
oneshot执行一次
notify启动后发送会发送通知信号通知systemd
idle等其他任务结束后才运行
  • [Restart]

可选项描述
no退出后不会重启
on-success当进程正常退出时(退出码为0) 执行重启
on-failure当进程不正常退出时(退出码不为0) 执行重启
on-abnormal当被信号终止和超时执行重启
on-abort当收到没有捕捉到的信号终止时执行重启
on-watchdog当看门狗超时时执行重启
always一直重启
  • [KillMode]

可选项描述
control-group杀掉当前进程中所有的进程
process杀掉当前进程的主进程
mixed主进程将收到 SIGTERM 信号,子进程收到 SIGKILL 信号
none不杀掉任何进程

3. [Install]

定义安装配置文件(开机自启动必备)

可选项描述
WantedBy表示该服务所在的 Target(一般写 multi-user.target)
分享到:
sql中不要用关键字作为表名或字段
  • 文章目录
  • 站点概览
ms

MSms

⚓️HelloWorld⚓️

QQ Email RSS
看爆 Top5
  • MyBatis-Plus分页查询 5,937次看爆
  • @Autowired与@Resource的区别 4,755次看爆
  • feign远程调用及异步调用丢失请求头问题 4,526次看爆
  • spring cloud中OpenFeign整合Sentinel启动报错 4,423次看爆
  • Certbot查看证书过期时间,手动续期以及自动续期 3,302次看爆

Copyright © 2025 ms · 湘ICP备20015239号

Proudly published with Halo · Theme by fyang · 站点地图