最近在服务器上跑撸茅台的脚本,需要使用定时任务每天早上9点准时预约一次抢茅台的脚本,因此需要用到 crontab
命令。crontab
主要是用于设置周期性执行命令,比如每分钟、每小时或者每周执行一个固定的命令,该命令从标准输入设备读取命令,并将其存放在crontab
文件中,以供后期的读取和执行。
1. crontab 命令模式
crontab 命令可以参照下图:
列举几个常用的:
-e 编辑 crontab 编辑 crontab 内容
-l 查看用户的 crontab 中的内容
-r 删除用户的 crontab 中的内容
2. 设置 crontab
首先我们来看一下已经执行的 crontab 命令,我们使用 crontab -l
来查看一下咱们的任务:
0,15,30,45,55 9 * * * python3 /root/root/maotai/request.py >> /root/root/maotai/request_maotai.log
可能看上去比较懵逼,我们来仔细讲一下 crontab
的命令格式:
* * * * * command
对于具体的解释,我们可以查看下图:
因为 crontab
是周期性任务,因此我们可以使用分
、时
、日
、周
、月
来定义定时任务的开启时间。首先我们来确定一下每一个*
的取值:
分 * : 1 ~ 59 如果需要分钟执行,那么可以写成 * 或者 */1
时* : 1 ~ 23 0是 0 点的意思
日* : 1 ~ 31 哪一天填写那个数字即可
月*: 1 ~ 12 表示月份
周*: 0 ~ 6 表示周几(0 表示为周天)
此外,还存在一些额外的占位符,表示特定的意思:
- 星号(*) 表示所有可能的值,比如你的日里面用星号,表示时每一天都需要执行
- 逗号(,) 表示可选的值,比如你的日里面用 1,2,3,4 表示,表明在第 1,2, 3, 4天执行
- 中杠(-) 表示整数之间的范围,比如你的日里面用 1-10 表示,表明在第 1 天到第 10 天,每一天都讲被执行
- 斜线(/) 表示时间的执行频率,比如你的日里面每两天执行一次,可以写成 */2 或者 0-23/2
对于最后一个command
命令,就是我们需要执行的命令,比如我上面写的:
python3 /root/root/maotai/request.py >> /root/root/maotai/request_maotai.log
就是使用 python3 的环境执行一次 request ,然后把结果存储到 request_mtaotai.log 中。
3. Crontab 执行实例
- 我需要每天 10 点 15 分执行一次命令:
15 10 * * * command
- 我需要在每个月的第一天和最后一天的 23:59 分执行一次命令
59 23 1,31 * * command
- 我需要在每周一的 10-12之间每隔15 分钟执行一次任务
*/15 10-12 * * 1 command
- 每天早上 9 点,9 点 5 分,9 点 10 分,9 点 20 分去请求一次撸茅台服务
0,5,10,20 * * * * comannd
4. 注意事项
我们在使用crontab
时,一定要注意你自己服务器的时区
,这个很重要,因为定时任务是根据你服务器的时区去执行的,不然会产生到点不能执行的问题。当然了,有任何问题的话,可以加我 v:javainstalling,一起学习啦。