Windows有设置定时任务的功能,那么Linux(测试环境为Centos7)上的定时任务怎么设置呢?
当时写了一个爬虫需要每天定时执行,百度了一下,几乎所有的教程都是通过Crontab这个工具来完成的。

一、安装

[root@CentOS ~]# yum install crontabs

二、添加定时任务及语法

  1. 添加定时任务

默认情况下,系统会编辑当前登录用户的crontab命令集合。需要编辑其他用户的命令集合,请使用crontab -u username -e

crontab -e

输入上边的命令进入编辑页面,编辑页面常用命令:i(进入编辑模式,否则不可编辑)、点ESC然后“:wq”(保存并退出)

  1. 基本语法:

两个的区别是是否输出日志
(1)第几分钟 第几小时 第几日 第几月 星期几 需要执行的命令 > 日志路径 2>&1
(2)第几分钟 第几小时 第几日 第几月 星期几 需要执行的命令

  1. 取值范围:

0-59 0-23 1-31 1-12 0-7 需要执行的命令


特殊字符的含义:

字符

含义

*(星号)

任何时刻都接受。

,(逗号)

分隔时段的意思

-(减号)

一段时间范围内

/数字(斜杠加数字)

每隔 n 单位间隔

三、 查看定时任务

默认查看当前系统登录用户的Crontab命令集合,如需查看其他用户的Crontab命令集合请使用crontab -u username -l

crontab -l

四、 实例:(我执行的是个Python脚本)

  1. 每年的六月十日 10:5 执行一次
5 10 10 6 * python3 /home/project/xpath_test.py
  1. 每天的三点,六点各执行一次
0 3,6 * * * python3 /home/project/xpath_test.py
  1. 每天的8:20, 9:20,10:20,11:20各执行一次
20 8-11 * * * python3 /home/project/xpath_test.py
  1. 每分钟执行一次任务
* * * * *  python3 /home/project/xpath_test.py
  1. 每五分钟执行一次
*/5 * * * * python3 /home/project/xpath_test.py
  1. 每四个小时执行一个任务
0 */4 * * * python3 /home/project/xpath_test.py
  1. 每周一十点执行一次
00 10 * * 1 python3 /home/project/xpath_test.py
  1. 多个任务在一条命令中配置
* * * * * python3 /home/project/xpath_test.py; python3 /home/project/xpath_test_2.py
  1. 每年执行一次任务
@yearly python3 /home/project/xpath_test.py

@yearly 类似于“0 0 1 1 *”。它会在每年的第一分钟内执行

  1. 系统重启时执行
@reboot python3 /home/project/xpath_test.py
  1. 将所有的 cron 命令备份到文本文件当中

这是一个当我们丢失了cron命令后方便快速的一个恢复方式。

  1. 先检查当前的cron
# crontab -l
0 2 * * * python3 /home/project/xpath_test.py

然后:备份cron到文件中

# crontab -l > cron-backup.txt
# cat cron-backup.txt
0 2 * * * python3 /home/project/xpath_test.py

接着:移除当前的cron(测试)

# crontab -r
# crontab -l
no crontab for root

恢复:从text file中恢复

# crontab cron-backup.txt
# crontab -l
0 2 * * * python3 /home/project/xpath_test.py