当前位置: 首页 > 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…...

Excel中函数SIGN()的用法

Excel中函数SIGN的用法 1. 函数详细讲解1.1 函数解释1.2 使用格式1.3 参数定义1.4 要点 2. 实用演示示例2.1 函数需求2.2 公式编写 3. 注意事项4. 文档下载5. 其他文章6. 获取全部Excel练习素材快来试试吧&#x1f970; 函数练习素材&#x1f448;点击即可进行下载操作操作注意…...

如何将本地电脑上的文件夹设置为和服务器的共享文件夹

将本地电脑上的文件夹设为与服务器共享的文件夹&#xff0c;通常是在本地开启文件共享&#xff0c;并配置相应的权限&#xff0c;使服务器可以访问该文件夹。以下以 Windows 系统为例说明具体操作步骤&#xff1a; 一、在本地电脑上设置共享文件夹 选择文件夹 找到需要共享的文…...

智能建筑时代的核心选择——基于SAIL-RK3576核心板的AI边缘计算网关方案

随着智能建筑技术的不断发展&#xff0c;建筑设备正日益向“智慧化”迈进。传统的建筑管理系统往往依赖中央服务器和云端平台进行数据处理和控制&#xff0c;但在实时监控、安防及能耗管理等关键环节&#xff0c;延迟和数据安全问题依然存在。此外&#xff0c;物联网设备数量激…...

08、如何预防SQL注入

目录 1、分析及其存在哪些危险 2、预防SQL注入 1、分析及其存在哪些危险 原理: SQL 注入是一种常见的网络攻击手段,攻击者通过在用户输入中插入恶意的 SQL 语句,利用程序对用户输入处理不当的漏洞,使恶意 SQL 语句被数据库服务器执行。 通常发生在应用程序将用户输入直接拼…...

【时时三省】(C语言基础)柔性数组

山不在高&#xff0c;有仙则名。水不在深&#xff0c;有龙则灵。 ----CSDN 时时三省 柔性数组 C99中&#xff0c;结构中的最后一个元素允许是未知大小的数组&#xff0c;这就叫做 柔性数组 成员。 例如&#xff1a; 这里把arr就称为柔性数组 有的编译器上是写成int arr&…...

mongodb详解二:基础操作

基础操作 数据库操作collection操作查看表插入数据查找数据 数据库操作 1.创建数据库 use test_db;如果没有数据库&#xff0c;use命令会新建一个&#xff1b;有的话&#xff0c;会切换到这个数据库 2.查看数据库 show dbs;collection操作 查看表 show tables;插入数据 …...

【数据分享】1929-2024年全球站点的逐月平均气温数据(Shp\Excel\免费获取)

气象数据是在各项研究中都经常使用的数据&#xff0c;气象指标包括气温、风速、降水、湿度等指标&#xff0c;其中又以气温指标最为常用&#xff01;说到气温数据&#xff0c;最详细的气温数据是具体到气象监测站点的气温数据&#xff01;本次我们为大家带来的就是具体到气象监…...

管理口令安全和资源(一)

学习目标 Manage passwords using profiles: 使用配置文件&#xff08;profiles&#xff09;来管理密码。这意味着你应该能够设置和修改密码策略&#xff0c;比如密码的复杂性、有效期、尝试次数限制等。在Oracle数据库中&#xff0c;配置文件是一组可以应用于所有用户的预定义…...

【Linux】【Vim】vim编辑器的用法

一、vim简介 Vim是一款功能强大且高度可定制的文本编辑器&#xff0c;广泛应用于Linux 和 Unix系统中。 它不仅继承了vi编辑器的所有特性&#xff0c;还增加了许多新的功能&#xff0c;如语法高亮、代码折叠、多级撤销等。 Vim有三种主要的工作模式&#xff1a; 命令模式&am…...

Golang Gin系列-3:Gin Framework的项目结构

在Gin教程的第3篇&#xff0c;我们将讨论如何设置你的项目。这不仅仅是把文件扔得到处都是&#xff0c;而是要对所有东西的位置做出明智的选择。相信我&#xff0c;这些东西很重要。如果你做得对&#xff0c;你的项目会更容易处理。当你以后不再为了找东西或添加新功能而绞尽脑…...