Cron是一个实用程序,用于在特定的时间自动执行重复任务。在Linux中,常用 cron 服务器来完成这项工作,以下是Cron的工作原理:

如果想稍后执行特定任务一次,可以使用其他命令。但是,对于重复性任务,cron是完美的解决方案。Cron是一个守护进程,这意味着它在后台运行以执行非交互式任务。类似Windows后台进程中的服务。

守护程序始终处于空闲状态,并等待命令请求执行某项任务 – 在计算机内或从网络上的任何其他计算机执行。cron文件是一个简单的文本文件,包含在特定时间运行的命令。

默认crontab文件是/ etc / crontab,位于crontab目录/etc/cron.*/.,只有系统管理员才能编辑系统crontab文件。但是,由于类Unix操作系统支持多个用户,每个用户还可以创建自己的crontab文件并启动命令以随时执行任务,cron守护程序将检查文件并在系统后台运行该命令。

使用cron作业,可以自动执行系统维护,磁盘空间监视和备份计划。由于其性质,cron作业非常适合全天候工作的计算机 – 服务器。

请注意,虽然cron作业主要由系统管理员使用,但它对Web开发人员也非常有用。例如,要停用已过期的帐户,检查损坏的链接,甚至为目标用户发送简报都可以使用cron作业。

Cron工作的基础知识

基本上,可以使用几种不同的方法创建和编辑cron作业。在本教程中,我们想向您展示如何使用Linux Shell Prompt(终端)来完成它。

以下是cron作业可以执行的一些基本操作:

如果要编辑当前用户的crontab文件,请在终端中键入crontab -e:

它会为您提供这样的结果

在使用vi编辑器时,可以学习基本的vi命令,以确保采取正确的操作。

如果要编辑其他用户的crontab,可以键入crontab -u username -e。请记住,您只能以超级用户身份执行此操作,这意味着需要在命令之前键入:sudo su。

另一个操作允许您查看是否创建了任何crontab文件,只需键入crontab -l即可。如果没有,您将看到此结果。

此外,如果要查看其他用户的crontab文件列表,可以键入crontab -u username –l

除了解基本操作外,学习基本语法也很重要。

基本上,crontab文件由两部分组成:调度计时器和命令,这是命令的编写方式:

* * * * * / bin / sh backup.sh

***** / bin / sh backup.sh cronjob意味着它将每分钟运行一次备份。

30 18 * * * rm / home / sydtesting / tmp / *表示它每天下午6:30 从/ home / sydtesting / tmp中删除tmp文件。

如何正确编写Cron语法?

如前所述,crontab文件有五个字段 – 每个字段用星号表示 – 以确定某个任务集重复执行的日期和时间。

Minute – 运行命令的分钟,范围从0到59

Hour  – 命令将在什么时间运行,范围从0到23

Day of the month – 命令运行的月份的某一天,范围从1到31

Month – 指定命令运行的月份,范围从1到12

Day of the week – 希望命令运行的星期几,范围从0到7

除此之外,您还需要在每个crontab文件中使用正确的字符。

Asterisk (*)  – 定义所有调度参数。

Comma (,) – 保持单个命令的两个或更多执行时间。

Hyphen (-) – 确定设置单个命令的多个执行时间的时间范围。

Slash (/) – 用于在特定范围内创建预定的时间间隔。

Last (L)  – 用于确定给定月份中一周的最后一天的特定目的,例如,3L表示最后一个星期三。

Weekday (W) – 确定给定时间的最近工作日,例如,1W表示如果第1个是星期六,则命令将在星期一(第3个)运行。

Hash (#) – 用于确定星期几,后跟1到5之间的数字。例如,1#2表示第二个星期一

Question mark (?) – 留空。

11 Cron语法示例

在继续之前,请记住该命令的输出将自动发送到本地电子邮件帐户。因此,如果要停止接收这些电子邮件,可以将> / dev / null 2>&1添加到语法中,如以下示例所示:

0 5 * * * /root/backup.sh> / dev / null 2>&1

此外,如果要将电子邮件输出发送到特定帐户,则可以添加MAILTO,然后添加电子邮件地址,如下:

MAILTO = “[email protected]”

0 3 * * * /root/backup.sh> / dev / null 2>&1

更多语法示例:

0 0 * * * / bin / sh backup.s——在每天午夜执行数据库备份。

0 6,18 * * * / bin / sh backup.sh   ——在上午6点和下午6点每天执行两次数据库备份

0 * / 6 * * * /scripts/monitor.sh——每六个小时进行一次监控

* / 10 * * * * /home/user/script.sh——每10分钟为主目录中的脚本文件执行一次cron作业

0 * 20 7 * / bin / sh backup.sh——在7月20日每小时运行一次数据库备份。

0 0 * * 2 * / bin / sh——在每个星期二的零点运行数据库备份

* * * 1,2,5 * /script/script.sh——在1月,2月和5月运行命令

10-59 / 5 5 * * * /home/user/script.sh     ——在凌晨5点开始每隔5分钟运行一次命令,从早上5:10开始

0 8 1 * / 3 * /home/user/script.sh——每季度在第一天早上8点运行一个命令

* * * * * /scripts/script.sh; /scripts/scrit2.sh——在单个cron作业上设置多个任务的计划

@reboot /scripts/script.sh——每次启动系统时执行某项任务

结论

设置自动计划的任务不仅实用,而且还可以防止错过按时采取的假设行动。Cron Job是一种管理此类任务的好方法,无论是作为系统管理员还是像Web开发人员这样的职业,您需要做的就是使用正确的命令并选择正确的时间。