Linux周期任务

我自己博客网站里的文章
Linux之crontab命令

Linux周期任务:at和crontab

每个人或多或少都有一些约会或者是工作,有的工作是长期周期性的, 例如:

  • 每个月一次的工作报告
  • 每周一次的午餐会报
  • 每天需要的打卡
  • ……

有的工作则是一次性临时的,例如:

  • 刚好课题组老师演讲,需要你明天准备演讲器材等等
  • 临时和师妹晚上约了吃饭
  • ……

同理,Linux中也有很多周期性任务或者临时任务,例如:

  • 每周打包一份备份文件:每周一的凌晨 3:25 把/home/wwwroot 目录打包备份为 backup.tar.gz。
  • 今晚 23:30 重启网站服务
  • ……

为此,Linux中提供了atcrontab两个程序来完成一次性临时任务和长期周期任务。

1. 一次性临时任务:at

at命令 用于在指定时间执行命令。

A. 启动atd

为了能够在指定的时间执行命令,需要有一个守护进程在后台不断地运行,而后到指定的时间之后运行我们指定的程序。这个守护进程就是 atd。因此,为了使用at程序,需要先开启 atd 守护进程。Linux中使用 systemctl 来管理所有的守护进程,包括启动、重启、禁止、……

首先开启 atd 守护进程启动那个服务

sudo systemctl enable rpc-statd

然后启动一下 atd 守护进程(默认是启动的,这里是以防万一)

sudo systemctl start atd

最后查看一下 atd 守护进程的状态

systemctl status atd

查看atd守护进程的状态

可以看到正常在运行

B. at配置文件

atd 通过两个文件 /etc/at.allow/etc/at.deny 来决定系统中哪些用户可以使用 at 设置定时任务

  • 它首先检查 /etc/at.allow,如果文件存在,则只有文件中列出的用户(每行一个用户名)能使用 at
  • 如果 /etc/at.allow不存在,则检查文件 /etc/at.deny,不在此文件中的所有用户都可以使用 at
  • 如果 /etc/at.deny 是空文件,则表示系统中所有用户都可以使用 at
  • 如果 /etc/at.deny 文件也不存在,则只有root才能使用at

C. 时间指定格式

at允许使用一套相当复杂的指定时间的方法。

  • 它能够接受在当天的hh:mm小时:分钟)式的时间指定。假如该时间已过去,那么就放在第二天执行。
  • 当然也能够使用midnight(深夜)、noon(中午)、teatime(饮茶时间,一般是下午4点)等比较模糊的词语来指定时间。
  • 用户还能够采用12小时计时制,即在时间后面加上AM(上午)或PM(下午)来说明是上午还是下午。
  • 也能够指定命令执行的具体日期,指定格式为month day月 日)或mm/dd/yy月/日/年)或dd.mm.yy日.月.年)。指定的日期必须跟在指定时间的后面。

不过一般不会使用这种绝对时间写法,而是使用相对时间写法。这对于安排不久就要执行的命令是很有好处的。

指定格式为:

now + count time-units
  • now就是当前时间
  • time-units是时间单位,这里能够是minutes(分钟)、hours(小时)、days(天)、weeks(星期)。
  • count是时间的数量,究竟是几天,还是几小时

还有有一种计时方法就是直接使用today(今天)、tomorrow(明天)来指定完成命令的时间。

D. 语法

at的语法如下:

at <时间> [选项]

其中,

  • <时间>是指定任务执行时间的参数,可以是具体的时间或者相对时间。
  • 选项用于指定一些额外的设置,例如任务的优先级、环境变量等。

一般来说,在输入完时间和选项后,按下回车就进入到at的交互终端了。在这个终端中我们可以输入我们需要执行的命令。完成输入后按下Ctrl+D结束输入

Ctrl+DShell输入结束符的方式

at now+1min
warning: commands will be executed using /bin/sh
at> echo "1 min passed"
at> <EOT>
job 2 at Sun Jul 16 12:51:00 2023

at输入命令

另外一种方式就是使用-f参数,然后指定需要运行的脚本文件就行了

C. 运行结果

at命令默认情况下不会将任务的输出直接发送到命令行。因此,需要我们在at中写的任务的把输出重定向到一个文件中,该文件可以在任务执行完成后进行查看。

不过一般我们更喜欢能够at能够类似于闹钟一样,任务执行完可以以某种方式提醒我们,所以一般直接在任务的最后结合一个mail命令来向我们的邮箱发邮件

注意,通过Linux系统自带的mail命令默认只能给本机的其他用户发邮件,如果需要对公网邮箱发送邮件,需要配置一下。具体来说,mail命令是依赖sendmail的,所以我们需要先检查安装和配置sendmail。一般系统都自带sendmail,但是只能给内网的邮箱发邮件。如果想给公网的邮箱发邮件(比如qq邮箱)就需要配置sendmail

