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

Linux系统提供了at和crontab命令来执行定时任务,at主要针对一次性定时任务,而crontab执行周期性定时任务。Cronjob在linux运维中应用广泛。安装linux系统时,linux会自动启动crond进程,这是周期性任务的守护进程,用于检查是否有需要执行的调度任务。crontab命令的通用参数...

Linux系统提供了at和crontab命令来执行定时任务,at主要针对一次性定时任务,而crontab执行周期性定时任务。Cronjob在linux运维中应用广泛。安装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文件之前,首先要做的是设置环境变量编辑器。根据它,cron进程决定使用哪个编辑器来编辑crontab文件。大多数用户使用vi。如果你像边肖一样使用vi,直接编辑。配置文件,并添加:

EDITOR=vi; export EDITOR ~ source .bash_profile

crontab命令时间格式设置

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

例如:

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

含义:在每月24日和25日的10: 00到14: 00,每隔一分钟向/root/date.log文件输出一个日期。

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

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

我们已经知道了cronjob的基本设置和使用方法,但是我们在创建cronjob任务的时候,经常发现crontab调度的任务不执行,真的很郁闷!不要紧,往下看~

Crontab计划任务不执行故障排除想法

两个重要的目录文件

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

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

执行故障排除过程(例如)

我创建了一个调度任务,每分钟关闭一次iptables任务,但是iptables没有关闭。

查看日志tail /var/spool/***il/root,发现这个服务命令目录并不存在:

~哪个服务/usr/***in/service ~ crontab-e */1 * * */usr/***in/serviceiptables stop可以解决这个问题。这个例子反映了一个普遍现象。当我们在当前shell中执行脚本时,没有问题,但是一旦写入cronjob,就会出现各种问题。这是因为cronjob不会自动加载我们脚本需要的各种环境变量,我们需要手动将它们添加到cronjob任务中,以保证cronjob正常运行。

变通方法修改:

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

这种方法可以用来解决python脚本或者mongodb脚本无法定时执行的问题。

阻止cronjob执行的其他容易被忽略的原因:

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

本文来自夜遇投稿,不代表舒华文档立场,如若转载,请注明出处:https://www.chinashuhua.cn/24/573799.html

打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
() 0
上一篇 06-02
下一篇 06-02

相关推荐

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

    Linux系统提供了at和crontab命令来执行定时任务,at主要针对一次性定时任务,而crontab执行周期性定时任务。Cronjob在linux运维中应用广泛。安装linux系统时,linux会自动启动crond进程,这是周期性任务的守护进程,用于检查是否有需要执行的调度任务。crontab命令的通用参数

    2023-06-02 10:10:01
    656 0

评论列表

联系我们

在线咨询: QQ交谈

邮件:admin@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信