Linux计划任务管理

之前已经学习了一些Linux的基础知识和关机方式与文件系统简介,今天来学习下Linux下的计划任务,因为这个功能自己搭建服务器还是用得上的,比如定期清理垃圾缓存、定期备份数据库和网站等等。

系统环境:Centos8

一、什么是计划任务

类似于windows的计划任务,Linux上也有对应的功能。比如在今天下午18:00执行关机操作,或者在每天00:00进行数据库备份任务。

二、LiNux下的计划任务

Linux下计划任务分两类:

  • 突发性的,只执行一次的任务
  • 例行性的,每隔一定时间执行的

三、atd仅运行一次的计划任务

使用at命令执行单一任务,看名字就大概知道这个命令的作用是在指定时间进行操作。

要使用at命令需要先启动atd这个服务,默认我这里是没有启用的。

# 查看服务运行情况
systemctl status atd# 如果没有启动则手动运行,running则表示运行了服务了
systemctl start atd● atd.service - Job spooling toolsLoaded: loaded (/usr/lib/systemd/system/atd.service; enabled; vendor preset: enabled)Active: active (running) since Thu 2023-10-05 11:16:03 CST; 3 months 5 days agoMain PID: 1191 (atd)Tasks: 1 (limit: 49140)Memory: 428.0KCGroup: /system.slice/atd.service└─1191 /usr/sbin/atd -f10月 05 11:16:03 localhost.localdomain systemd[1]: Started Job spooling tools.

at的使用方式: at [-mldv] TIME 参数说明:

  • -m 完成后发送邮件通知用户,前提是安装好邮件客户端并且配置正确的账号密码
  • -l 查看当前的任务与用户
  • -d 取消任务
  • -v 指定显示的时间格式

TIME 时间格式:

  • HH:MM :几点几分,12:00
  • HH:MM YYYY-MM-DD :具体日期的具体时间 ,13:00 2024-01-12
  • HH:MM[am|pm] [Month] [Date] 指定日期的时间,"04:30pm Mar 15"
  • HH:MM[am|pm] + number [minutes|hours|days|weeks], 08:30am + 30 minutes

执行步骤:

  • 1、执行 at [-mldv] TIME 然后进入shell模式
  • 2、在shell模式下定义要执行的任务
  • 3、通过快捷键 Ctrl + D保存并退出编辑模式
[root@localhost ~]# at now + 5minutes      # 指定在5分钟后执行
warning: commands will be executed using /bin/sh  # 默认在/bin/sh环境下执行
at> mkdir /root/123.txt                           # 可以输入多行命令操作
at> <EOT>                                         # 快捷键Ctrl + D退出
job 7 at Thu Jan 11 10:34:00 2024

查看当前任务:at -l,每个任务有一个序号,后面删除任务通过序号删除即可。

[root@localhost ~]# at -l
7       Thu Jan 11 10:34:00 2024 a root

删除任务:at -d number,通过序号删除任务

[root@localhost ~]# at -d 7
[root@localhost ~]# at -l
[root@localhost ~]# 

简单说就是确定在具体的时间执行多个任务,通过at -l查看任务,通过at -d删除任务。需要注意的是建议配置好服务器的时间准确,参考之前的NTP时间服务器配置。

四、crond循环执行的计划任务

at适合于在指定的时间执行一次,但是有时候我们需要定期执行如备份数据库或者备份网站等定期计划任务,这时需要通过crontab来进行。

查看服务状态systemctl status crond,只有状态为running才是正常运行状态。

# 查看服务状态
systemctl status crond# 手动启动服务,一般默认已经开启了
systemctl start crond# 开机自启
systemctl enable crond

使用方法:crontab [-u username] [-l|-e|-r],然后会进入任务编辑模式,说明:

  • -u :只有root用户可以执行-u参数,给指定用户创建定时任务,默认是给自己创建定时任务
  • -l :查看定时任务
  • -e :编辑定时任务
  • -r :删除整个定时任务文件

实际上crontab是根据用户区分的,创建了定时任务会在/var/spool/cron/下的创建一个用户名称的定时任务文件。

示例:

# 创建定时任务,只在第一次执行时进行创建,后续对任务的修改都是同一份文件上修改
[root@localhost ~]# crontab -e# 然后就进入了一个类似vim的编辑文件的界面,需要先按i进入编辑模式才能进行编辑
0 12 * * * echo 'world'# 编辑完成按键ESC,然后输入:wq保存文件并退出# 查看定时任务内容
crontab -l# 删除所有定时
crontab -r# 查看本地文件,但是不建议直接编辑,说明的确在目录下有一个文件,crontab -e就是编辑这个文件的
[root@localhost cron]# pwd
/var/spool/cron
[root@localhost cron]# ls 
chuck  root
[root@localhost cron]# cat root 
0 12 * * * echo 'world'
[root@localhost cron]# 