配置也比较简单,因为发邮件是应用层,所以配置一下SMTP协议的相关信息就行了。

D. 选项

-f:指定包含具体指令的任务文件;
-q:指定新任务的队列名称;
-l:显示待执行任务的列表;
-d:删除指定的待执行任务;
-m:任务执行完成后向用户发送E-mail。一般多在任务中用mail命令

E. 参数

日期时间:指定任务执行的日期时间。

F. 实例

明天17点钟,输出时间到指定文件内:

[root@localhost ~]# at 17:20 tomorrow
at> date >/root/2013.log
at> <EOT>
job 8 at 2013-01-06 17:20

计划任务设定后,在没有执行之前我们可以用atq命令来查看系统没有执行工作任务:

[root@localhost ~]# atq
8       2013-01-06 17:20 a root
7       2013-01-08 17:00 a root

删除已经设置的任务:

[root@localhost ~]# atq
8       2013-01-06 17:20 a root
7       2013-01-08 17:00 a root

[root@localhost ~]# atrm 7
[root@localhost ~]# atq
8       2013-01-06 17:20 a root

显示已经设置的任务内容:

[root@localhost ~]# at -c 8
#!/bin/sh
# atrun uid=0 gid=0
# mail     root 0
umask 22此处省略n个字符
date >/root/2013.log

2. 长期周期性任务:crontab

crontab命令 被用来提交和管理用户的需要周期性执行的任务,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务工具,并且会自动启动crond进程,crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。

A. 语法

crontab(选项)(参数)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

面试数据库八股文十问十答第二期

面试数据库八股文十问十答第二期 作者&#xff1a;程序员小白条&#xff0c;个人博客 相信看了本文后&#xff0c;对你的面试是有一定帮助的&#xff01; ⭐点赞⭐收藏⭐不迷路&#xff01;⭐ 1.MySQL的主从复制 MySQL的主从复制是什么&#xff1f;MySQL主从复制是一种常见的…

Kubernetes1.27容器化部署Prometheus

Kubernetes1.27容器化部署Prometheus GitHub链接根据自己的k8s版本选择对应的版本修改镜像地址部署命令对Etcd集群进行监控&#xff08;云原生监控&#xff09;创建Etcd Service创建Etcd证书的Secret创建Etcd ServiceMonitorgrafana导入模板成功截图 对MySQL进行监控&#xff0…

C语言-结构体

---------------------------- ------------------ 岁月漫长心怀热爱&#xff0c;携手共赴星辰大海 --------今天来到我们自定义类型 -----结构体的讲解 目录 结构体的类型声明和初始化 结构体的类型声明 结构体成员的直接访问 结构体成员的间接访问 嵌套结构体进行访问 使用…

一文通关物理机Ubuntu22.04融合部署OpenStack

前言 因为博主笔记本是amd的&#xff0c;就最近搞了个小主机&#xff0c;就想装个云平台玩玩&#xff0c;搞了三四天才正儿八经弄完&#xff0c;摸了一大堆错误出来&#xff0c;在文章前面我会将这些需要注意的点列举出来。 环境 物理环境&#xff1a; i5 12450H 32G内存 无线…

深度学习——第1章 深度学习的概念及神经网络的工作原理

1.1 序言——探索智能机器 千百年来&#xff0c;人类试图了解智能的机制&#xff0c;并将它复制到思维机器上。 人类从不满足于让机械或电子设备帮助做一些简单的任务&#xff0c;例如使用滑轮吊起沉重的岩石&#xff0c;使用计算器做算术。 人类希望计算机能够自动化执行更…

【KPDK】概述

DPDK的主要目标是为数据平面应用程序中的快速数据包处理提供一个简单、完整的框架。用户可以使用代码来理解所采用的一些技术&#xff0c;构建原型或添加自己的协议栈。可提供使用DPDK的替代生态系统选项。 DPDK框架通过创建环境抽象层&#xff08;EAL&#xff09;为特定环境创…

大文件分片上传、分片进度以及整体进度、断点续传(一)

大文件分片上传 效果展示 前端 思路 前端的思路&#xff1a;将大文件切分成多个小文件&#xff0c;然后并发给后端。 页面构建 先在页面上写几个组件用来获取文件。 <body><input type"file" id"file" /><button id"uploadButton…

PyLMKit(3):基于角色扮演的应用案例

角色扮演应用案例RolePlay 0.项目信息 日期&#xff1a; 2023-12-2作者&#xff1a;小知课题: 通过设置角色模板并结合在线搜索、记忆和知识库功能&#xff0c;实现典型的对话应用功能。这个功能是大模型应用的基础功能&#xff0c;在后续其它RAG等功能中都会用到这个功能。功…

