很多时候我们都需要定时执行脚本或者按时执行脚本,这里我们可以使用python也可以直接使用shell去编写脚本文件,然后交给crontab去定时执行。这个系统服务默认是开启的,使用crontab命令可以设置自己的计划任务。

cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed

在以上各个字段中,还可以使用以下特殊字符:

""代表所有的取值范围内的数字,如月份字段为,则表示1到12个月;
"/"代表每一定时间间隔的意思,如分钟字段为*/10,表示每10分钟执行1次。
"-"代表从某个区间范围,是闭区间。如“2-5”表示“2,3,4,5”,小时字段中0-23/2表示在0~23点范围内每2个小时执行一次。
","分散的数字(不一定连续),如1,2,3,4,7,9。
注:由于各个地方每周第一天不一样,因此Sunday=0(第一天)或Sunday=7(最后1天)。
比如:

*    *    *    *    *  command  #每一分钟执行一次command  
10,15  8-11  *  *  *  command  #上午8点-11点的第10、15分钟各执行一次command  
 */1 *  *  *  * root  /usr/src/myapp/first.sh

每一分钟执行一次/usr/src/myapp/目录下的first.sh

现在我们开始从头写一个定时任务:

#! /bin/sh
echo "Hello World"  >> /usr/src/myapp/1.txt  #输出Hello World到/usr/src/myapp/1.txt文件
time1=$(date)
echo $time1 >>  /usr/src/myapp/1.txt  #打印当前时间到/usr/src/myapp/1.txt文件
echo >>  /usr/src/myapp/1.txt
echo >>  /usr/src/myapp/1.txt  #输出两个空行分隔开

脚本文件写好以后,我们去编写下定时任务:

vim /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root

# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed
*/1 * * * * root /usr/src/myapp/first.sh

上面文件最后一行是我们新增的任务,执行频率是每分钟一次
保存文件,然后使其生效(这一步很重要!)

crontab /etc/crontab

这是我们使用:

crontab -l

也能看到我们刚刚新增的任务
然后我们再去看下刚刚脚本输出内容的文件:
在这里插入图片描述
是以一分钟的频率去执行的,证明我们的任务已经生效啦!
删除任务就是把刚刚添加任务的那一行删掉或者注释掉,然后保存生效就好啦!
在线计算各种定时网站:https://www.matools.com/crontab

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