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)
上一篇 2022年7月2日 上午10:16
下一篇 2022年7月2日 上午10:16


相关推荐

  • 思科九年「建议收藏」

    思科九年「建议收藏」第1节:思科九年(1)序南半球的二月是盛夏。这里白天的阳光炽烈而持久,四处都是耀眼的惨白。电视里的广告说皮肤癌是这个国家的国癌,提醒人们小心这厉害的阳光:要穿长袖的衣服待在阴凉的地方,要戴墨镜涂防晒霜。即便如此,海边的沙滩上还是躺满了裸露大片皮肤晒日光浴的各色人种。他们慵懒地躺着趴着,戴着墨镜看书或者睡觉。他们的孩子在水边嬉戏,他们的狗在四处奔跑。海浪一层层涌来,冲浪者和他们的冲浪板在浪中时隐时现。我也半躺在沙滩上,看着儿子和一帮白人小孩玩耍。偏光墨镜里的天空幽蓝深邃,海水的颜色是那种厚重的蓝灰色,洒

    2022年5月4日
    55
  • 往事再见!砥砺前行

    往事再见!砥砺前行4 个小时后我将离开深圳北上杭州 是的 我离职了 又一次换了城市 列维长跳 又一次上演 和大多数为求职和求偶或路过或移居的人们不同 我深深感受着每一座城市的厚重与轻浮 在所有这些地方 在定居者们看来 我又仅仅是另一个路过者 而已 不得不说 哈尔滨是一个神奇的地方 每一次列维长跳都和哈尔滨有关 我永远记得 2002 年的寒冷的冬天 那即便是对我这种超级抗冻的家伙也绝对是个考验 我在冰冻的松

    2026年3月16日
    2
  • git学习六:git提交忽略不必要的文件或文件夹

    git学习六:git提交忽略不必要的文件或文件夹

    2021年10月20日
    29
  • 前端语音信号处理

    前端语音信号处理1、语音活动检测语音活动检测(VoiceActivityDetection,VAD)用于检测出语音信号的起始位置,分离出语音段和非语音(静音或噪声)段。VAD算法大致分为三类:基于阈值的VAD、基于分类器的VAD和基于模型的VAD。基于阈值的VAD是通过提取时域(短时能量、短时过零率等)或频域(MFCC、谱熵等)特征,通过合理的设置门限,达到区分语音和非语音的目的;基于分类…

    2022年5月25日
    57
  • Django(20)ORM模型迁移命令

    Django(20)ORM模型迁移命令迁移命令makemigrations:将模型生成迁移脚本。模型所在的app,必须放在settings.py中的INSTALLED_APPS中。这个命令有以下几个常用选项:app_label:后面可

    2022年7月30日
    8
  • WINDOWS下安装系统_在Windows环境下

    WINDOWS下安装系统_在Windows环境下PyTorch简介在2017年1月18日,facebook下的Torch7团队宣布PyTorch开源后就引来了剧烈的反响。PyTorch是Torch在Python上的衍生版本。Torch是一个使用Lua语言的神经网络库,Torch很好用,但是Lua流行度不够,所以facebook开发团队将Lua的Torch移植到了更流行的语言Python上,推出了PyTo…

    2026年4月16日
    4

发表回复

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

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