Linux定义21天循环一次,Linux学习21-设置定时任务crontab

前言

做自动化测试写的脚本需设置定时任务,在指定的时间去执行,这就需要用到定时任务。之前用jenkins可以在里面设置定时任务,很好用,其实不用jenkins,在linux上也可以用crontab做个定时任务。 本篇学下crontab定时任务的语法,制作一个简单的python脚本文件,使用crontab定时执行

crontab语法

crontab一般在目录/etc/crontab,可以用cat命令查看到里面的内容

[root@yoyo etc]# 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

crontab定时任务命令规则:

星期

命令

路径

minute

hour

day

month

week

command

path

*

*

*

*

*

command

path

minute: 表示分钟,可以是从0到59之间的任何整数。

hour:表示小时,可以是从0到23之间的任何整数。

day:表示日期,可以是从1到31之间的任何整数。

month:表示月份,可以是从1到12之间的任何整数。

week:表示星期几,可以是从0到7之间的任何整数,这里的0或7代表星期日。

command:要执行的命令,可以是系统命令,也可以是自己编写的脚本文件。

path:需执行的文件,用绝对路径

crontab命令常用的特殊字符

符号

说明

*

表示任何时刻

,

表示分割

-

表示一个段,如第二段里: 1-5,就表示1到5点

/n

表示每个n的单位执行一次,如第二段里,*/1, 就表示每隔1个小时执行一次命令。也可以写成1-23/1

编辑crontab文件

各个参数说明:

参数

说明

-e

执行文字编辑器来设定时程表,内定的文字编辑器是 vi(可以指定别的用户,但是必须拥有权限)

-r

删除目前的时程表

-l

列出目前的时程表

-v

列出用户cron作业的状态

使用crontab -e去编辑一个定时任务,默认进入vi编辑器,按i进入编辑模式,编辑如下内容

*/1 * * * * /bin/echo 'hello world ! ~yoyo!' >> ~/yoyo.log

实现的功能:每分钟执行一次 echo 'hello world ! ~yoyo!' ,输出的内容保存到~/yoyo.log目录

编辑完成后,按esc键 :wq保存退出,使用crontab -l查看当前任务状态

[root@yoyo /]# crontab -e

crontab: installing new crontab

[root@yoyo /]# crontab -l

*/1 * * * * /bin/echo 'hello world ! ~yoyo!' >> ~/yoyo.log

等一分钟后,cd到~目录,使用tail查看输出的内容

[root@yoyo /]# cd ~

[root@yoyo ~]# ll

total 28

drwxr-xr-x 2 root root 4096 Jun 29 17:55 conf

drwxr-xr-x 4 polkitd ssh_keys 4096 Jun 29 17:55 data

drwxr-xr-x 2 root root 4096 Jun 29 17:55 logs

drwxr-xr-x 5 root root 4096 Jun 29 17:39 mysql

-rw------- 1 root root 433 May 17 08:34 nohup.out

drwxr-xr-x 4 root root 4096 Jun 30 17:16 yoyo

-rw-r--r-- 1 root root 63 Jul 10 23:12 yoyo.log

[root@yoyo ~]# tail yoyo.log

hello world ! ~yoyo!

hello world ! ~yoyo!

hello world ! ~yoyo!

[root@yoyo ~]#

查看crontab执行的历史

我们如何知道crontab是否执行了定时任何呢?可以在 /var/log目录查看运行的日志记录,使用tail 查看

tail -10 /var/log/cron

[root@yoyo log]# cd /var/log

[root@yoyo log]# tail -10 cron

Jul 10 23:10:50 yoyo crontab[8045]: PAM pam_end: NULL pam handle passed

Jul 10 23:10:54 yoyo crontab[8106]: (root) LIST (root)

Jul 10 23:10:54 yoyo crontab[8106]: PAM pam_end: NULL pam handle passed

Jul 10 23:11:01 yoyo crond[541]: (root) RELOAD (/var/spool/cron/root)

Jul 10 23:11:01 yoyo CROND[8125]: (root) CMD (/bin/echo 'hello world ! ~yoyo!' >> ~/yoyo.log)

Jul 10 23:12:01 yoyo CROND[8232]: (root) CMD (/bin/echo 'hello world ! ~yoyo!' >> ~/yoyo.log)

Jul 10 23:13:01 yoyo CROND[8340]: (root) CMD (/bin/echo 'hello world ! ~yoyo!' >> ~/yoyo.log)

Jul 10 23:14:01 yoyo CROND[8446]: (root) CMD (/bin/echo 'hello world ! ~yoyo!' >> ~/yoyo.log)

Jul 10 23:15:01 yoyo CROND[8553]: (root) CMD (/bin/echo 'hello world ! ~yoyo!' >> ~/yoyo.log)

Jul 10 23:16:01 yoyo CROND[8662]: (root) CMD (/bin/echo 'hello world ! ~yoyo!' >> ~/yoyo.log)

[root@yoyo log]#

常用的定时任务

任务名称

指令

每1分钟执行一次command

*/1 * * * * command

每小时的第15,20,30分钟执行

15,20,30 * * * * command

每天早上9点和晚上17点上下班执行

* 9,17 * * * command

每天早上8点30和晚上20点30执行

30 8,20 * * * command

每隔两天的上午8点到11点的第3和第15分钟执行

3,15 8-11 */2 * * command

每个星期一的上午8点到11点的第3和第15分钟执行

3,15 8-11 * * 1 command

每月1、10、22日的4 : 45执行

45 4 1,10,22 * * command

每周1,3,5 晚上八点执行

* 20 * * 1,3,5 command

每周1,2, 3 4, 5 早点9点20打卡

20 9 * * 1,2,3,4,5 command

每个月的20号都来那么一次

* * 20 * * command

每年的情人节执行一次

* * 14 2 * command

每2个小时执行一次

* */2 * * * command

执行python脚本

接下来用python写个hello world,去执行下吧

[root@yoyo log]# cd ~

[root@yoyo ~]# vi hello.py

# 编辑 print("hello")

[root@yoyo ~]# python hello.py

hello

[root@yoyo ~]# crontab -e

crontab: installing new crontab

[root@yoyo ~]# crontab -l

*/1 * * * * /bin/python ~/hello.py >> ~/hello.log

[root@yoyo ~]# ll

total 36

drwxr-xr-x 2 root root 4096 Jun 29 17:55 conf

drwxr-xr-x 4 polkitd ssh_keys 4096 Jun 29 17:55 data

-rw-r--r-- 1 root root 6 Jul 10 23:36 hello.log

-rw-r--r-- 1 root root 16 Jul 10 23:34 hello.py

drwxr-xr-x 2 root root 4096 Jun 29 17:55 logs

drwxr-xr-x 5 root root 4096 Jun 29 17:39 mysql

-rw------- 1 root root 433 May 17 08:34 nohup.out

drwxr-xr-x 4 root root 4096 Jun 30 17:16 yoyo

-rw-r--r-- 1 root root 546 Jul 10 23:35 yoyo.log

[root@yoyo ~]# tail hello.log

hello

hello

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值