Linux服务器上如何终止所有Tomcat服务?

在Linux服务器上终止所有Tomcat服务,可以通过以下几种方式实现。根据不同场景,选择最适合的方法:

图片

一、优雅终止(推荐)

1. 使用Tomcat自带脚本(需正常运行)
# 进入Tomcat bin目录
cd /path/to/tomcat/bin

# 执行关闭脚本(自动检测端口)
./shutdown.sh

# 验证是否停止
ps -ef | grep tomcat
2. 指定端口关闭(适用于自定义端口)
# 若修改过关闭端口(如9005)
./shutdown.sh -port 9005

二、强制终止(快速但可能丢失数据)

1. 通过进程名终止所有Java进程(慎用)
# 查找所有Java进程(可能包含非Tomcat进程)
ps -ef | grep java

# 终止所有Java进程(危险!请确认)
pkill -9 java
2. 精确终止Tomcat进程
# 查找Tomcat相关进程(基于关键字匹配)
ps -ef | grep tomcat | grep -v grep

# 提取PID并逐个终止
ps -ef | grep tomcat | grep -v grep | awk '{print $2}' | xargs kill -9

三、通过端口终止(适用于端口占用场景)

1. 终止占用特定端口的进程(如8080/443/8005)
# 查找占用8080端口的进程
lsof -i :8080

# 提取PID并终止
PID=$(lsof -t -i :8080)
if [ -n "$PID" ]; then
    kill -9 $PID
    echo "已终止进程 $PID"
else
    echo "端口8080未被占用"
fi
2. 批量终止多个端口的进程
# 终止8080、443、8005端口的所有进程
for port in 8080 443 8005; do
    PID=$(lsof -t -i :$port)
    if [ -n "$PID" ]; then
        kill -9 $PID
        echo "已终止端口 $port 的进程 $PID"
    fi
done

四、验证终止结果

# 检查是否还有Tomcat进程
ps -ef | grep tomcat | grep -v grep

# 检查端口是否释放
netstat -tuln | grep -E '8080|443|8005'

五、预防残留进程的最佳实践

  1. 规范启动/关闭流程

    # 启动:使用catalina.sh run查看实时日志
    bin/catalina.sh run
    
    # 关闭:使用shutdown.sh并验证状态
    bin/shutdown.sh && sleep 5 && ps -ef | grep tomcat
    
  2. 创建监控脚本

    # check_tomcat.sh
    #!/bin/bash
    if ps -ef | grep tomcat | grep -v grep > /dev/null; then
        echo "Tomcat正在运行"
    else
        echo "Tomcat未运行"
    fi
    
  3. 使用systemd管理Tomcat(推荐)

    # 创建服务文件
    sudo vim /etc/systemd/system/tomcat.service
    
    # 添加以下内容(根据实际路径修改)
    [Unit]
    Description=Apache Tomcat Web Application Container
    After=network.target
    
    [Service]
    Type=forking
    
    Environment=JAVA_HOME=/usr/lib/jvm/java-11-openjdk
    Environment=CATALINA_PID=/opt/tomcat/temp/tomcat.pid
    Environment=CATALINA_HOME=/opt/tomcat
    Environment=CATALINA_BASE=/opt/tomcat
    
    ExecStart=/opt/tomcat/bin/startup.sh
    ExecStop=/opt/tomcat/bin/shutdown.sh
    
    User=tomcat
    Group=tomcat
    UMASK=0007
    RestartSec=10
    Restart=always
    
    [Install]
    WantedBy=multi-user.target
    
    # 启用并管理服务
    sudo systemctl daemon-reload
    sudo systemctl enable tomcat
    sudo systemctl start tomcat
    sudo systemctl stop tomcat
    

根据你的场景选择合适的方法,建议优先使用systemd或优雅关闭方式,避免数据丢失和资源泄漏。

tomcat官网

https://tomcat.apache.org/
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

前端组件开发

你的钟意将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值