一、Crond简介
Crond是一个守护进程,用于在后台运行Linux系统下的任务调度程序。它可以周期性(类似于Windows中的计划任务)执行指定的系统指令或Shell脚本。通过Crond,可以非常方便地定期备份、清理数据、自动化测试等等,极大地提高了工作效率。在Linux上,所有的计划任务都是由Crond负责调度执行。
二、基本语法
使用crontab命令可以编辑和管理当前用户的定时任务列表,常用的语法格式如下:
crontab [-u user] [-l|-e|-r]
-u user
:表示指定要编辑的用户,如果不指定,则表示当前用户。-l
:表示列出当前用户的计划任务列表。-e
:表示编辑当前用户的计划任务列表,如果当前用户没有计划任务列表,则会新建一个。-r
:表示删除当前用户的计划任务列表。
三、时间格式
在Crond中,时间是以一个五部分组成的格式来表示的,格式为:
* * * * *
- 第一部分:分钟数(0~59)
- 第二部分:小时数(0~23)
- 第三部分:日期(1~31)
- 第四部分:月份(1~12)
- 第五部分:星期几(0~6,0为周日)
其中,如果想要表示所有可能的值,则用星号(*)代替;如果想要表示某个具体数值,就直接写上这个数值;如果想要表示一段范围,就用连字符(-)隔开两个数,如果想要对多个数进行不连续的定义,则可以用逗号(,)将它们隔开。
四、常用的时间设置方式
在Crond中,有几种常用的时间设置方式:
1. 每天定时执行任务
假设我们要在每天早上6点执行某个任务,则时间格式为:
0 6 * * *
表示每天0点执行,其中第一部分0表示定时任务将在0分钟时运行,第二部分6表示定时任务将在6小时时运行,第三部分表示定时任务将在每月的所有日期都运行,第四部分表示定时任务将在每月的所有月份都运行,第五部分表示定时任务将在每周的所有天都运行。
2. 每周定时执行任务
如果需要在每周的特定某一天以及某个时间执行任务,则时间格式类似于:
0 6 * * 6
表示在每周的星期六早上6点执行任务,其中第五部分为星期几,6表示星期六。
3. 每月定时执行任务
如果需要在每月的特定一天以及某个时间执行任务,则时间格式类似于:
0 6 1 * *
表示在每个月的1号早上6点执行任务,其中第三部分为月份日期。
4. 每个小时定时执行任务
如果需要在每个小时的特定分钟数执行任务,则时间格式类似于:
0 * * * *
表示每个小时的0分时执行。
五、配置文件
在Linux中还存在一个全局的配置文件/etc/crontab
,我们可以在该文件中配置全局的定时任务。这个文件的语法格式和crontab命令是一样的,只不过在这个文件中可以指定执行任务的用户,格式如下:
* * * * * username command
其中,username表示指定的用户;command表示命令或脚本的路径。
六、实例
下面是一个简单的实例,在每天20点执行脚本来备份网站数据到指定文件夹:
- 使用
crontab -e
编辑当前用户的计划任务列表: - 在编辑窗口中添加以下内容,保存并退出。
- 新建
backup.sh
脚本文件: - 编辑
backup.sh
脚本文件,在其中写入备份脚本,保存并退出。
crontab -e
0 20 * * * /home/backup.sh
touch /home/backup.sh
chmod +x /home/backup.sh
#!/bin/bash
FILE_NAME=$(date +%Y-%m-%d)-backup.tar.gz
tar zcvf /data/backup/$FILE_NAME /var/www/html/