linux环境下定时或者周期性的执行一些任务通常由cron这个守护进程来完成。这是一个系统自带的相对也比较方便的系统工具。下面具体来说明一些常用的使用命令和注意事项,并结合一些具体案例做一些示例。
cron的配置文件称为"crontab",配置文件中包含了命令行以及调用时间设置,cron通过读取一个或者多个配置文件来管理定时执行任务。
Ubuntu系统的定时任务管理器为crontab,相关编辑命令及解释如下:
crontab -e #编辑定时任务配置文件
crontab -u #指定用户
crontab -l #列出定时任务列表
crontab -r #删除用户任务
crontab在/etc目录下面存在cron.hourly,cron.daily,cron.weekly,cron.monthly,cron.d五个目录和crontab,cron.deny二个文件。
下面我们就以Python脚本的定时执行为例进行讲解:
- 创建待执行的脚本
注意这里的路径尽量使用绝对路径,避免后面出现问题with open(r'/usr/local/test.txt', encoding='utf-8', mode='a') as f: f.write('这是测试')
chmod +x filename 为一个文件增加可执行权限
chmod +x * 为一个文件夹下所有文件增加执行权限
- 创建shell脚本
注意这里的路径一定要使用绝对路径,必须使用绝对路径,否则后边shell脚本执行无法找到文件路径。#!/bin/bash /root/anaconda3/bin/python /usr/local/test/python_regular_task/test.py \r echo "执行完毕" exit 0
- 编辑定时任务
输入命令: crontab -e,如果是系统系第一次使用cron服务,会首先让你选择一个编辑器
选择一个编辑器即可,建议使用vim.basic.
接下来,你就会进入到cron定时任务配置的脚本中,首次编辑,脚本会有帮助说明。
其中最后一行说明了设定定时任务的具体参数。个参数的解释说明如下:
minute (m), hour (h), day of month (dom), month (mon), day of week (dow)
- m 每个小时的第几分钟执行该任务
- h 每天的第几个小时执行该任务
- dom 每月的第几天执行该任务
- mon 每年的第几个月执行该任务
- dow 每周的第几天执行该任务 - command 指定要执行的程序
示例:
分 小时 日 月 星期 命令
0-59 0-23 1-31 1-12 0-6 command
还可以使用下列特殊字符,更细致的设定时间
星号():代表所有可能的值,例如month字段如果是星号,则表示在满足其它字段的制约条件后每月都执行该命令操作。
逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9”
中杠(-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6”
正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。同时正斜线可以和星号一起使用,例如/10,如果用在minute字段,表示每十分钟执行一次。
设置执行频率为8-23点每小时的第5分钟执行一次:
5 8-23/1 * * * /home/myshell.sh
此时已经可以根据你的具体需求完成了定时任务的时间设置。接下来就是服务的开启:
/etc/init.d/cron start
如果将cron设置成为了系统服务,那么可以直接使用系统服务命令进行开启:
service cron start
同时cron服务有关的调用命令如下:
service cron start //启动服务
service cron stop //关闭服务
service cron restart //重启服务
service cron reload //重新载入配置
service cron status //查看服务状态
着重说明一下,只有root用户才具有对cron服务的权限。
到此已基本完成linux系统下定时任务的配置,喜欢的点个赞!
欢迎关注微信公众号:小张和AI。