【TongWeb8】使用 Crontab 定时重启和检测 TongWeb 服务

在生产环境中,有些应用可能存在长期运行后资源占用增加、连接异常、服务响应变慢等情况。

除了人工定期重启,也可以通过Linux 自带的 crontab 定时任务,实现 TongWeb 自动重启。

同时,为了避免重启失败后无人发现,可以在脚本中增加启动检测和失败重试机制。

一、使用 systemctl 管理 TongWeb

前提是已经将 TongWeb 配置成 systemd 服务,如果不了解,可以看一下我的这篇文章 👉👉👉使用 systemctl 管理 TongWeb 启停

例如:

复制代码
systemctl start tongweb

systemctl stop tongweb

systemctl restart tongweb

systemctl status tongweb

后续定时任务直接调用:

复制代码
systemctl restart tongweb

即可。

二、配置 Crontab 定时任务

编辑定时任务:

复制代码
crontab -e

1. 正式环境定时重启

例如每周六凌晨 3 点重启 TongWeb:

复制代码
0 3 * * 6 /home/chenyanliang/dft/tongweb/restart_tongweb.sh

说明:

复制代码
0      分钟
3      小时
*      日期
*      月份
6      星期六

表示:

每周六凌晨 03:00 执行一次 TongWeb 重启脚本。

2. 测试环境验证

为了验证脚本是否生效,可以设置每分钟执行一次:

复制代码
* * * * * /home/chenyanliang/dft/tongweb/restart_tongweb.sh

测试完成后,需要恢复正式时间配置,避免生产环境频繁重启。

三、TongWeb 定时重启脚本

示例:

复制代码
#!/bin/bash

LOG_DIR="/home/chenyanliang/dft/tongweb/logs"
LOG_FILE="${LOG_DIR}/cron_restart.log"

ADMIN_PORT=9060

RETRY_MAX=3

SLEEP_CHECK=10


mkdir -p ${LOG_DIR}


print_log() {
    echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" >> ${LOG_FILE}
}


print_log "===== 开始执行TongWeb定时重启 ====="


systemctl restart tongweb

print_log "已执行TongWeb重启,等待${SLEEP_CHECK}s检测服务"


retry_count=0

while [ ${retry_count} -lt ${RETRY_MAX} ]
do

    sleep ${SLEEP_CHECK}

    if ss -tln | grep ":${ADMIN_PORT}" > /dev/null 2>&1
    then
        print_log "检测成功:${ADMIN_PORT}端口正常监听,TongWeb启动完成"
        exit 0
    fi


    retry_count=$((retry_count + 1))

    print_log "第${retry_count}次检测失败,端口未监听,重新执行重启"

    systemctl restart tongweb

done


print_log "严重故障:连续${RETRY_MAX}次重启后服务仍未恢复"

exit 1

四、脚本执行流程

整个流程如下:

  1. 到达定时时间,crontab 调用脚本。

  2. 执行:

    systemctl restart tongweb

重启 TongWeb。

  1. 等待服务启动。

  2. 检测 TongWeb 管理端口:

    ss -tln | grep :9060

确认服务是否监听。

  1. 如果启动失败:
  • 自动再次执行重启。
  • 最大重试 3 次。
  • 记录失败日志。

五、查看定时任务执行情况

查看当前用户定时任务:

复制代码
crontab -l

查看 cron 执行日志:

Ubuntu:

复制代码
grep CRON /var/log/syslog

CentOS:

复制代码
grep CRON /var/log/cron

查看 TongWeb 重启日志:

复制代码
cat /home/chenyanliang/dft/tongweb/logs/cron_restart.log

相关推荐
工具派13 分钟前
Agent 不是玄学:用 Java 状态机思维理解 LangGraph
java·人工智能·python
十年Java程序媛23 分钟前
String / StringBuilder / StringBuffer|别再乱用字符串拼接,底层原理一次讲透
java·spring boot·后端
傲世仙尊24 分钟前
类和对象中-构造函数与析构函数把初始化清理自动化
java·运维·自动化
她的男孩26 分钟前
权限通了、列表有数,一点分页就炸Forge Admin 用 COUNT(1) 扛住复杂待办
java·spring boot·mybatis
骑着蜗牛撵大象32733 分钟前
豆包 Seed 驱动的记账智能体:从拍票抽取到月报生成的全链路落地记录
java·前端·javascript·结构化输出·豆包seed·多模态识别·记账系统
憧憬成为java架构高手的小白42 分钟前
langchain4j手敲理解
java·langchain
10mAh1 小时前
【Java】ArrayList 遍历删除为什么报错?三种写法与漏删复现
java·开发语言·windows
thefool1122662 小时前
多线程 4
java
Rain的Java大神之路2 小时前
[特殊字符]8年Java老兵转型AI Agent:90%的人挂在同一个坑,根本不用学Python!(万字实战复盘,建议收藏)
java·数据库·人工智能·后端·python·spring·ai编程
高级程序源2 小时前
springboot大学生体测系统72170-计算机课程设计、毕业设计
java·vue.js·spring boot·后端·python·django·课程设计