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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • jetson nano安装pycuda

    jetson nano安装pycudaJetPack4.4版本使用之前配置cuda的环境$sudonano~/.bashrcexportPATH=/usr/local/cuda-10.2/bin:$PATHexportLD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATHexportCUDA_HOME=$CUDA_HOME:/usr/local/cuda-10.2$sudosource~/.bashrc$nvcc-V检测一下是否配置成功之后下载[p

    2025年8月11日
    4
  • springboot—@Async实现异步调用及异步回调Future「建议收藏」

    springboot—@Async实现异步调用及异步回调Future「建议收藏」异步调用相对的是同步调用。同步方法调用的时候必须是按照顺序执行的,上一行代码执行完,才会执行下一行。而异步方法调用是相当于多个线程执行,不需要等待上一行代码的执行结果。首先测试方法同步的情况:controller:packagespringboot_async.async_test;importorg.springframework.beans.factory.annot…

    2022年7月27日
    39
  • Python爬取淘宝商品信息

    Python爬取淘宝商品信息各位同学们 好久没写原创技术文章了 最近有些忙 所以进度很慢 警告 本教程仅用作学习交流 请勿用作商业盈利 违者后果自负 如本文有侵犯任何组织集团公司的隐私或利益 请告知联系猪哥删除 一 淘宝登录复习前面我们已经介绍过了如何使用 requests 库登录淘宝 收到了很多同学的反馈和提问 猪哥感到很欣慰 同时对那些没有及时回复的同学说声抱歉 顺便再提一下这个登录功能 代码是完全没有问题

    2025年7月27日
    5
  • 除了we tool还有哪些免费安全好用的微信群发软件?这两个软件比we tool好用!

    除了we tool还有哪些免费安全好用的微信群发软件?这两个软件比we tool好用!除了wetool还有哪些安全好用的微信群发软件?群发工具是社群运营使用频率最高的工具,无论是给群内推送消息,还是给个人推送消息。按键精灵:点击左侧链接下载按键精灵是一款模拟鼠标键盘动作的软件。通过制作脚本,可以让按键精灵代替您的双手,自动执行一系列鼠标键盘动作。按键精灵免费版简单易用,不需要任何编程知识就可以作出功能强大的脚本。只要您在电脑前用双手可以完成的动作,按键精灵都可以替您完成。按键精灵用途广泛,具有大量脚本资源。简单百宝箱:点击左侧链接下载简单百宝箱是一个绿色和安全的游戏

    2022年6月4日
    94
  • Python PyPDF2、pdfplumber 提取 PDF 文本、图片内容

    Python PyPDF2、pdfplumber 提取 PDF 文本、图片内容PythonPyPDF2、pdfplumber提取PDF文本、图片内容PythonPyPDF2、pdfplumber提取PDF文本、图片内容安装库安装pdfplumber安装PyPDF2内容提取代码图片提取文本提取完整代码PythonPyPDF2、pdfplumber提取PDF文本、图片内容说明本方法提取的图片并不算完整,我测试用的是阿里2017年双十一的一份P…

    2022年6月23日
    25
  • vscode html注释快捷键_VSCode 的快捷键及常用插件总结

    vscode html注释快捷键_VSCode 的快捷键及常用插件总结1、注释:·单行注释:ctrl+/,注释后再按取消·取消单行注释:alt+shift+A注释后再按取消2、移动行·向上移动一行:alt+up·向下移动一行:alt+down3、显示/隐藏左侧目录栏·ctrl+b4、复制当前行·向上复制一行:shift+alt+up·向下复制一行:shift+alt+down5、删除当前行·shift+ctrl+k6、控制台显示隐藏…

    2022年6月11日
    95

发表回复

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

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