Linux系统中的定时任务:cron
在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服务及其使用。