前端项目打包和自动化部署(jenkins+gitee+nginx)

项目打包和自动化部署 一. 项目部署和DevOps 1. 传统的开发模式 在传统的开发模式中&#xff0c;开发的整个过程是按部就班就行&#xff1a; 但是这种模式存在很大的弊端&#xff1a; 工作的不协调&#xff1a;开发人员在开发阶段&#xff0c;测试和运维人员其实是处于等待…

【MOJO】Modular语言安装和测试

目录 一、Mojo介绍 Linux​ Mac 二、安装Mojo SDK 三、mojo代码测试 3.1、在 REPL 中运行代码​ 3.2、构建并运行 Mojo 源文件​ 运行mojo文件​ 构建可执行二进制文件​ 四、VSCode安装 一、Mojo介绍 在学习Rust语言的过程中无意发现了Modular语言&#xff0c;语言…

WIN10 WIN11 关闭更新的绝佳办法(极简单无副作用)

WIN10 WIN11 关闭更新的绝佳办法&#xff08;极简单无副作用&#xff09; 极其简单用实用可以关闭更新20年 winr&#xff0c;输入regedit 打开注册表打开注册表的这个路径&#xff1a; 计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings 右键空白的地方…

智慧用电安全动态监控系统

智慧用电安全动态监控系统是一种先进的电力监控技术系统&#xff0c;它运用物联网、大数据、云计算等先进技术&#xff0c;对电力系统的运行状况进行实时监控和预警。 该系统依托电易云-智慧电力物联网&#xff0c;通过智能传感终端采集电气线路的实时运行数据&#xff0c;客户…

也可Adobe Animate

Animate CC 由原Adobe Flash Professional CC 更名得来&#xff0c;2015年12月2日&#xff1a;Adobe 宣布Flash Professional更名为Animate CC&#xff0c;在支持Flash SWF文件的基础上&#xff0c;加入了对HTML5的支持。并在2016年1月份发布新版本的时候&#xff0c;正式更名为…

数学字体 Mathematical fonts

Mathematical fonts 数学字体&#xff1a; ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzRQSZ \\ \mathcal{ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzRQSZ} \\ \mathfrak{ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzRQSZ} \\ \mathbb{ABC…

分类详情 API 返回值说明

为了进行此平台API的调用&#xff0c;首先我们需要做下面几件事情。 1、 获取一个KEY&#xff0c;点击获取测试key和secret 2、 参考API文档里的接入方式和示例。 3、查看测试工具是否有需要的接口&#xff0c;响应实例的返回字段是否符合参数要求。 4、利用平台的文档中心…

Go读取yaml文件,struct返回,json输出

程序模块中&#xff0c;缺少不了一些配置定义&#xff0c;这时定义yaml是个很好的选择 先定义yaml文件内容&#xff0c;文件名为&#xff1a;task_status_config.yaml confs:#阅读类任务&#xff0c;即提醒任务read:name: readawait: #待开始任务status_id: 0ing: #进行中任务…

GANVAEDiffusion

数学基础 KL散度 描绘一个分布p和另一个分布q之间的偏离程度 当 p ( x ) q ( x ) p(x)q(x) p(x)q(x)时散度取得最小值 JS散度 另一种衡量两个概率分布相似性的方法 GAN 需要训练两个网络&#xff1b;损失来回波动&#xff0c;不好分辨&#xff0c;不容易收敛&#xff…

〖大前端 - 基础入门三大核心之JS篇㊸〗- DOM事件对象的方法

说明&#xff1a;该文属于 大前端全栈架构白宝书专栏&#xff0c;目前阶段免费&#xff0c;如需要项目实战或者是体系化资源&#xff0c;文末名片加V&#xff01;作者&#xff1a;不渴望力量的哈士奇(哈哥)&#xff0c;十余年工作经验, 从事过全栈研发、产品经理等工作&#xf…

个人成长|实现财务自由的秘诀,在这8句话里

哈喽啊&#xff0c;我是雷工&#xff01; 有人说&#xff0c;当今社会阶层跃迁的通道已经被堵死了&#xff0c;要想从普通人跨越阶级发家致富根本不可能。 也有人认为&#xff0c;只要踩住时代的风口&#xff0c;吃到时代的红利&#xff0c;成为百万富翁的速度会非常快。 我觉…

【源码篇】基于SpringBoot+Vue实现的在线考试系统

文章目录 系统说明技术选型成果展示账号地址及其他说明 系统说明 基于SpringBootVue实现的在线考试系统是为高校打造的一款在线考试平台。 系统功能说明 1、系统共有管理员、老师、学生三个角色&#xff0c;管理员拥有系统最高权限。 2、老师拥有考试管理、题库管理、成绩管…