Linux系统中的定时任务:cron

Linux系统教程

Linux系统中的定时任务:cron

2023-05-15 19:26


                                            




在Linux系统中,cron是一种非常重要的服务,它可以帮助我们定时地执行一些任务。通常我们可以把它称为任务调度器,它允许我们在指定的时间执行一个程序或者脚本,并且可以将输出结果发送到某个指定的邮箱或者文件中。

Linux系统中的cron服务并不是新工具,它的历史可以追溯到1975年,是由AT&T Bell实验室的一位叫做Brian Kernighan的工程师在Unix系统中首次实现的。随后出现了各种变种,到了现在的Linux系统中,cron服务已经被广泛应用,并成为了Linux系统基础服务的一部分。

 

**2. cron的特点**

cron的特点主要有以下三个:

1. 可以在后台执行

cron可以在后台执行,不会影响当前的终端会话。虽然它会发送输出结果到某个指定的邮箱或者文件中,但它不会阻塞当前终端会话,也不需要等待输出结果完成才能继续执行其他任务。

2. 可以指定执行频率

cron可以指定任务执行的频率,可以选择每天、每周、每月等执行。并且它也可以根据需求指定执行时间,非常灵活。

3. 可以发送输出结果

cron可以发送执行结果到指定的邮箱或者文件中,可以方便地查看执行结果。同时,它还可以在任务执行的过程中发送日志信息,帮助用户更好地了解任务执行情况。

 

**3. cron的安装**

在Linux系统中,cron服务通常是默认安装的,如果你的系统没有安装cron服务,可以通过以下命令进行安装:

- Ubuntu、Debian系统:sudo apt-get install cron

- CentOS、RHEL系统:sudo yum install cron

如果你想验证cron是否已经安装,可以通过以下命令查看:

- Ubuntu、Debian系统:dpkg -l cron

- CentOS、RHEL系统:rpm -qa | grep cron

 

如果cron已经安装,会显示类似于以下内容:

- Ubuntu、Debian系统

- CentOS、RHEL系统

**4. cron服务的启动和停止**

在Linux系统中,cron服务是以守护进程的形式运行的,默认是启动状态。如果需要手动启动或停止cron服务,可以执行以下命令:

1. 启动cron服务

sudo service cron start

2. 停止cron服务

sudo service cron stop

3. 重新启动cron服务

sudo service cron restart

4. 查看cron服务状态

sudo service cron status

**5. cron服务配置文件**

cron服务的配置文件通常位于/etc/crontab,它负责配置cron的任务调度信息。在该文件中,每一行分别表示一个任务调度信息,包括任务调度时间、执行的命令或脚本、输出信息的处理方式等。

以下是一个典型的/etc/crontab文件的样例内容:

```shell

# Sample crontab file

SHELL=/bin/bash

PATH=/sbin:/bin:/usr/sbin:/usr/bin

MAILTO=root

 

#minute hour day month weekday command

*/5 * * * * run-parts /etc/cron.hourly

00 4 * * * /usr/bin/apt-get update && /usr/bin/apt-get upgrade -y > /dev/null 2>&1

00 18 * * 5 /root/scripts/backup.sh > /var/log/cron.log 2>&1

文件中的注释可以帮助理解每个部分的作用。其中,每一行中的前五项分别表示分钟、小时、日期、月份、星期及其对应的值,最后一项是要执行的命令或脚本。

这个样例中,有如下三行任务:

第一行:表示每5分钟执行一次/etc/cron.hourly中的所有脚本。

第二行:表示每天4点更新系统,并将输出信息重定向到/dev/null中。

第三行:表示每周五18点执行/root/scripts/backup.sh脚本,并将输出信息记录到/var/log/cron.log文件中。

在/cron.hourly、/cron.daily、/cron.weekly、/cron.monthly中可以添加一些需要定期运行的脚本,这些脚本会被周期性地运行。

**6. cron服务时间格式**

cron支持的时间格式主要分为两种,分别为简单格式和扩展格式。

1. 简单格式

简单格式的时间配置非常简单,只需要指定一个特定的间隔时间即可。比如:

- *:每分钟都运行

- */5:每隔5分钟运行一次

- */10:每隔10分钟运行一次

2. 扩展格式

扩展格式的时间配置相对于简单格式要复杂一些,但也更加灵活。它需要指定具体的时间和周期、星期几的限定等,以下是扩展格式的设置格式:

```shell

* * * * * command to be executed

- - - - -

| | | | |

| | | | ----- Day of the week (0 - 7) (Sunday is both 0 and 7)

| | | ------- Month (1 - 12)

| | --------- Day of the month (1 - 31)

| ----------- Hour (0 - 23)

------------- Minute (0 - 59)

上述格式中,*/n表示每n个时间间隔执行一次,*表示任意值或任意范围。

下面是一些实例:

- 每天0点执行一次任务:

shell

0 0 * * * command

- 每周一、三、五的0点执行任务:

shell

0 0 * * 1,3,5 command

- 每个月的第一天凌晨3点执行任务:

shell

0 3 1 * * command

- 每小时执行任务:

shell

0 * * * * command

**7. cron任务的管理**

cron任务的管理主要包括以下几个方面:

1. 添加一个cron任务

要添加一个cron任务,首先需要使用crontab工具。使用crontab工具添加任务的命令格式如下:

shell

crontab -e

执行上述命令后,会打开一个文件编辑器,可以在其中添加一个任务调度信息。比如,要实现每隔5分钟运行一次test脚本,可以在文件中添加如下内容:

shell

$ crontab -e

*/5 * * * * /root/test.sh

完成操作后,保存并退出文件编辑器。citrontab工具就会自动添加这个任务,然后生效。

2. 修改一个cron任务

要修改一个cron任务,只需要再次运行命令:

```shell

crontab -e

然后,根据需要修改已经存在的任务调度信息,即可完成cron任务的修改。

3. 删除一个cron任务

要删除一个cron任务,只需要打开crontab编辑器,找到要删除的任务调度信息,并删除该信息即可。在删除之后,这个任务就不会再被执行。

4. 查看所有cron任务

要查看所有的cron任务,可以通过以下命令进行:

shell

crontab -l

上述命令会显示当前用户的所有cron任务列表。

 

8. 总结

cron服务是Linux系统中非常重要的服务,它可以帮助我们定时地执行一些任务。本文介绍了cron的特点、安装、启动、停止、配置文件、时间格式、任务管理等方面的内容,可以帮助使用Linux系统的用户更好地理解cron服务及其使用。