本文主要介绍Unix系统中用于定时执行任务的cron守护程序和crontab配置表的文件格式,并对自动执行脚本文件时的注意事项进行了说明,主要包括以下几个方面:

  • cron守护程序概述
  • crontab配置表
  • crontab配置举例
  • 执行命令脚本

cron是一个用于执行计划任务的机制,通常由cron守护进程、crontab配置文件和cron操作命令三部分组成。cron守护进程会随系统启动,定期读取crontab配置文件,按照设置的时间自动执行任务。crontab命令可用来检查任务的计划和执行情况。

1 cron守护程序概述

cron守护进程通常会随系统启动,然后进入睡眠状态并立即返回。然后,cron实用程序每分钟都会醒来,检查所有存储的crontab表格,检查其中的每个命令,以决定这个命令是否应该在当前时刻被运行。当命令执行时,所有的输出会被发到任务执行者的邮箱里。

同时,cron守护进程还会每分钟检查它的缓冲目录或者/etc/crontab配置文件的的修改时间,以决定是否有人修改过这些文件,并在文件被修改时重新加载。这种机制也保证了新加入的任务最多一分钟就可以被cron守护进程识别和调度。无论什么时候crontab配置文件被修改都不需要重新启动cron守护进程,它会被自动加载和缓存。

2 crontab配置表

Crontab配置表中包含cron守护进程所需要的指令,告诉cron守护进程“在今天的这个时间执行这条命令”。每一个用户都可以有自己的crontab,其中的每一条命令都会以该用户的身份来执行。

在crontab中,空行、开头的空格和制表键会被忽略,以井号开头的行会被认为是注释而忽略。注意,注释不允许与cron命令出现在同一行上,因为他们将被视为命令的一部分。同样,注释不允许与环境变量设置放在同一行上。

Crontab中的每一行都可以看作是一个任务计划,如下图所示。

表中的每一行都是由5个时间字段、1个用户名(组)和1个任务命令组成。cron守护进程检查表中的每一个行,当当前时间与设定的时、分、月、日或星期相匹配时,这个任务命令就会被cron守护进程执行。5个时间字段按照以下的顺序排列:

序号

时间字段

允许值

1

分钟

0-59

2

小时

0-23

3

日期

1-31

4

1-12(或者前3个字母表示的英文名称)

5

星期

0-7 (或者前3个字母表示的英文名称)

每一个时间域也可以为“*”,意味着所有段,也可以理解为所有数值全部都满足条件。单个的时间可以用“,”分开,时间范围可以用“-”连接,如“1,3,5-7”等形式。如果时间段有着固定的步长可以使用“*/步长”的方式表示,如:“*/3”可代表“0,3,6,9,...”等。对于月和星期字段,除了使用数字表示以外,也可以使用前3个字母表示的英文名称,大小写忽略。

每行的第5个字段为执行该命令的用户名,第6个字段为具体的命令,包含所有的参数,中间不要换行。

3 crontab配置举例

(1)每小时执行一次

1       *       *       *       *       root    periodic hourly

每小时 01分时执行设定的命令。

(2)每日执行一次

10      3       *       *       *       root    periodic daily

每天的3点10分执行设定的命令。

(3)每周执行一次

15      4       *       *       6       root    periodic weekly

每周六的4点15分执行设定的命令。

(4)每月执行一次

30      5       1       *       *       root    periodic monthly

每月1日5点30分执行设定的命令

(5)每日执行多次

1,31    0-5     *       *       *       root    adjkerntz -a

每日早上0点至5点的1分和31分各执行一次设定的命令

*      */3     *       *       *       root    adjkerntz -a

每隔3小时执行一次

4 定时执行脚本

crontab配置表中第6个字段为任务执行命令,可以填写需要执行的命令及其参数,但是对参数过多或者有几条命令要依次执行时,这个字段就会写得非常冗长,也不利于理解和维护。这时可以将这些复杂的命令写到一个可执行的脚本文件里,在这里只填写这个脚本文件的名字就行了。

在Unix系统中,脚本和命令在执行时的表现差不多,在执行一个命令时往往很难发现执行的是一个二进制命令还是一个Shell脚本。那么将可执行脚本写在这里与将一个命令写在这里有什么区别吗?

在这里还真是有一些区别的。一个最直观的表现就是:在命令行模式下可以正确执行的脚本,放到crontab中却运行不起来。相信已经有很多人都碰到过这种情况,初次碰到时往往不知怎么处理。其实原因很简单,就是“路径”。

cron守护进程在执行设置的命令时,会在自己的初始化环境中运行,这里的路径设置往往只包含/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin,通常不会包含/usr/local/bin路径。如果脚本中有一个不在上述目录下的命令时,cron守护进程就无法找不到这个命令了。所以如果想要让cron守护进程找到脚本中的命令并正确运行,要么以绝对路径来写这条命令,要么就加上特定的PATH路径。通常执行命令时我们都不会用绝对路径来运行,把以路径加到脚本里就成了最便捷的方法了。

