Windows有设置定时任务的功能,那么Linux(测试环境为Centos7)上的定时任务怎么设置呢?
当时写了一个爬虫需要每天定时执行,百度了一下,几乎所有的教程都是通过Crontab这个工具来完成的。
一、安装
[root@CentOS ~]# yum install crontabs
二、添加定时任务及语法
-
添加定时任务
默认情况下,系统会编辑当前登录用户的crontab命令集合。需要编辑其他用户的命令集合,请使用
crontab -u username -e
crontab -e
输入上边的命令进入编辑页面,编辑页面常用命令:i(进入编辑模式,否则不可编辑)、点ESC然后“:wq”(保存并退出)
-
基本语法:
两个的区别是是否输出日志
(1)第几分钟 第几小时 第几日 第几月 星期几 需要执行的命令 > 日志路径 2>&1
(2)第几分钟 第几小时 第几日 第几月 星期几 需要执行的命令取值范围:
0-59 0-23 1-31 1-12 0-7 需要执行的命令
特殊字符的含义:
字符 含义 *(星号) 任何时刻都接受。 ,(逗号) 分隔时段的意思 -(减号) 一段时间范围内 /数字(斜杠加数字) 每隔 n 单位间隔
三、 查看定时任务
默认查看当前系统登录用户的Crontab命令集合,如需查看其他用户的Crontab命令集合请使用
crontab -u username -l
crontab -l
四、 实例:(我执行的是个Python脚本)
-
每年的六月十日 10:5 执行一次
5 10 10 6 * python3 /home/project/xpath_test.py
-
每天的三点,六点各执行一次
0 3,6 * * * python3 /home/project/xpath_test.py
-
每天的8:20, 9:20,10:20,11:20各执行一次
20 8-11 * * * python3 /home/project/xpath_test.py
-
每分钟执行一次任务
* * * * * python3 /home/project/xpath_test.py
-
每五分钟执行一次
*/5 * * * * python3 /home/project/xpath_test.py
-
每四个小时执行一个任务
0 */4 * * * python3 /home/project/xpath_test.py
-
每周一十点执行一次
00 10 * * 1 python3 /home/project/xpath_test.py
-
多个任务在一条命令中配置
* * * * * python3 /home/project/xpath_test.py; python3 /home/project/xpath_test_2.py
-
每年执行一次任务
@yearly python3 /home/project/xpath_test.py
@yearly 类似于“0 0 1 1 *”。它会在每年的第一分钟内执行
-
系统重启时执行
@reboot python3 /home/project/xpath_test.py
-
将所有的 cron 命令备份到文本文件当中
这是一个当我们丢失了cron命令后方便快速的一个恢复方式。
先检查当前的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