您的位置:

Linux Crontab定时任务管理

一、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点执行脚本来备份网站数据到指定文件夹:

  1. 使用crontab -e编辑当前用户的计划任务列表:
  2. crontab -e
    
  3. 在编辑窗口中添加以下内容,保存并退出。
  4. 0 20 * * * /home/backup.sh
    
  5. 新建backup.sh脚本文件:
  6. touch /home/backup.sh
    chmod +x /home/backup.sh
    
  7. 编辑backup.sh脚本文件,在其中写入备份脚本,保存并退出。
  8. #!/bin/bash
    FILE_NAME=$(date +%Y-%m-%d)-backup.tar.gz
    tar zcvf /data/backup/$FILE_NAME /var/www/html/