定时任务内容的格式:* 12 * * * echo 'world'

代表意义分钟小时日期月份命令
数字范围0-590-231-311-120-7需要执行的命令

每一行为一个任务,使用空格分开。

除了上面的具体数字,还有一些特殊字符可以表示时间。

特殊字符代表意义
*(星号)代表任何时刻都接受的意思,0 12 * * * 表示每天的12点
,(逗号)表示分隔时段意思,30 3,6 * * *,表示每天的3:30,6:30都执行任务
-(减号)表示范围,* 8-10 * * *,表示每天的8点到10点
/n(斜线)n数字,表示每隔n单位间隔,*/5 * * * *,表示每隔5分钟

上面的数字或者特殊字符一定要写在对应的字段,否则可能效果与实际不一致呢。 示例:

# 下面示例为凌晨1点执行对应的脚本进行数据库备份,执行任务计划建议使用绝对路径
0 1 * * * /root/bak_sh/mysql_zabbix.sh
0 1 * * * /root/bak_sh/mysql_grafana.sh

删除一行任务可以通过crontab -e编辑进行删除,删除所有定时任务才使用crontab -r,不建议直接编辑/var/spool/cron/下的文件。现在一般使用较多的是crond这种方式。

总结:通过上面at命令定时执行一次任务,通过crontab定时有计划的执行任务,实现服务器管理,数据的备份或者数据的清理。

本文由 mdnice 多平台发布

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/616445.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

c语言中负数的读取

自记&#xff1a; 1.以字节为例&#xff0c;其取值范围是 -128 ~ 127&#xff0c;即-2E7 ~ 2E7-1, 用最高位表示其符号&#xff0c;0表示正数&#xff0c;1表示负数。数值以补码形式存储。正数的补码就是该正数本身&#xff0c;负数的补码需要转化&#xff0c;如下: 1>.对负…

【flink番外篇】13、Broadcast State 模式示例-广播维表(2)

Flink 系列文章 一、Flink 专栏 Flink 专栏系统介绍某一知识点&#xff0c;并辅以具体的示例进行说明。 1、Flink 部署系列 本部分介绍Flink的部署、配置相关基础内容。 2、Flink基础系列 本部分介绍Flink 的基础部分&#xff0c;比如术语、架构、编程模型、编程指南、基本的…

自定义Flink SourceFunction定时读取数据库

文章目录 前言一、自定义Flink SourceFunction定时读取数据库二、java代码实现总结 前言 Source 是Flink获取数据输入的地方&#xff0c;可以用StreamExecutionEnvironment.addSource(sourceFunction) 将一个 source 关联到你的程序。Flink 自带了许多预先实现的 source funct…

openssl3.2 - 官方demo学习 - 索引贴

文章目录 openssl3.2 - 官方demo学习 - 索引贴概述笔记工程的搭建和调试环境BIOBIO - client-arg.cBIO - client-conf.cBIO - saccept.cBIO - sconnect.cBIO - server-arg.cBIO - server-cmod.cBIO - server-conf.cBIO - 总结certsciphercipher - aesccm.cEND openssl3.2 - 官方…

使用Java连接MongoDB (6.0.12) 报错

报错&#xff1a; Exception in thread "main" com.mongodb.MongoCommandException: Command failed with error 352: Unsupported OP_QUERY command: create. 上图中“The client driver may require an upgrade”说明了“客户端驱动需要进行升级”&#xff0c;解…

数据分析-Pandas如何转换产生新列

数据分析-Pandas如何转换产生新列 时间序列数据在数据分析建模中很常见&#xff0c;例如天气预报&#xff0c;空气状态监测&#xff0c;股票交易等金融场景。此处选择巴黎、伦敦欧洲城市空气质量监测 N O 2 NO_2 NO2​数据作为样例。 python数据分析-数据表读写到pandas 经典…

What does `rpm -ivh` do?

rpm -ivh 安装 并 显示安装进度 (–install–verbose–hash) rpm -ivh /media/cdrom/RedHat/RPMS/samba-3.0.10-1.4E.i386.rpm 安装rpm -ivh --relocate //opt/gaim gaim-1.3.0-1.fc4.i386.rpm 指定安装到 /opt/gaim[Ref] rpm -uvh和-ivh有什么区别以及zabbix 安…

android前台服务:

