Linux crontab 是用来定期执行程序的命令。
当安装完成操作系统之后,默认便会启动此任务调度命令。
crond 命令每分钟会定期检查是否有要执行的工作,如果有要执行的工作便会自动执行该工作。
注意:新创建的 cron 任务,不会马上执行,至少要过 2 分钟后才可以,当然你可以重启 cron 来马上执行。
而 linux 任务调度的工作主要分为以下两类:
crontab [ -u user ] file
或
crontab [ -u user ] { -l | -r | -e }
说明:
crontab 是用来让使用者在固定时间或固定间隔执行程序之用,换句话说,也就是类似使用者的时程表。
-u user 是指设定指定 user 的时程表,这个前提是你必须要有其权限(比如说是 root)才能够指定他人的时程表。如果不使用 -u user 的话,就是表示设定自己的时程表。
参数说明:
时间格式如下:
f1 f2 f3 f4 f5 program
* * * * * - - - - - | | | | | | | | | +----- 星期中星期几 (0 - 6) (星期天 为0) | | | +---------- 月份 (1 - 12) | | +--------------- 一个月中的第几天 (1 - 31) | +-------------------- 小时 (0 - 23) +------------------------- 分钟 (0 - 59)
使用者也可以将所有的设定先存放在文件中,用 crontab file 的方式来设定执行时间。
执行时间 | 格式 |
---|---|
每分钟定时执行一次 | * * * * * |
每小时定时执行一次 | 0 * * * * |
每天定时执行一次 | 0 0 * * * |
每周定时执行一次 | 0 0 * * 0 |
每月定时执行一次 | 0 0 1 * * |
每月最后一天定时执行一次 | 0 0 L * * |
每年定时执行一次 | 0 0 1 1 * |
需求:写了一个每天更新数据库的python脚本(名字为refreshcasesid.py),需要在每天凌晨30分的时候执行
第一步:将python文件放到linux指定目录中
[root statistics_tools]# ll
-r-------- 1 root root 509 Jan 18 14:02 testTaskJob.py
# 使用chmod 644 给testTaskJob.py加上写的权限
[root@KSSYYV162166 statistics_tools]# chmod 664 testTaskJob.py
[root@KSSYYV162166 statistics_tools]# ll
# 权限已经加上了
-rw-rw-r-- 1 root root 509 Jan 18 14:02 testTaskJob.py
[root@KSSYYV162166 statistics_tools]#
第二步:创建.sh执行脚本
# 创建一个执行脚本(在里面加入python文件路径)
[root@KSSYYV162166 statistics_tools]# vi testTaskJob.sh
在testTaskJob.sh中输入一下信息
#!/usr/bin/bash : 代表使用bash解析器
/usr/bin/python3(本地python路径) /opt/statistics_tools/testTaskJob.py(需要执行的python文件路径) > /opt/statistics_tools/run.log(输入日志路径)
echo "end" :执行结束后,打印end
#!/usr/bin/bash
/usr/bin/python3 /opt/statistics_tools/testTaskJob.py > /opt/statistics_tools/run.log
echo "end"
写完以上内容:按esc退出编辑模式,输入 :wq 退出
因为我们建的是sh文件, 此时文件没有x执行权限,我们接下来给文件加上执行权限
[root@KSSYYV162166 statistics_tools]# ll
-rw-rw-r-- 1 root root 509 Jan 18 14:02 testTaskJob.py
-rw-r--r-- 1 root root 114 Jan 18 16:12 testTaskJob.sh
[root@KSSYYV162166 statistics_tools]# chmod 755 testTaskJob.sh
[root@KSSYYV162166 statistics_tools]# ll
-rw-rw-r-- 1 root root 509 Jan 18 14:02 testTaskJob.py
-rwxr-xr-x 1 root root 114 Jan 18 16:12 testTaskJob.sh
[root@KSSYYV162166 statistics_tools]#
# 到这里,我们的脚本文件就准备好了
第三步:创建定时任务
# crontab -l 查看当前已存在的定时任务
[root@KSSYYV162166 statistics_tools]# crontab -l
30 0 * * * /bin/bash /opt/statistics_tools/refreshcasesid.sh >> /opt/refreshcase.log 2>&1
# crontab -e 编辑crontab定时任务文件,这里可以创建新的定时任务
# 或者在 /etc/crontab 更改也可以,推荐使用crontab -e
[root@KSSYYV162166 statistics_tools]# crontab -e
# 在弹出的定时任务中,加入我们想要的定时
30 0 * * * /bin/bash /opt/statistics_tools/testTaskJob.sh >> /opt/testTaskJob.log 2>&1
# 代表每天凌晨 30分执行
30 0 * * * /bin/bash /opt/statistics_tools/testTaskJob.sh >> /opt/testTaskJob.log 2>&1
30 0 * * * :cron表达式,参考上面的/bin/bash :指定脚本解析环境
/opt/statistics_tools/testTaskJob.sh: 需要执行脚本你的路径
>> /opt/testTaskJob.log 2>&1 : 输出日志地址
第四步:查看日志输出,基本上到这一步,定时任务就设置成功了