当前位置首页 > Linux知识

[linux]定时任务crontab

阅读次数:196 次  来源:admin  发布时间:

测试网站:https://crontab.guru/(可以看到设定好后的各个执行时间点,大爱)

相关文件:

/var/spool/cron/ 目录下存放的是每个用户包括root的crontab任务,每个任务以创建者的名字命名 /etc/crontab 这个文件负责调度各种管理和维护任务。 /etc/cron.d/ 这个目录用来存放任何要执行的crontab文件或脚本。 我们还可以把脚本放在/etc/cron.hourly、/etc/cron.daily、/etc/cron.weekly、/etc/cron.monthly目录中,让它每小时/天/星期、月执行一次。 日志:/var/log/cro

基本的语法:

*           *        *        *        *           command

minute   hour    day   month   week      command

分          时         天      月        星期       命令

特殊字符:

星号(*):代表所有可能的值,例如month字段如果是星号,则表示在满足其它字段的制约条件后每月都执行该命令操作。

逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9”。

中杠(-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6”。

正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。同时正斜线可以和星号一起使用,例如*/10,如果用在minute字段,表示每十分钟执行一次。

例:

分 时 天 月 星期 命令

* * * * * 每分钟执行一次

3 * * * * 每小时的第3分钟执行一次

*/5 * * * * 每5分钟执行一次 (会在5-10-15…执行,而不是刚创建好就执行)

1 */2 * * * 每隔2小时执行一次,24:01 2:01 4:01 ...执行

0 17 */2 * * 每隔2天执行一次,1号17点,3号17点,5号17点 ...执行

注:

* */1 * * * 并不是每小时执行一次,而是每分钟执行一次;

* */2 * * * 是开启定时任务后的2小时0、1…59分钟,4小时0、1…59分钟,6小时…执行一次

问题:使用crontab -e更新后,第一次执行时间会不会改变?

任务时间格式定好后什么时候执行就已经定死了,所以也就和更不更新/var/spool/cron/root文件没有关系了

运行脚本

command可以是一个脚本sh文件

h文件包含了一系列操作

如:每隔1小时执行save_user.sh,并且日志导出到crontab_save_user.log文件中

0 */1 * * * /home/justaman/python/crontab_task/save_user.sh >> /home/justaman/python/log/crontab_save_user.log 2>&1

ave_user.sh如下:

#!/bin/bash

echo "----------开始----------"

# 启动虚拟环境

ource /home/justaman/python/python_virtual/rss/bin/activate

# 切换到程序运行目录

cd /home/justaman/python/code/rss/save_data/cnblog/get_user

# 执行程序

/home/justaman/python/python_virtual/rss/bin/python3 user.py

注意:如果是用python脚本写入定时任务时,任务字符串后面必须加换行符"\n",否则不会执行

编辑/查看定时任务

crontab –e 编辑定时任务,包含了各个定时任务

crontab –l 列出所有的定时任务

crontab –r 删除当前用户的定时任务

crontab服务启动与关闭

/etc/init.d/crond start

/etc/init.d/crond sto

/etc/init.d/crond restart

参照:https://www.cnblogs.com/erbing/p/10019172.html

上一篇:Linux下安装配置JDK7Linux下安装配置JDK7配置环境(debian7)
下一篇:linux版本安装pip