#!/bin/shPATH=$PATH:/usr/local/bin
export PATH# write your command here

当然,如果在脚本中用到的命令正好在PATH查找路径中,那么这个脚本头也就不会发挥作用了。需要注意的是,在crontab中写命令时一定要使用绝对路径,否则cron守护程序也是会找不到命令的。

使用cron定时执行任务相关推荐

  1. Salesforce系列(十):Salesforce Schedule cron定时执行方法!

    Salesforce系列(十):Salesforce Schedule cron定时执行方法! 前言 今天博主将为大家分享Salesforce系列(十):Salesforce Schedule cro ...

  2. Linux cron 定时执行任务

    一 cron crond位于/etc/rc.d/init.d/crond 或 /etc/init.d 或 /etc/rc.d /rc5.d/S90crond,最总引用/var/lock/subsys/ ...

  3. Centos用cron定时执行PHP

    whereis php 找到bin文件夹. 每分钟执行一次: * * * * * /usr/bin/php /var/www/html/cron/1.php >> /var/www/htm ...

  4. 使用wxLog实现循环保存日志的解决方案(附详细代码)—— 定时执行专家

    目录 ◆ 方案背景 ◆ 实现效果 ◆ wxLog实现日志功能详解 ◆ 定时执行专家 - 简介&最新版下载链接 ◆ 定时执行专家 - 关键字/Keyword ◆ 方案背景 不少用户提到<定 ...

  5. 防止电脑休眠锁屏、防止休眠锁定、防止电脑休眠的小工具 —— 定时执行专家

    目录 ◆ 定时执行专家 - 防锁屏设置方法 ◆ 定时执行专家 - 介绍 ▼定时执行专家 - 最新版下载 ▼支持23种任务类型 ▼支持12种触发方式 ▼关键字/Keyword 电脑设置了待机或者睡眠模式 ...

  6. 定时执行专家 V6.1更新日志 - TimingExecutor V6.1 Change Log

    ▼定时执行专家 - 最新版下载▼ TimingExecutor-V6.1-220810.zip 链接:https://pan.baidu.com/s/1wBHYPt8LaL1IRr-zl0WuFg?p ...

  7. 推荐几种定时关闭电脑屏幕、显示器的方案 - 定时执行专家

    目录 方案一.设置 Windows 系统自带电源选项 方案二.使用第三方软件实现关闭 - 使用NirCmd软件 方案三.使用"定时执行专家"软件,实现定时关闭屏幕(显示器) ◆ 定 ...

  8. 如何定时执行BAT(批处理)、VBS、Python等脚本 —— 定时执行专家

    目录 ◆ 定时执行专家 - 定时执行脚本 功能 ◆定时执行专家 - 简介 ◆ 定时执行专家 - 最新版下载 ◆ 定时执行专家 - 关键字/Keyword ◆ 定时执行专家 - 定时执行脚本 功能 例如 ...

  9. 保护 wp cron.php,wp-cron.php任务的定时执行和控制

    wp-cron.php主要用来实现wordpress的一些定时任务,如定时发布文章,定时备份数据,定时响应页面缓存等操作.wp-cron是wordpress内置模块,该模块的特点:它只能在用户发起请求 ...

最新文章

  1. android学习之-简单对话框
  2. python3视频教程-python3入门视频教程
  3. unity 半透明混合问题_Unity 实时 半透明 阴影 shader
  4. Android Gallery组件实现循环显示图像
  5. 办公自动化-演练-统计日报的演练-0223
  6. 2-set 1823: [JSOI2010]满汉全席
  7. 本特利振动前置器330180-51-00
  8. 如何成为一名AI人工智能算法工程师?
  9. RecyclerView 官方分割线
  10. VBA生成KML文件
  11. 【Android探索】基于OpenCV的微液滴粒径分析APP
  12. Excel,根据一列的子集进行筛选
  13. 中国历史上10大经典遗言
  14. one to one
  15. 工科学术论文书写攻略
  16. 【ML】逻辑回归适用场景-原理-优缺点汇总:
  17. layui.layer 弹出层使用
  18. 2019秋招阅文数据分析:sql查询连续天数
  19. vue js时分秒计时器_Vue js框架的倒数计时器
  20. 九月十月百度人搜,阿里巴巴,腾讯华为小米搜狗笔试面试六十题 10 12

热门文章

  1. 【burpsuite安全练兵场-客户端11】跨站点脚本XSS-10个实验(下)
  2. 张俊林:GPT-4 模型会开创哪些新的研究方向?
  3. python批量操作word文档实战_python批量实现Word文件转换为PDF文件
  4. 机器学习分类算法(附图文详解)
  5. 国税南坪一所税控系统
  6. AI语音智能声控跑步机方案/案列/APP/小程序/网站
  7. YOLO是什么意思?
  8. 多学科优化MDO(任鸿频小结)
  9. 【搞一点AUTOSAR】MCAL-ADC转换请求和转换队列
  10. 基于正态分布的抽样分布-卡方分布