linux基础之任务调度crontab和at使用

2024-06-18 21:32

本文主要是介绍linux基础之任务调度crontab和at使用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

对于很多的时候,需要定时执行很多的程序,毕竟用户不可能24小时守着电脑或者服务器,而linux也例外,有其自身的定时命令。主要用的有两个命令crontab和at两个命令

crontab和at两者最重要的区别时,crontab适合执行一些定期需要执行的任务,而at一般用来执行一次性的任务。

crontab

简述

  • 任务调用:是指系统在某个时间执行的特定的命令或程序。其任务存在/etc/crontab 文件,而crond (定时服务,必须开启)命令每分锺会定期检查是否有要执行的工作,如果有要执行的工作便会自动执行该工作。

    以查看crond服务状态:
    /sbin/service crond status可以启动、停止、重启crond服务
    /sbin/service crond start
    /sbin/service crond stop
    /sbin/service crond restart
    
  • 任务调度分类

    • 系统工作:有些重要的工作,必须周而复始的执行,比如病毒扫描等
    • 个别用户的工作:个别用户来执行的某系程序,比如对数据库进行备份等。

格式

一般的格式: crontab [参数]

参数作用
-e编辑crontab定时任务的时程表,执行文字编辑器来设定时程表,内定的文字编辑器是 VI,如果你想用别的文字编辑器,则请先设定 VISUAL 环境变数来指定使用那个文字编辑器(比如说 setenv VISUAL joe)
-r删除目前的时程表
-l列出目前的时程表

在创建的时候,不需要写任务文件的地址,因为其默认是/etc/crontab 文件中

crontab -e

输入上面命令,就会自动弹出一个vi编辑的文档,其操作方式自然也是vi。(vi或者vim的具体使用,后面单独写一篇,因为其操作有些复杂。)

在这里插入图片描述

现在没有创建任务,直接退出。

现在看一下其默认的文档是什么样子:

cat /etc/crontab

在这里插入图片描述

这个可以看出通过crontab创建任务时程表的格式

f1 f2 f3 f4 f5 program
f意义
f1分钟(0-59)
f2小时(0-23)
f3一个月中第几天(1-31)
f4月份(1-12)
f5星期中的星期几(0-6)记住0代表的是星期日
program执行的Linux命令或者shell命令

还有一个就是在输入时间的时候,还可以使用一些特殊的符号,而符号也有其代表的作用。

符号作用
*代表任何时间。比如f1为*而不是数字,代表一个小时中的分钟执行一次
逗号代表不连续执行,比如f1 为1,而f2为:2,6,7。具体格式:1 2,6,7 * * * 表示每天中的2点1分,6点1分,7点1分执行一次
-代表连续执行的范围f5:用1-3. 1 2 * * 1-3 表示在周一,周二,周三的2点1分执行程序
*/n代表多久执行一次。比如:f1=*/5 表示每隔5分钟执行一次

先搞一个实例

# 定时一个任务,每月的第3天,5点12分  cal cla >> /tmp/test.txt
#在命令窗口crontab -e#会弹出一个vi的编辑框 然后输入:i键
#就可以输入命令
12 5 3 * * cal cla >> /tmp/test.txt
#然后输入esc +:+wq

注意

星期几和几号最好不要同时赋予值,因为它们都是定义天,非常容易让管理员混乱。

#重新启动任务调度
service crond restart
# 删除任务,也就是终止调度
crontab -r
#查看任务
crontab -l

at

简述

at命令是一次性定时的任务,at的守护进程atd会以后台模式进行运行,检查作业队列来运行。

  • 默认情况下atd手续进程为60秒检查作业队列,有作业时会检查作业的运行时间,如果时间与当前的时间匹配,则运行作业。

  • 在使用at的时候,一定要保证atd进行的启动,可以使用相关指令查看

    #查看进程atd 是否运行,需要用到ps命令
    ps -ef | grep atd 
    

执行图解:

在这里插入图片描述

格式

at [参数] [时间]

需要用快捷键结束at命令的输入:Ctrl+D (为了防止误触,所以需要按两次才行)

看一下具体参数的作用:

参数作用
-m当指定的任务被完成后,将给用户发邮件,即使没有标准输出
-Iatq 的别名
-datrm的别名
-v显示任务将被执行的时间
-c打印任务的内容到标准输出
-V显示版本信息
-q<队列>使用指定的队列
-f<文件>从指定文件读入任务而不是从标准输入读入
-t<时间参数>以时间参数的形式提交要运行的任务

at时间定义

  • 接受当天的日期格式:hh:mm (小时:分钟),如果当天过了那就第二天执行。
  • 模糊的定义时间:midnight(深夜),noon(中午),teatime(一般指下午4点)等
  • 采用12小时,所以在时间后面加上AM(上午)和PM(下午)。
  • 执行命令执行的具体日期,指定格式mm/dd/yy 或者dd.mm.yy或者yyyy-mm-dd
  • 相对计时法。只能格式为:now + 数字 {minutes或hours或days或者weeks} 具体格式:now + 5 days
  • 直接使用today或者tomorrow来指定完成的命令的时间

