Debian 设定 tomcat 定时重启
目录
背景
过程记录
1、编辑sh文件,完成重启功能
2、设置sh的可执行权限
编辑
3、设置定时任务
背景
在Debian 12系统中,原本部署了两个tomcat,结果总是遇到CPU飙升到影响应用正常使用的程度,找了很久原因还是没有找到。 每次都是将服务重启之后才能正常使用,一直想做定时重启也由于没有时间弄。 这次趁着有空余时间,记录一下处理过程。
过程记录
1、编辑sh文件,完成重启功能
Debian 下可以通过nano工具实现文件编辑,在需要设定定时重启的tomcat的bin目录下执行命令:
sudo nano restart.sh
如果当前目录下没有该restart.sh会自动创建
该文件内容如下:
#!/bin/bash. /etc/profilecd /opt/tomcat/apache-tomcat-9.0.41/bin/sh shutdown.sh >output.txt 2>&1 && sh startup.sh >>output.txt 2>&1
. /etc/profile 命令用于确认环境变量
cd xxxx 跳转到当前需要重启的tomcat的bin目录
sh文件里的的 1、2 实际是 指的:
在 Linux 中有三个文件描述符,默认被系统所占用:
0 (Standard In 简写 stdin ):标准输入,通常来自键盘。
1 (Standard Out 简写 stdout):标准输出,通常指向终端窗口或屏幕。
2 (Standard Error 简写 stderr):标准错误输出,也通常指向终端窗口或屏幕,但专门用于显示错误信息。
> 与>>
> 和 >> 是用于重定向输出的符号,允许将命令的输出保存到文件中。区别在于:
>是覆盖重定向,将命令的输出重定向到指定的文件中,如果文件已经存在,则会覆盖原有内容;如果文件不存在,则会创建新文件。
>>是追加重定向,将命令的输出追加到指定文件的末尾,不会覆盖已有内容。如果文件不存在,则会创建新文件。
>只能将标准输出重定向(对于标准错误依然会显示在屏幕上)
>&: 这个指令实际是实现将标准输出或标准错误都重定向输出;
>&后面既可以识别文件,可以识别文件描述符。当
>&后面接文件时,表示将标准输出和标准错误输出重定向至文件。当
>&后面接文件描述符时,表示将前面的文件描述符重定向至后面的文件描述符。
例如,将标准错误文件描述符2重定向至标准输出文件描述符1:
2>&1 实际指的就是 将文件描述符2即标准错误输出重定向到文件描述符1即标准输出。。。。哈哈有点绕。。。
&& :表示表示前一条命令执行成功后,才执行后一条命令。
结合起来后面两句命令的意思就是:
sh shutdown.sh >output.txt 2>&1 && sh startup.sh >>output.txt 2>&1
表示执行shutdown.sh并将标准输出写入output.txt文件里,shutdown.sh执行成功之后再执行startup.sh并将标准输出追加到output.txt里,两个sh执行时均将标准错误输出重定向到文件描述符1即标准输出,再进行重定向到txt里。
先通过
2&>1将标准错误2输出重定向至标准输出1,再通过>将标准输出1重定向到为output.txt中,使得output.txt中也包含了标准错误信息。不然仅有>output.txt的话,我们无法将标准错误存入output.txt中,就无法根据这个日志去定位问题了
2、设置sh的可执行权限
linux下有严格的权限控制,sh文件要执行必须具有执行权限,由于前面我用sudo 创建的文件,所以文件的拥有者是root,也不具有执行权限,因此需要更改一下:
sudo chmod +x restart.sh 添加可执行权限
sudo chown XXX:XXX restart.sh 修改文件属主
3、设置定时任务
设置定时任务,可以通过linux系统提供的crontab命令来实现,该命令用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行。
通过man crontab可以查看英文版本命令介绍:
![]()
crontab 命令介绍如下:
NAME
crontab - maintain crontab files for individual users (Vixie Cron)SYNOPSIS
crontab [ -h]
crontab [ -u user ] [-n] file
crontab [ -u user ] [ -i ] { -e | -l | -r }DESCRIPTION
crontab is the program used to install, deinstall or list the tables used to drive the cron(8) daemon in Vixie Cron. Each user can have their own crontab, and though these are files in /var/spool/cron/crontabs, they are not in‐
tended to be edited directly.If the /etc/cron.allow file exists, then you must be listed (one user per line) therein in order to be allowed to use this command. If the /etc/cron.allow file does not exist but the /etc/cron.deny file does exist, then you must
not be listed in the /etc/cron.deny file in order to use this command.If neither of these files exists, then depending on site-dependent configuration parameters, only the super user will be allowed to use this command, or all users will be able to use this command.
If both files exist then /etc/cron.allow takes precedence. Which means that /etc/cron.deny is not considered and your user must be listed in /etc/cron.allow in order to be able to use the crontab.
Regardless of the existence of any of these files, the root administrative user is always allowed to setup a crontab. For standard Debian systems, all users may use this command.
If the -h option is given, crontab shows a help message and quits immediately.
If the -u option is given, it specifies the name of the user whose crontab is to be used (when listing) or modified (when editing). If this option is not given, crontab examines "your" crontab, i.e., the crontab of the person
executing the command. Note that su(8) can confuse crontab and that if you are running inside of su(8) you should always use the -u option for safety's sake.The first form of this command is used to install a new crontab from some named file or standard input if the pseudo-filename ``-'' is given.
If the -n option is given, it means "dry run": crontab examines "your" crontab for its syntax, and outputs a success message if this syntax is correct, but nothing is written to any crontab.
The -l option causes the current crontab to be displayed on standard output. See the note under DEBIAN SPECIFIC below.
The -r option causes the current crontab to be removed.
The -e option is used to edit the current crontab using the editor specified by the VISUAL or EDITOR environment variables. After you exit from the editor, the modified crontab will be installed automatically. If neither of the
environment variables is defined, then the default editor /usr/bin/editor is used.The -i option modifies the -r option to prompt the user for a 'y/Y' response before actually removing the crontab.
DEBIAN SPECIFIC
The "out-of-the-box" behaviour for crontab -l is to display the three line "DO NOT EDIT THIS FILE" header that is placed at the beginning of the crontab when it is installed. The problem is that it makes the sequencecrontab -l | crontab -
non-idempotent — you keep adding copies of the header. This causes pain to scripts that use sed to edit a crontab. Therefore, the default behaviour of the -l option has been changed to not output such header. You may obtain
the original behaviour by setting the environment variable CRONTAB_NOHEADER to 'N', which will cause the crontab -l command to emit the extraneous header.SEE ALSO
crontab(5), cron(8)
crontab对应的文件是:/etc/crontab,直接修改这个文件需要root权限。
crontab -e命令适用于所有用户,普通用户也能使用
命令如下:crontab -l 可以列举当前用户配置的定时任务情况

