当前位置: 首页 > news >正文

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 sequence

       crontab -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的学习

参考&#xff1a;HanLP 自然语言处理使用总结-CSDN博客 参考&#xff1a;Sprint Boot 工程中HanLP配置相对路径&#xff0c;始终有问题的解决方案_springboot hanlp-CSDN博客 <!--hanlp 依赖--><dependency><groupId>com.hankcs</groupId><artifa…...

什么是库存周转?如何用进销存系统提高库存周转率?

你可能听说过这样一句话&#xff1a; “利润不是赚出来的&#xff0c;是管出来的。” 尤其是在制造业、批发零售、电商这类“货堆成山”的行业&#xff0c;很多企业看着销售不错&#xff0c;账上却没钱、利润也不见了&#xff0c;一翻库存才发现&#xff1a; 一堆卖不动的旧货…...

ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放

简介 前面两期文章我们介绍了I2S的读取和写入&#xff0c;一个是通过INMP441麦克风模块采集音频&#xff0c;一个是通过PCM5102A模块播放音频&#xff0c;那如果我们将两者结合起来&#xff0c;将麦克风采集到的音频通过PCM5102A播放&#xff0c;是不是就可以做一个扩音器了呢…...

uniapp微信小程序视频实时流+pc端预览方案

方案类型技术实现是否免费优点缺点适用场景延迟范围开发复杂度​WebSocket图片帧​定时拍照Base64传输✅ 完全免费无需服务器 纯前端实现高延迟高流量 帧率极低个人demo测试 超低频监控500ms-2s⭐⭐​RTMP推流​TRTC/即构SDK推流❌ 付费方案 &#xff08;部分有免费额度&#x…...

ip子接口配置及删除

配置永久生效的子接口&#xff0c;2个IP 都可以登录你这一台服务器。重启不失效。 永久的 [应用] vi /etc/sysconfig/network-scripts/ifcfg-eth0修改文件内内容 TYPE"Ethernet" BOOTPROTO"none" NAME"eth0" DEVICE"eth0" ONBOOT&q…...

Python 包管理器 uv 介绍

Python 包管理器 uv 全面介绍 uv 是由 Astral&#xff08;热门工具 Ruff 的开发者&#xff09;推出的下一代高性能 Python 包管理器和构建工具&#xff0c;用 Rust 编写。它旨在解决传统工具&#xff08;如 pip、virtualenv、pip-tools&#xff09;的性能瓶颈&#xff0c;同时…...

音视频——I2S 协议详解

I2S 协议详解 I2S (Inter-IC Sound) 协议是一种串行总线协议&#xff0c;专门用于在数字音频设备之间传输数字音频数据。它由飞利浦&#xff08;Philips&#xff09;公司开发&#xff0c;以其简单、高效和广泛的兼容性而闻名。 1. 信号线 I2S 协议通常使用三根或四根信号线&a…...

无人机侦测与反制技术的进展与应用

国家电网无人机侦测与反制技术的进展与应用 引言 随着无人机&#xff08;无人驾驶飞行器&#xff0c;UAV&#xff09;技术的快速发展&#xff0c;其在商业、娱乐和军事领域的广泛应用带来了新的安全挑战。特别是对于关键基础设施如电力系统&#xff0c;无人机的“黑飞”&…...

【Linux系统】Linux环境变量:系统配置的隐形指挥官

。# Linux系列 文章目录 前言一、环境变量的概念二、常见的环境变量三、环境变量特点及其相关指令3.1 环境变量的全局性3.2、环境变量的生命周期 四、环境变量的组织方式五、C语言对环境变量的操作5.1 设置环境变量&#xff1a;setenv5.2 删除环境变量:unsetenv5.3 遍历所有环境…...

华为OD机试-最短木板长度-二分法(A卷,100分)

此题是一个最大化最小值的典型例题&#xff0c; 因为搜索范围是有界的&#xff0c;上界最大木板长度补充的全部木料长度&#xff0c;下界最小木板长度&#xff1b; 即left0,right10^6; 我们可以设置一个候选值x(mid)&#xff0c;将木板的长度全部都补充到x&#xff0c;如果成功…...

python读取SQLite表个并生成pdf文件

代码用于创建含50列的SQLite数据库并插入500行随机浮点数据&#xff0c;随后读取数据&#xff0c;通过ReportLab生成横向PDF表格&#xff0c;包含格式化&#xff08;两位小数&#xff09;及表头、网格线等美观样式。 # 导入所需库 import sqlite3 # 用于操作…...