有时,您可能需要定期或按计划的时间间隔执行任务。这些任务包括备份数据库、更新系统、执行定期重启等。这些任务称为“cron任务”。cron作业用于“自动化任务”,有助于简化重复且有时乏味的任务的执行。cron是一个守护进程,可以让您安排这些任务,然后以指定的时间间隔执行它们。在本教程中,您将学习如何使用cron来安排任务。crontab文件crontab或“cron表”是一个简单的文本文件,其中包含指定任务执行时间间隔的规则和命令。crontab文件分为两类:1)系统范围的crontab文件这些通常由需要root权限的Linux服务和关键应用程序使用。系统crontab文件位于/etc/crontab中,只能由root用户访问和编辑。通常用于配置系统范围的守护进程。crontab文件类似于以下内容:etc-crontab-linux2)用户创建的crontab文件Linux用户还可以借助crontab命令创建自己的cron任务。创建的cron作业将以创建它们的用户身份运行。所有cron任务都存储在/var/spool/cron(对于RHEL和CentOS发行版)和/var/spool/cron/crontabs(对于Debian和Ubuntu发行版),cron任务使用创建所列文件的用户的用户名。cron守护进程在后台默默地检查/etc/crontab文件和/var/spool/cron和/etc/cron.d*/目录。crontab命令用于编辑cron文件。让我们看一下crontab文件的结构。crontab文件剖析在继续之前,我们将首先探索crontab文件的格式。crontab文件的基本语法由5列组成,用星号表示,后面是要执行的命令。*****command这个格式也可以这样表示:mhdmoydowcommand或mhdmoydow/path/to/script下面分别解释一下每一项m:代表分钟。rangeis0to59h:表示小时,rangeis0to23d:表示月中的第几天,rangeis1to31moy:这是一年中的月份。范围是1到12doy:这是星期几。范围是0到6,其中0代表Sundaycommand:这是要执行的命令,比如备份命令、重启和复制命令等。编辑和删除cron任务。创建一个cron作业要以root身份创建或编辑一个cron作业,请运行以下命令:#crontab-e要为另一个用户创建或安排一个cron作业,请使用以下语法:#crontab-uusername-e例如,要要以用户Pradeep的身份运行cron作业,请发出以下命令:#crontab-uPradeep-e如果crontab文件不存在,那么您将打开一个空白文本文件。如果crontab文件已经存在,-e选项将允许您编辑该文件并列出crontab文件。要查看已创建的cron作业,只需传递-l选项:#crontab-ldeletecrontabfile要删除cron任务,只需运行crontab-e并删除所需的cron作业行,然后保存文件。要删除所有cron任务,请运行以下命令:#crontab-r然后,让我们看看调度任务的不同方式。显示了使用crontab安排作业的示例,所有cron作业文件都有一个shebang标头。#!/bin/bash这表示您正在使用的shell,在本例中为bashshell。接下来,使用我们之前指定的cron作业条目来指定您要安排作业的时间间隔。要在每天中午12:30重新启动系统,请使用以下语法:3012***/sbin/reboot要计划在凌晨4:00重新启动,请使用以下语法:04***/sbin/reboot注意:星号*用于匹配所有记录。要每天运行脚本两次(例如,在凌晨4:00和下午4:00),请使用以下语法:04,16***/path/to/script要在每周五5点安排cron作业:00pm要运行,请使用以下语法:017**Fri/path/to/script或017***5/path/to/script如果您希望cron作业每30分钟运行一次,请使用:*/30****/path/to/script要安排cron作业每5小时运行一次,请运行:**/5***/path/to/script在选定的日期(例如,星期三和星期五)运行at6pm:00)要运行脚本,请执行以下操作:018**wed,fri/path/to/script要使用单个cron任务运行多个命令,请用分号分隔任务,例如:*****/路径/到/脚本1;/path/to/script2使用特殊字符串来节省编写cron任务的时间有些cron任务可以使用与特定时间间隔对应的特殊字符串轻松配置。例如1)@hourlytimestamp相当于0****会在每个小时的第一分钟执行任务。@hourly/path/to/script2)@dailytimestamp相当于00***它在每天的第一分钟(午夜)执行任务。它可以在执行日常任务时派上用场。@daily/path/to/script3)@weeklytimestamp相当于001*mon每周第一分钟执行cron作业,每周第一天从周一开始。@weekly/path/to/script3)@monthlytimestamp相当于001**它在每个月的第一天的第一分钟执行任务。@monthly/path/to/script4)@yearlytimestamp相当于0011*每年第一分钟执行任务,可用于拜年。@yearly/path/to/scriptrestrictcrontab作为Linux用户,您可以控制谁有权访问crontab命令。可以使用/etc/cron.deny和/etc/cron.allow文件进行控制。默认情况下,只有一个/etc/cron.deny文件并且不包含任何条目。要限制用户使用crontab实用程序,只需将用户的用户名添加到此文件即可。当一个用户被添加到这个文件,并且该用户试图运行crontab命令时,他/她将遇到以下错误。restricted-cron-user要允许用户继续使用crontab实用程序,只需从/etc/cron.deny文件中删除用户名即可。如果/etc/cron.allow文件存在,则只有文件中列出的用户才能访问和使用crontab实用程序。如果两个文件都不存在,则只有root用户才有权限使用crontab命令。备份crontab条目始终建议您备份crontab条目。为此,请使用语法:#crontab-l>/path/to/file.txt例如:#crontab-l>/home/james/backup.txt检查cron日志cron日志存储在/var/日志/计划文件。要查看cron日志,请运行以下命令:#cat/var/log/cronview-cron-log-files-linux要实时查看日志,请使用如下tail命令:#tail-f/var/log/cronview-live-cron-logs总结在本指南中,您学习了如何创建cron作业以自动执行重复性任务,以及如何备份和查看cron日志。我们希望本文能为cron作业提供有用的见解。
