crontab定时任务语法及应用

crontab定时任务语法及应用

https://mp.weixin.qq.com/s/Oi9hppNQMeFiQo9s-ge79A

crond 是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务 工具,并且会自动启动crond进程,crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。

Linux下的任务调度分类

  1. 系统任务调度

  2. 用户任务调度

     

系统任务调度

系统周期性所要执行的工作,比如写缓存数据到硬盘、日志清理等。在/etc目录下有一个crontab文件,这个就是系统任务调度的配置文件。

用户任务调度

用户定期要执行的工作,比如用户数据备份、定时邮件提醒等。用户可以使用 crontab 工具来定制自己的计划任务。所有用户定义的crontab 文件都被保存在 /var/spool/cron目录中。其文件名与用户名一致。

二、CRONTAB语法及应用

查看当前用户的定时任务

crontab -l*/2 * * * * echo "i am crontab" >> /home/zhang/hello

编辑当前用户的定时任务

可以在编辑状态修改、删除、新增一些定时任务。注释一般用#

crontab -e

删除当前用户的定时任务

crontab -r

此命令使用需要注意,因为一旦执行没有提醒,该用户的全部定时任务就清空了。

Cron文件格式

*  *  *  *  *  command
分 时 日 月 周   命令

第1列表示分钟1~59, 每分钟用*或者 */1表示
第2列表示小时1~23(0表示0点)
第3列表示日期1~31
第4列表示月份1~12
第5列标识号星期0~6(0表示星期天)
第6列要运行的命令(命令可以是ls /proc >> /tmp/proc 之类的命令,也可以是执行你自行编写的脚本的命令。)

在以上任何值中,星号(*)可以用来代表所有有效的值。譬如,月份值中的星号意味着在满足其它制约条件后每月都执行该命令。

整数间的短线(-)指定一个整数范围。譬如,1-4 意味着整数 1、2、3、4。

用逗号(,)隔开的一系列值指定一个列表。譬如,3, 4, 6, 8 标明这四个指定的整数。

正斜线(/)可以用来指定间隔频率。在范围后加上 / 意味着在范围内可以跳过 integer。譬如,0-59/2 可以用来在分钟字段定义每两分钟。间隔频率值还可以和星号一起使用。例如,*/3 的值可以用在月份字段中表示每三个月运行一次任务。

开头为井号(#)的行是注释,不会被处理。

如你在 /etc/crontab 文件中所见,它使用run-parts 脚本来执行/etc/cron.hourly、/etc/cron.daily、/etc/cron.weekly 和/etc/cron.monthly 目录中的脚本,这些脚本被相应地每小时、每日、每周、或每月执行。这些目录中的文件应该是 shell 脚本。

如果某 cron 任务需要根据调度来执行,而不是每小时、每日、每周、或每月地执行,它可以被添加到 /etc/cron.d 目录中。该目录中的所有文件使用和 /etc/crontab 中一样的语法。

实例

crontab文件的一些例子:

30 21 * * * service apache restart

上面的例子表示每晚的21:30重启apache。

45 4 1,10,22 * * service apache restart

上面的例子表示每月1、10、22日的4 : 45重启apache。

10 1 * * 6,0 service apache restart

上面的例子表示每周六、周日的1 : 10重启apache。

0,30 18-23 * * * service apache restart

上面的例子表示在每天18 : 00至23 : 00之间每隔30分钟重启apache。

0 23 * * 6 service apache restart

上面的例子表示每星期六的11 : 00 pm重启apache。

* */1 * * * service apache restart

每一小时重启apache

* 23-7/1 * * * service apache restart

晚上11点到早上7点之间,每隔一小时重启apache

0 11 4 * mon-wed service apache restart

每月的4号与每周一到周三的11点重启apache

0 4 1 jan * service apache restart

一月一号的4点重启apache

 

环境变量

1、在SHELL中设置了必要的环境变量;例如一个shell脚本手工执行OK,但是配置成后台作业执行时,获取不到ORACLE的环境变量,这是因为 crontab环境变量问题,Crontab的环境默认情况下并不包含系统中当前用户的环境。所以,你需要在shell脚本中添加必要的环境变量的设置

2、尽量所有的文件都采用完全路径方式,避免使用相对路径。

  • 脚本中涉及文件路径时写全局路径;

  • 脚本执行要用到java或其他环境变量时,通过source命令引入环境变量

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/112774.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Pycharm轻松创建Flask项目

    Pycharm轻松创建Flask项目打开Pycharm的file,选择创建新的项目,然后弹出对话框,我们可以看到里面有很多的案例,Flask、Django等等,我们选择生成Flask的demo程序。选择创建之后一个简易的Flask项目就出现在我们眼前,第一个是入口程序,还有一个static的静态目录,templates是模板存放的位置。在Pycharm上面有个run,我们可以选择run来启动Flask的服务,默认打开…

    2022年8月25日
    3
  • Parallel ForEach For 多线程并行计算使用注意

    Parallel ForEach For 多线程并行计算使用注意之前用DataTable进行遍历,出现索引超出范围问题,因为List<T>也只支持单线程,改用ConcurrentBag解决问题。在ParallelForEach/For外的变量要避免同时操作同一个变量造成数据不一致的情况。List<T>转为ConcurrentBagConcurrentBag<T>concT=newC…

    2022年7月19日
    12
  • 3s的基本概念_考研基础知识普及

    3s的基本概念_考研基础知识普及      一、什么是“3S”技术“3S”技术是英文遥感技术(RemoteSenescing  RS)、地理信息系统(GeographicalinformationSystem  GIS)、全球定位系统(GlobalPositioningSystem  GPS)这三种技术名词中最后一个单词字头的统称。二、为什么“3S”技术走到了一起人类有一个梦想,就是想只用一种方法,就把

    2022年8月30日
    0
  • Java实现简单的递归操作[通俗易懂]

    Java实现简单的递归操作[通俗易懂]在数据结构算法设计中,或者一个方法的具体实现的时候,有一种方法叫做“递归”,这种方法在思想上并不是特别难,但是实现起来还是有一些需要注意的。虽然对于很多递归算法都可以由相应的循环迭代来代替,但是对于一些比较抽象复杂的算法不用递归很难理解与实现。递归分为直接递归和间接递归,就简单分享一下两个小的直接递归。对于递归的概念,其实你可以简单的理解为自己定义自己,记得小时候看过一部电视剧《狼毒花》,…

    2022年9月18日
    0
  • 记录:一次爬取gitee项目名称和url[通俗易懂]

    记录:一次爬取gitee项目名称和url[通俗易懂]items:classGiteeItem(scrapy.Item):link=scrapy.Field()desc=scrapy.Field()passdb

    2025年7月7日
    0
  • pycharm2021.12 过期了怎么激活(注册激活)

    (pycharm2021.12 过期了怎么激活)这是一篇idea技术相关文章,由全栈君为大家提供,主要知识点是关于2021JetBrains全家桶永久激活码的内容https://javaforall.net/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~23EQQJJI0G-eyJsaWNlb…

    2022年3月30日
    47

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号