android前台服务&#xff1a; android-安卓如何开启前台服务&#xff1f;foregroundService的使用方法&#xff0c;什么是前台服务&#xff1f;_foregroundservicetype-CSDN博客

使用BeanShell写入内容到文件【JMeter】

一、前言 ​ 在我们日常工作中&#xff0c;可能会遇到需要将请求返回的数据写入到文件中。在我们使用JMeter进行性能测试时&#xff0c;就经常能够遇到这种情况。要想达到这种目的&#xff0c;我们一般采取BeanShell后置处理器来将内容写入到文件。 二、提取 ​ 在目前大多数的…

基于多智能体点对点转换的分布式模型预测控制

matlab2020正常运行 基于多智能体点对点转换的分布式模型预测控制资源-CSDN文库

Spring MVC 日期转换器

日期转换器 自定义日期转换器 public class DataConvert implements Converter<String, Date> {/**** 配置时间转换类* param date* return*/Overridepublic Date convert(String date) {try {SimpleDateFormat sdf new SimpleDateFormat("yyyy-MM-dd");ret…

对于软件测试的认识和了解

对软件测试的认识&#xff1a; 软件测试要求开发人员避免测试自己开发的程序。从心理学角度讲&#xff0c;这是很有道理的。特别是一个相对复杂的系统&#xff0c;开发人员在刚刚开发完成的时候&#xff0c;尚沉浸于对自己设计的回味之中。此时去测试的话往往会侧重于程序本身的…

CSS3简单运用过渡元素(transition)

CSS3过渡 概念&#xff1a;在CSS3中&#xff0c;我们可以使用transition属性将元素的某一个属性从“一个属性值”在指定的时间内平滑地过渡到“另一个属性值”&#xff0c;从而实现动画效果。 CSS3变形&#xff08;transform)呈现的仅仅是一个结果&#xff0c;而CSS过渡&…

WPS - 表格虚线变成实线解决方案(Office 同上)

1、选中表格区域&#xff0c;在表格中选中需要调整为实线的表格区域 2、点击设置单元格格式&#xff0c;鼠标进行右击并点击设置单元格格式选项 3、选择实线&#xff0c;在单元格格式下的边框&#xff0c;调整到实线 4、设置为实线&#xff0c;即可将表格的虚线设置为实线

AI系统ChatGPT网站系统源码AI绘画详细搭建部署教程,支持GPT语音对话+DALL-E3文生图+GPT-4多模态模型识图理解

一、前言 SparkAi创作系统是基于ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统&#xff0c;支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美&#xff0c;可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如何搭建部署AI创作Ch…

【AI视野·今日NLP 自然语言处理论文速览 第七十四期】Wed, 10 Jan 2024

AI视野今日CS.NLP 自然语言处理论文速览 Wed, 10 Jan 2024 Totally 38 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Computation and Language Papers Model Editing Can Hurt General Abilities of Large Language Models Authors Jia Chen Gu, Hao Xiang Xu, J…

Qt QGraphicsItem获取鼠标位置对应图像坐标

本次使用了QGraphicsView来加载图像&#xff0c;然后给其设置了一个QGraphicsScene场景&#xff0c;再给场景添加了一个自定义的QGraphicsItem&#xff0c;在其中重写了paint事件&#xff0c;用来重绘图像。 正常情况时&#xff0c;QGraphicsItem上图像的有效区域QRect大小和QG…

基于爬虫和Kettle的豆瓣电影的采集与预处理

一&#xff1a;爬虫 1、爬取的目标 将豆瓣电影网上的电影的基本信息&#xff0c;比如&#xff1a;电影名称、导演、电影类型、国家、上映年份、评分、评论人数爬取出来&#xff0c;并将爬取的结果放入csv文件中&#xff0c;方便存储。 2、网站结构 图1豆瓣网网站结构详…

Polars使用指南(二)

在上一篇文章中&#xff0c;我们介绍了Polars的优势和Polars.Series的常用API&#xff0c;本篇文章我们继续介绍Polars.Series的扩展API。 对于一些特殊的数据类型&#xff0c;如 pl.Array、list、str 等&#xff0c;Polars.Series 提供了基于属性的直接操作API&#xff0c;如…

Web前端 ---- 【Vue3】Proxy响应式原理

目录 前言 安装Vue3项目 安装 Proxy 语法格式 前言 从本文开始进入vue3的学习。本文介绍vue3中的响应式原理&#xff0c;相较于vue2中通过object.defineProperty&#xff08;vue2中的响应式&#xff09;来实现响应式&#xff0c;vue3中换成了Proxy来进行实现。 安装Vue3项目…