Crontab 的使用

Crontab 的使用crontab用于设置定时任务,通过cat/etc/crontab可查看crontab示例:$cat/etc/crontabSHELL=/bin/bashPATH=/sbin:/

大家好,又见面了,我是你们的朋友全栈君。

crontab 用于设置定时任务,通过 cat /etc/crontab 可查看 crontab 示例:

$ cat /etc/crontab 
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root

# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed

根据输出可知,该命令分三部分,

  • * 设置的循环周期
  • user-name 指定运行该任务的身份
  • 最后一部分是需要运行的脚本路径或具体的命令

身份

期中以什么身份运行脚本,可通过 crontab-u 参数指定,

$ sudo crontab -u user001 -e

上述命令将以 user001 的身份创建并运行 job。

也可以直接编辑 /etc/crontab 文件,该文件中可指定 username:

1 1 * * * user001 user001 /data/home/user001/test.sh

job 的管理

  • crontab -e: 编辑或创建 job,配合 -u 可操作指定用户的 job
  • crontab -l: 列出 job,配合 -u 参数可查看指定用户的 job
  • crontab -r: 删除 job 文件,慎用,没有确认过程直接就删了
  • crontab -i: 同 -r,但删除前会先确认

循环周期

5 个 * 的位置分别代表了不同时间单位,由左至右依次为,

  • 分,取值范围 0 ~ 59
  • 时,0 ~23
  • 天,1 ~ 31
  • 月,1 ~ 12,部分实现支持使用名称 jan,feb,mar,…
  • 星期,0 ~ 6,其中星期天为 0,部分实际支持使用名称,sun, mon, tue…

所以如下格式:

30 5 11 12 * echo "hello"

表示 “12 月 11 日的 5:30” 打印 “hello”。

特殊符号

*

期中,* 代表该位置时间单位下所有可取的值,比如第一个位置代表分,指定为 * 时就是每分钟都执行。

所以五个星 * * * * * 表示每分钟。

,

指定多个值时用于逗号分隔,

0,15,30 * * * *

表示当时间为 0,15 或 30 分钟的时候执行。

-

连字符用于指定范围,

0-15,30 * * * *

表示 0~15 之间的每分钟,以及第 30 分钟的时候执行。

/

除号用于设置重复的间隔,

*/15 * * * *

表示每个一刻钟的时候,即 0,15,30,45 这些时刻。

它与 15 * * * * 的区分是后者表示一个值,即 15min 的时候,13:15, 12:15 这些。

非标准的字符串

还有一些方便的预设关键字,但这些都是非标准的,不同机器支持情况不同。

Entry Description Equivalent to
@yearly (or @annually) 每年一月午夜 0 0 1 1 *
@monthly 每月首日午夜 0 0 1 * *
@weekly 每周天午夜 0 0 * * 0
@daily (or @midnight) 每天午夜 0 0 * * *
@hourly 每小时 0 * * * *
@reboot 重启时 N/A

示例:重启后启动 redis

@reboot /usr/local/bin/redis-server /path/to/redis.conf

一些示例

每分钟打印日期到指定文件,

  • crontab -e 打开 job 编辑界面
  • 输入 */1 * * * * date >> /data/home/wayongliu/foo.txt 然后 :wq 保存退出
  • tail -f /data/home/wayongliu/foo.txt` 查看结果

实现每隔多少秒执行

因为能设置的最小时间单位为分,需要设置每隔多少秒执行时,就需要变通来实现。

借助 sleep,可不用 crontab, 比如每 5 秒:

#!/bin/bash
while true
do
 /home/user/myscript.sh
 sleep 5
done

也可以 sleep 与 crontab 结合来用,考虑到每 5 秒,一分钟内即执行 12 次,可以设置 12 个 job:

* * * * * /home/user/myscript.sh
* * * * * sleep 5; /home/user/myscript.sh
* * * * * sleep 10; /home/user/myscript.sh
* * * * * sleep 15; /home/user/myscript.sh
* * * * * sleep 20; /home/user/myscript.sh
* * * * * sleep 25; /home/user/myscript.sh
* * * * * sleep 30; /home/user/myscript.sh
* * * * * sleep 35; /home/user/myscript.sh
* * * * * sleep 40; /home/user/myscript.sh
* * * * * sleep 45; /home/user/myscript.sh
* * * * * sleep 50; /home/user/myscript.sh
* * * * * sleep 55; /home/user/myscript.sh

其中第一个任务会在每分钟开始时执行,
第二个也是每分钟开始执行,不过会 sleep 5s,所以实际是每分钟每 5s 的时候执行,
后面的任务类似,从而达到了需要的效果。

相关资源

The text was updated successfully, but these errors were encountered:

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

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

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


相关推荐

  • mac idea2021激活码永久【最新永久激活】

    (mac idea2021激活码永久)最近有小伙伴私信我,问我这边有没有免费的intellijIdea的激活码,然后我将全栈君台教程分享给他了。激活成功之后他一直表示感谢,哈哈~https://javaforall.net/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~1STL…

    2022年3月27日
    147
  • 数独挑战之九宫格入门第一题解题思路

    数独挑战之九宫格入门第一题解题思路

    2021年7月3日
    195
  • 数据库锁概述[通俗易懂]

    数据库锁概述[通俗易懂]行锁和表锁主要是针对锁粒度划分的,一般分为行锁、表锁、库锁行锁:访问数据库的时候,锁定整个行数据,防止并发错误。表锁:访问数据库的时候,锁定整个表数据,防止并发错误。二者的区别:表锁:开销小,加锁快,不会出现死锁;锁定粒度大,发生锁冲突概率高,并发度最低。行锁:开销大,加锁慢,会出现死锁;锁定粒度小,发生锁冲突的概率低,并发度高。乐观锁和悲观锁乐观锁:顾名思义,就是很乐观,每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有更新这个数据,可以使用版

    2022年6月18日
    43
  • 反向传播——通俗易懂[通俗易懂]

    反向传播——通俗易懂[通俗易懂]最近在看深度学习的东西,一开始看的吴恩达的UFLDL教程,有中文版就直接看了,后来发现有些地方总是不是很明确,又去看英文版,然后又找了些资料看,才发现,中文版的译者在翻译的时候会对省略的公式推导过程进行补充,但是补充的又是错的,难怪觉得有问题。反向传播法其实是神经网络的基础了,但是很多人在学的时候总是会遇到一些问题,或者看到大篇的公式觉得好像很难就退缩了,其实不难,就是一个链式求导法则反复用。如果…

    2022年4月28日
    38
  • JVM内存模型详解「建议收藏」

    JVM内存模型详解「建议收藏」笔记大纲1、jvm内存结构图2、jvm按照线程共享和私有内存区域划分结构图3、堆和栈在功能、内存大小、线程共享私有进行比较4、JVM运行结构图5、线程安全本质时序图6、jdk6、7、8三个版本内存模型比较7、jdk1.8为什么将方法区移除到本地内存8、jvm内存启动参数详解JVM内存结构图(JDK1.6)多线程共享内存区域:方法区、堆。每一个线程独享内存:java栈、本地方法栈、程序计数器。程序计…

    2022年6月4日
    29
  • Oracle 修改表名、修改列名「建议收藏」

    Oracle 修改表名、修改列名「建议收藏」–重命名表ALTERTABLEtable_nameRENAMETOnew_table_name;–重命名列ALTERTABLEtable_nameRENAMECOLUMNcolumn_nameTOnew_name; 

    2022年5月16日
    35

发表回复

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

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