登录|注册|帮助中心|联系我们

导航
首页 综合百科 生活常识 数码科技 明星名人 传统文化 互联网 健康 影视 美食 教育 旅游 汽车 职场 时尚 运动 游戏 家电 地理 房产 金融 节日 服饰 乐器 歌曲 动物 植物
当前位置:首页 > 生活常识

crontab安装配置文件(教你crontab定时执行shell脚本)

发布时间:2023年1月3日责任编辑:陈小树标签:安装

linux系统提供at和crontab两个命令来执行定时任务,at主要针对一次性的定时任务,crontab则执行周期性的定时任务。在linux运维中使用较多的还是cronjob,当安装完linux系统后,linux会自动启动crond进程,这是周期性任务的守护进 程,用于检查是否有需要执行的定时任务。

???crontab命令常用参数: ??crontab file [-u user] -用指定的文件替代目前的crontab. ?crontab -[-u user] -用标准输入替代目前的crontab. ?crontab -l [user] -显示当前存在的crontab任务 . ?crontab -e [user] -用于编辑创建crontab文件任务 . ?crontab -r [user] -删除当前用户crontab文件(文件保存路径为/var/spool/cron/username) . ?crontab -c dir -指定crontab的目录。 ?创建一个新的crontab文件

在考虑向cron进程提交一个crontab文件之前,首先要做的一件事情就是设置环境变量EDITOR。cron进程根据它来确定使用哪个编辑器编辑crontab文件。大多数用户都使用vi,如果你和小编一样也是使用vi,直接编辑$ HOME目录下的. profile文件,在当中加入:

EDITOR=vi; export EDITOR ~ source .bash_profile crontab命令时间格式设置

crontab任务字段共六个,前五个为时间字段分别为:分 时 日 月 周;第六个为执行命令字段,可以是单条命令或者脚本文件。时间字段可以使用特殊字符,’*’代表所有可能值,’,’代表选定时间段,’-‘代表选定时间范围,’/’代表时间间隔频率。

???

举个例子:

?~ crontab -l */1 10-14 24,25 * * echo `date` >> /root/date.log ?

含义为:每个月的24、25号10点到14点每隔一分钟输出一个date日期到/root/date.log文件中。

?~ crontab -l30 21 * * * /usr/local/etc/rc.d/lighttpd restart

含义为:每晚的21:30重启apache。

基础的设置和使用我们已经了解了,但是当我们创建完成cronjob任务后,却经常发现crontab定时任务不执行,着实让人郁闷!没关系,往下看~

crontab定时任务不执行排查思路

两个重要目录文件

关于crontab任务,我们需要知道几个目录文件。这些文件对于我们分析crontab定时任务不执行的原因非常有用。

    ?/var/log/cron,用于记录crontab任务执行日志的文件,不论执行成功与否都会被记录。 ?/var/spool/mail/username,用于记录crontab任务执行失败日志的文件,linux系统中每个定时任务执行后,系统都会将 失败的任务信息通过电子邮件的形式发送给当前系统用户。

执行失败排查过程(举例)

我创建一个定时任务每分钟关闭一次iptables任务,但是iptables并未被关闭。

查看日志 tail /var/spool/mail/root,发现不存在这个service命令目录 :

????~ which service /usr/sbin/service ?~ crontab -e */1 * * * * /usr/sbin/service iptables stop ,即可解决这个问题。 ?

这个例子反映了一个普遍存在的现象,当我们在当前shell中执行脚本没有任何问题,但是一写到cronjob中就会出现各种问题,这个是因为cronjob并不会自动加载我们脚本所需的各种环境变量,我们需要手动添加到cronjob任务中才能确保cronjob正常运行。

解决办法修改:

?~ crontab -l SHELL=/bin/sh PATH=PATH=/sbin:/bin:/usr/sbin:/usr/bin */1 * * * * service iptables stop ?

对于python脚本或者mongodb脚本无法定时执行都可以采用这种办法解决。

其他容易忽略导致无法执行cronjob的原因:

    ?定时任务路径问题,在cronjob中最好使用绝对路径来定位脚本或者输出文件。 ?脚本权限问题,修改脚本权限,通常来说chmod 777即可。 ?系统时间问题,校准系统时间。 ?crond服务问题,确保服务状态正常,service crond status。

其它知识推荐

溜溜百科知识网——分享日常生活学习工作各类知识。 垃圾信息处理邮箱 tousu589@163.com
icp备案号 闽ICP备14012035号-2 互联网安全管理备案 不良信息举报平台 Copyright 2023 www.6za.net All Rights Reserved