命令演示:

# 2天后6点执行ls 命令查看 etc 下的文件
第一步: at  6pm+2 days 
第二部:不会切换窗口,不像crontab命令那样,而是直接将鼠标在命令窗口

在这里插入图片描述

如果输入错了,需要按着Ctrl 然后才可以用按键盘的delete键
第三步: 输入完自己的命令,然后需要用快捷键结束at命令的输入:Ctrl+D (为了防止误触,所以需要按两次才行)

如何删除at 命令的任务呢,虽然可以执行一次后删除,但是用户突然决定不运行了,如何办?

第一步:看所有的at 任务

#查看 at命令的任务有哪些
atq

在这里插入图片描述

第二步:删除at 任务

这个可以看出at 命令的的id 以及运行时间,还有任务指定的用户。

atrm +at的id 号

这篇关于linux基础之任务调度crontab和at使用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1073111

相关文章

postgresql使用UUID函数的方法

《postgresql使用UUID函数的方法》本文给大家介绍postgresql使用UUID函数的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录PostgreSQL有两种生成uuid的方法。可以先通过sql查看是否已安装扩展函数,和可以安装的扩展函数

如何使用Lombok进行spring 注入

《如何使用Lombok进行spring注入》本文介绍如何用Lombok简化Spring注入,推荐优先使用setter注入,通过注解自动生成getter/setter及构造器,减少冗余代码,提升开发效... Lombok为了开发环境简化代码,好处不用多说。spring 注入方式为2种,构造器注入和setter

MySQL中比较运算符的具体使用

《MySQL中比较运算符的具体使用》本文介绍了SQL中常用的符号类型和非符号类型运算符,符号类型运算符包括等于(=)、安全等于(=)、不等于(/!=)、大小比较(,=,,=)等,感兴趣的可以了解一下... 目录符号类型运算符1. 等于运算符=2. 安全等于运算符<=>3. 不等于运算符<>或!=4. 小于运

使用zip4j实现Java中的ZIP文件加密压缩的操作方法

《使用zip4j实现Java中的ZIP文件加密压缩的操作方法》本文介绍如何通过Maven集成zip4j1.3.2库创建带密码保护的ZIP文件,涵盖依赖配置、代码示例及加密原理,确保数据安全性,感兴趣的... 目录1. zip4j库介绍和版本1.1 zip4j库概述1.2 zip4j的版本演变1.3 zip4

Python 字典 (Dictionary)使用详解

《Python字典(Dictionary)使用详解》字典是python中最重要,最常用的数据结构之一,它提供了高效的键值对存储和查找能力,:本文主要介绍Python字典(Dictionary)... 目录字典1.基本特性2.创建字典3.访问元素4.修改字典5.删除元素6.字典遍历7.字典的高级特性默认字典

使用Python构建一个高效的日志处理系统

《使用Python构建一个高效的日志处理系统》这篇文章主要为大家详细讲解了如何使用Python开发一个专业的日志分析工具,能够自动化处理、分析和可视化各类日志文件,大幅提升运维效率,需要的可以了解下... 目录环境准备工具功能概述完整代码实现代码深度解析1. 类设计与初始化2. 日志解析核心逻辑3. 文件处

一文详解如何使用Java获取PDF页面信息

《一文详解如何使用Java获取PDF页面信息》了解PDF页面属性是我们在处理文档、内容提取、打印设置或页面重组等任务时不可或缺的一环,下面我们就来看看如何使用Java语言获取这些信息吧... 目录引言一、安装和引入PDF处理库引入依赖二、获取 PDF 页数三、获取页面尺寸(宽高)四、获取页面旋转角度五、判断

C++中assign函数的使用

《C++中assign函数的使用》在C++标准模板库中,std::list等容器都提供了assign成员函数,它比操作符更灵活,支持多种初始化方式,下面就来介绍一下assign的用法,具有一定的参考价... 目录​1.assign的基本功能​​语法​2. 具体用法示例​​​(1) 填充n个相同值​​(2)

Spring StateMachine实现状态机使用示例详解

《SpringStateMachine实现状态机使用示例详解》本文介绍SpringStateMachine实现状态机的步骤,包括依赖导入、枚举定义、状态转移规则配置、上下文管理及服务调用示例,重点解... 目录什么是状态机使用示例什么是状态机状态机是计算机科学中的​​核心建模工具​​,用于描述对象在其生命

Linux进程CPU绑定优化与实践过程

《Linux进程CPU绑定优化与实践过程》Linux支持进程绑定至特定CPU核心,通过sched_setaffinity系统调用和taskset工具实现,优化缓存效率与上下文切换,提升多核计算性能,适... 目录1. 多核处理器及并行计算概念1.1 多核处理器架构概述1.2 并行计算的含义及重要性1.3 并