使用 cron 调度任务
cron 是一个调度守护进程,它以指定的时间间隔执行任务,这些任务称为 corn 作业,主要用于自动执行系统维护或管理任务。例如,你可以设置一个 cron 作业来自动执行重复的任务,比如备份数据库或数据,使用最新的安全补丁更新系统,检查磁盘空间使用情况,发送电子邮件等等。 cron 作业可以按分钟、小时、日、月、星期或它们的任意组合运行。
cron 的一些优点以下是使用 cron 作业的一些优点:
你可以更好地控制作业的运行时间。例如,你可以精确到分钟、小时、天等。 它消除了为循环任务逻辑而去写代码的需要,当你不再需要执行任务时,可以直接关闭它。 作业在不执行时不会占用内存,因此你可以节省内存分配。 如果一个作业执行失败并由于某种原因退出,它将在适当的时间再次运行。 安装 cron 守护进程幸运的是,Fedora Linux 预先配置了运行重要的系统任务来保持系统更新,有几个实用程序可以运行任务例如 cron、anacron、at 和 batch 。本文只关注 cron 实用程序的安装。cron 和 cronie 包一起安装,cronie 包也提供 cron 服务。
要确定软件包是否已经存在,使用 rpm 命令:
$ rpm -q cronie Cronie-1.5.2-4.el8.x86_64
如果安装了 cronie ,它将返回 cronie 包的全名。如果你的系统中没有安装,则会显示未安装。
使用以下命令安装:
$ dnf install cronie运行 cron 守护进程
cron 作业由 crond 服务来执行,它会读取配置文件中的信息。在将作业添加到配置文件之前,必须启动 crond 服务,或者安装它。什么是 crond 呢?crond 是 cron 守护程序的简称。要确定 crond 服务是否正在运行,输入以下命令:
$ systemctl status crond.service ● crond.service - Command Scheduler Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled; vendor pre Active: active (running) since Sat 2021-03-20 14:12:35 PDT; 1 day 21h ago Main PID: 1110 (crond)
如果你没有看到类似的内容 Active: active (running) since ,你需要启动 crond 守护进程。要在当前会话中运行 crond 服务,输入以下命令:
$ systemctl run crond.service
将其配置为开机自启动,输入以下命令:
$ systemctl enable crond.service
如果出于某种原因,你希望停止 crond 服务,按以下方式使用 stop 命令:
$ systemctl stop crond.service
要重新启动它,只需使用 restart 命令:
$ systemctl restart crond.service定义一个 cron 作业 cron 配置
以下是一个 cron 作业的配置细节示例。它定义了一个简单的 cron 作业,将 git master 分支的最新更改拉取到克隆的仓库中:
*/59 * * * * username cd /home/username/project/design git pull origin master
主要有两部分:
第一部分是 */59 * * * *。这表明计时器设置为第 59 分钟执行一次。(LCTT 译注:原文此处有误。) 该行的其余部分是命令,因为它将从命令行运行。 在此示例中,命令本身包含三个部分: 作业将以用户 username 的身份运行 它将切换到目录 /home/username/project/design 运行 git 命令拉取 master 分支中的最新更改如上所述,时间信息是 cron 作业字符串的第一部分,如上所属。它决定了 cron 作业运行的频率和时间。它按以下顺序包括 5 个部分:
一个月中的某天 一周中的某天下面是一种更图形化的方式来解释语法:
.--------------- 分钟 (0 - 59) | .------------- 小时 (0 - 23) | | .---------- 一月中的某天 (1 - 31) | | | .------- 月份 (1 - 12) 或 jan、feb、mar、apr | | | | .---- 一周中的某天 (0-6) (周日=0 或 7) | | | | | 或 sun、mon、tue、wed、thr、fri、sat | | | | | * * * * * user-name command-to-be-executed星号的使用
星号(*)可以用来替代数字,表示该位置的所有可能值。例如,分钟位置上的星号会使它每分钟运行一次。以下示例可能有助于更好地理解语法。
这个 cron 作业将每分钟运行一次:
* * * * [command]
斜杠表示分钟的间隔数。下面的示例将每小时运行 12 次,即每 5 分钟运行一次:
*/5 * * * * [command]
下一个示例将每月的第二天午夜(例如 1 月 2 日凌晨 12:00,2 月 2 日凌晨 12:00 等等):
0 0 2 * * [command]
(LCTT 译注:关于 cron 时间格式,还有更多格式符号,此处没有展开)
使用 crontab 创建一个 cron 作业cron 作业会在后台运行,它会不断检查 /etc/crontab 文件和 /etc/cron.*/ 以及 /var/spool/cron/ 目录。每个用户在 /var/spool/cron/ 中都有一个唯一的 crontab 文件。
不应该直接编辑这些 cron 文件。crontab 命令是用于创建、编辑、安装、卸载和列出 cron 作业的方法。
更酷的是,在创建新文件或编辑现有文件后,你无需重新启动 cron。
$ crontab -e
这将打开你现有的 crontab 文件,或者创建一个。调用 crontab -e 时,默认情况下会使用 vi 编辑器。注意:要使用 Nano 编辑 crontab 文件,可以设置 EDITOR=nano 环境变量。
使用 -l 选项列出所有 cron 作业。如果需要,使用 -u 选项指定一个用户。
$ crontab -l $ crontab -u username -l
使用以下命令删除所有 cron 作业:
$ crontab -r
要删除特定用户的作业,你必须以 root 用户身份运行以下命令:
$ crontab -r -u username
感谢你的阅读。cron 作业看起来可能只是系统管理员的工具,但它实际上与许多 Web 应用程序和用户任务有关。
Fedora Linux 文档的 自动化任务
via: https://fedoramagazine.org/scheduling-tasks-with-cron/
作者:Darshna Das 选题:lujun9972 译者:MjSeven 校对:wxy
本文由 LCTT 原创编译,Linux中国 荣誉推出
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/50284.html
Fedoralinux相关文章
- 使用 tide、handlebars、graphql 开发 Rust web 前端(2)- 获取并解析 GraphQL 数据
- 线程池详解与异步任务编排使用案例
- 不会安装使用PRSice-2软件就太不讲究了
- 云计算服务架构任务池与指令池的搭建和使用,RabbitMQ消息队列
- 【Groovy】编译时元编程 ( 利用注解进行 AST 语法树转换 | 定义注解并使用 GroovyASTTransformationClass 注明 AST 转换接口 | AST 转换接口实现 )
- 使用Redis实现延时任务的解决方案
- Java学习笔记之八JavaBean中布尔类型使用注意事项详解编程语言
- Linux下使用HTTP代理的技术指南(linuxhttp代理)
- 使用Linux BG命令追求高效完成任务(linuxbg命令)
- 监控Linux实时监控内存使用情况(linux实时内存)
- 使用netcat进行反弹链接的shellcode
- 轻松搞定!教你使用Linux删除重复文件(linux删除重复文件)
- 实现Linux精准定时任务——crontab定时器的使用(linux定时器使用)
- 使用Oracle创建定时任务——简单易用的方法(oracle创建jobs)
- 使用 MSSQL 实现SQL分页(mssqlsql分页)
- 使用Linux命令实现关机后自动执行任务的方法(linux关机执行)
- MySQL中bool类型的详细解释和使用方法(mysql中bool类型)
- 利用Redis提升用户体验的缓存服务(使用redis做用户缓存)
- 使用Oracle Job语句实现自动任务管理(oracle job语句)
- c++指针与引用的区别介绍及使用说明
- 使用jquery操作session方法分享