cron定时器

通过crontab 命令,我们可以在固定的间隔时间执行指定的系统指令或 shell script脚本。时间间隔的单位可以是分钟、小时、日、月、周及以上的任意组合。这个命令非常适合周期性的日志分析或数据备份等工作。

4611a6ea.png 20220107_112559.png

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

"*" # 代表所有的取值范围内的数字,如月份字段为*,则表示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天)。

举例

# 如果没有下面的路径就创建一个
/var/spool/cron/crontabs
mkdir -p /var/spool/cron/crontabs

新建一个定时任务*

使用nano编辑,完成后会自动安装定时任务。

EDITOR=nano crontab -e

然后随便选一个下面的就可以了

01 * * * * root echo "This command is run at one min past every hour"
17 8 * * * root echo "This command is run daily at 8:17 am"
17 20 * * * root echo "This command is run daily at 8:17 pm"
00 4 * * 0 root echo "This command is run at 4 am every Sunday"
* 4 * * Sun root echo "So is this"
42 4 1 * * root echo "This command is run 4:42 am every 1st of the month"
01 * 19 07 * root echo "This command is run hourly on the 19th of July"

查看定时任务

crontab -l

重启

service cron restart

服务操作说明:

/sbin/service crond start //启动服务
/sbin/service crond stop //关闭服务
/sbin/service crond restart //重启服务
/sbin/service crond reload //重新载入配置
service crond status //查看crontab服务状态
加入开机自动启动:
chkconfig –level 35 crond on
查看crontab服务是否已设置为开机启动,执行命令:ntsysv

python脚本

crontab中python命令使用绝对路径

*/5 * * * * /usr/local/bin/python2.7 /home/work/user/main.py > /yyy.log 2>&1   

程序中涉及文件路径,相对路径改为绝对路径,

file = 'conf'  
改为:
file = '/home/work/user/conf'

预安装python版本可能非实际使用版本,可使用绝对路径解决
如果需要生效你的bash信息,可以在前面加上“source ~/.bashrc &&”

*/5 * * * * source ~/.bashrc && /usr/local/bin/python2.7 /home/work/user/main.py > /yyy.log 2>&1