如上图,输入 crontab -u username -e回车之后出现提示选择编辑器,这里我选择nano,输入1:
之后进入nano编辑工具界面:

在这个界面 最后输入 如下内容:
0 0 * * * sh /opt/tomcat/apache-tomcat-9.0.41/bin/restart.sh
每个项中间用tab键隔开,从前到后分别表示
分、时、日、月、星期 、执行的命令,其取值范围如下:
第一列单位为分,表示每时第几分钟,范围为0-59;
第二列单位为时,表示每天第几小时,范围为0-23;
第三列单位为日,表示每月第几天,范围为1-31;
第四列单位为月,表示每年第几月,范围为1-12;
第五列单位为星期,表示每星期第几天,范围0-7,0与7表示星期日,其他分别为星期1-6;执行的命令路径必须写绝对路径,避免出错。
* 则表示任意值都满足条件
以上述命令为例,即表示每天的0点0分均会去执行sh文件
根据需要设定即可。
通过crontab -l 命令可以查询到 定时任务情况:

如图所示,分别在每天的15时30分以及35分去执行sh。
关于sh文件的执行命令写法:
使用相对路径执行:在当前目录下,可以使用./脚本名的方式执行脚本。例如,./helloworld.sh。如果脚本没有执行权限,可以使用sh 脚本名的方式执行,例如sh helloworld.sh。
使用绝对路径执行:也可以使用脚本的绝对路径来执行,例如/home/user/scripts/helloworld.sh。
设定了crontab 定时任务之后,需要确认服务是否启动。
网上很多资料说对应的服务名是crond,但是对于Debian系统不是,所以会有报错:

对于Debian系统,crontab对应的服务名为:cron
通过systemctl status cron就可以查询到服务状态。
上述步骤之后,重启cron服务,systemctl restart cron
![]()
经测试 发现是可以实现定时重启的。
相关文章:
Debian 设定 tomcat 定时重启
目录 背景 过程记录 1、编辑sh文件,完成重启功能 2、设置sh的可执行权限 编辑 3、设置定时任务 背景 在Debian 12系统中,原本部署了两个tomcat,结果总是遇到CPU飙升到影响应用正常使用的程度,找了很久原因还是没有找到。 …...
【QT】: 初识 QWidget 控件 | QWidget 核心属性(API) | qrc 文件
🔥 目录 1. 控件概述 控件体系的发展阶段 2. QWidget 核心属性 2.1 核心属性概览2.2 用件可用(Enabled) 2.3 坐标系(Geometry) **实例 1: 控制按钮的位置**实例 2: 表白 程序 2.4 窗口标题(windowTiltle&a…...
下载文件,浏览器阻止不安全下载
背景: 在项目开发中,遇到需要下载文件的情况,文件类型可能是图片、excell表、pdf、zip等文件类型,但浏览器会阻止不安全的下载链接。 效果展示: 下载文件的两种方式: 一、根据接口的相对url,拼…...
基于javaweb的SpringBoot景区旅游管理系统设计和实现(源码+文档+部署讲解)
个人名片 🔥 源码获取 | 毕设定制| 商务合作:《个人名片》 ⛺️心若有所向往,何惧道阻且长 文章目录 个人名片运行环境技术栈适用功能说明使用说明 运行环境 Java≥8、MySQL≥5.7 1.运行环境:最好是java jdk 1.8,我们在这个平台…...
【17】Word:林楚楠-供应链❗
目录 题目 NO1.2 NO3 NO4 NO5 NO6 NO7 NO89 题目 NO1.2 另存为:文件→另存为→文档→文件名/考生文件夹F12/FnF12→文件名/考生文件夹 插入→分节符→文本框→输入文件→排版_居中对齐→间距/回车去掉文本框的边框→选中文本框→格式:形状轮廓…...
Transformer中基于惊喜的遗忘机制
在语言建模任务上,拥有 760M 参数的 Titans(MAC) 在 WikiText 上达到了 19.93 的困惑度,显著优于同等规模的 Transformer++(25.21) 和 Mamba2(22.94)。在常识推理任务上,Titans 在包括 PIQA、HellaSwag、WinoGrande 等 9 个基准测试中的平均准确率达到 52.51%,超过了现…...
从玩具到工业控制--51单片机的跨界传奇【3】
在科技的浩瀚宇宙中,51 单片机就像一颗独特的星辰,散发着神秘而迷人的光芒。对于无数电子爱好者而言,点亮 51 单片机上的第一颗 LED 灯,不仅仅是一次简单的操作,更像是开启了一扇通往新世界的大门。这小小的 LED 灯&am…...
基于机器学习的用户健康风险分类及预测分析
完整源码项目包获取→点击文章末尾名片! 背景描述 在这个日益注重健康与体能的时代,健身已成为许多人追求健康生活的重要组成部分。 本数据集包含若干健身房会员的详细信息,包括年龄、性别、体重、身高、心率、锻炼类型、身体脂肪比例等多项关…...
CF 641A.Little Artem and Grasshopper(Java实现)
题目分析 蚂蚱会在n个房间中根据既定房间规则向固定方向跳跃固定长度,试问是否能够跳出这个长度(即落点位置在0或n1) 思路分析 输入n就有n个房间,n套规则(固定方向和跳跃距离),蚂蚱到哪个房间就…...
5 分钟复刻你的声音,一键实现 GPT-Sovits 模型部署
想象一下,只需简单几步操作,就能生成逼真的语音效果,无论是为客户服务还是为游戏角色配音,都能轻松实现。GPT-Sovits 模型,其高效的语音生成能力为实现自然、流畅的语音交互提供了强有力的技术支持。本文将详细介绍如何…...
1.Spring AI 从入门到实践
Spring AI 从入门到实践 1.什么是Spring AI 2.使用Spring Boot&Spring AI快速构建AI应用程序 3.ChatClient&Chat Model简化与AI模型的交互 4.Spring AI Prompt:与大模型进行有效沟通 5.结构化输出大模型响应 6.实战:AI聊天机器人 Ben技术站关注Java技术&#x…...
第23篇 基于ARM A9处理器用汇编语言实现中断<五>
Q:怎样修改HPS Timer 0定时器产生的中断周期? A:在上一期实验的基础上,可以修改按键中断服务程序,实现红色LED上的计数值递增的速率,主程序和其余代码文件不用修改。 实现以下功能:按下KEY0…...
攻防世界 unseping
开启场景 整体来说是创建了一个case类,然后可接受post传来的ctf的值,并对其进行base64解码以及反序列化。所以我们能控制ctf变量。 先看__wakeup方法,该方法使用waf方法对$arg中的内容进行了防护,过滤掉了| & ; 空格 / cat f…...
Python编程与在线医疗平台数据挖掘与数据应用交互性研究
一、引言 1.1 研究背景与意义 在互联网技术飞速发展的当下,在线医疗平台如雨后春笋般涌现,为人们的就医方式带来了重大变革。这些平台打破了传统医疗服务在时间和空间上的限制,使患者能够更加便捷地获取医疗资源。据相关报告显示,中国基于互联网的医疗保健行业已进入新的…...
浔川 AI 翻译已修复,可正常使用
浔川 AI 翻译已修复,可正常使用 亲爱的用户们: 大家好!经过技术团队的不懈努力,浔川 AI 翻译平台已完成修复,目前各项功能均已恢复正常,可流畅使用。在此,我们向一直以来关心和支持浔川 AI 翻译…...
apidoc thinkphp likeadmin 遇到解析报错
报错: [Semantical Error] The annotation "notes" in method app\adminapi\controller\article\ArticleCateController::lists() was never imported. Did you maybe forget to add a "use" statement for this annotation? 解决办法: config/apidoc…...
第22篇 基于ARM A9处理器用汇编语言实现中断<四>
Q:怎样编写ARM A9处理器汇编语言代码配置使用按键和定时器中断? A:本次实验同样为中断模式和监督模式都设置ARM A9堆栈指针,并使能中断,此外在主程序中调用子程序CONFIG_HPS_TIMER和CONFIG_KEYS分别对HPS Timer 0&…...
重回C语言之老兵重装上阵(六)枚举
1. 什么是枚举 (enum)? 枚举(enum)是 C 语言中的一种数据类型,用于定义一组具名的整数常量。它可以使代码更加可读,帮助程序员更容易理解程序中的常量值。通过枚举,程序员可以使用有意义的名称来代替数字&…...
STL-list类
list的介绍和使用 list的介绍 list的介绍list的介绍 list是双向循环链表 list的使用 构造 list(size_t n,const value_type& val value_type())构造的list中包含n个值为val的元素list()构造空listlis(const list& x)拷贝构造函数list(inputlerator first,inputlter…...
Hanlp的学习
参考:HanLP 自然语言处理使用总结-CSDN博客 参考:Sprint Boot 工程中HanLP配置相对路径,始终有问题的解决方案_springboot hanlp-CSDN博客 <!--hanlp 依赖--><dependency><groupId>com.hankcs</groupId><artifa…...
AI时代程序员职业发展与个人创业可行性研究报告
一、行业宏观变革(2026核心趋势数据佐证) 1.1 开发范式已彻底重构(行业不可逆拐点) 2026年正式进入AI Agent智能体开发时代,传统CRUD编码价值持续崩塌。 核心权威数据: Gartner预测:2026年75%企…...
告别C盘战士!ArcGIS 10.6安装路径选择与磁盘空间优化全攻略
告别C盘战士!ArcGIS 10.6安装路径选择与磁盘空间优化全攻略当GIS初学者第一次安装ArcGIS 10.6时,往往会被其庞大的安装体积所震惊。许多用户习惯性地点击"下一步",结果发现C盘空间被迅速吞噬,系统运行变得迟缓。本文将深…...
MySQL GROUP BY 原理与优化
我刚工作的时候,有次统计每个用户的订单总金额,写了 SELECT user_id, SUM(amount) FROM orders GROUP BY user_id,结果执行了 60 秒还没出结果。DBA 帮我一看执行计划,发现没走索引,导致 Using temporary(用…...
碧蓝航线自动化脚本终极指南:3小时学会全自动游戏管理
碧蓝航线自动化脚本终极指南:3小时学会全自动游戏管理 【免费下载链接】AzurLaneAutoScript Azur Lane bot (CN/EN/JP/TW) 碧蓝航线脚本 | 无缝委托科研,全自动大世界 项目地址: https://gitcode.com/gh_mirrors/az/AzurLaneAutoScript 还在为碧蓝…...
如何在浏览器中一键解密所有加密音乐文件:Unlock-Music完全指南
如何在浏览器中一键解密所有加密音乐文件:Unlock-Music完全指南 【免费下载链接】unlock-music 在浏览器中解锁加密的音乐文件。原仓库: 1. https://github.com/unlock-music/unlock-music ;2. https://git.unlock-music.dev/um/web 项目地…...
SpeakingURL版本升级指南:从旧版本迁移到最新版本的完整教程
SpeakingURL版本升级指南:从旧版本迁移到最新版本的完整教程 【免费下载链接】speakingurl Generate a slug – transliteration with a lot of options 项目地址: https://gitcode.com/gh_mirrors/sp/speakingurl SpeakingURL是一款强大的URL友好化工具&…...
Jetson Orin上TVA模型DLA精准卸载配置
重磅预告:本专栏将独家连载系列丛书《智能体视觉技术与应用》部分精华内容,该书是世界首套系统阐述“因式智能体”视觉理论与实践的专著,特邀美国 TypeOne 公司首席科学家、斯坦福大学博士 Bohan 担任技术顾问。Bohan先生师从美国三院院士、“…...
手机也能玩转无人机仿真:用安卓QGC App连接同一WiFi下的PX4 JMAVSim模拟器
手机也能玩转无人机仿真:用安卓QGC App连接同一WiFi下的PX4 JMAVSim模拟器 无人机开发者和爱好者们,是否曾想过用手机就能完成整个无人机仿真测试流程?告别笨重的电脑束缚,只需一部安卓设备,就能在沙发上调试飞控算法。…...
Python-for-Android 完整指南:5分钟将Python应用打包为Android APK
Python-for-Android 完整指南:5分钟将Python应用打包为Android APK 【免费下载链接】python-for-android Turn your Python application into an Android APK 项目地址: https://gitcode.com/gh_mirrors/py/python-for-android Python-for-Android࿰…...
taotoken用量看板如何帮助团队精细化管理api调用成本
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 taotoken用量看板如何帮助团队精细化管理api调用成本 对于团队管理者而言,将大模型能力集成到产品开发或业务流程中&am…...

