• Cron是什么?利用Cron Job自动执行定时任务


    原文链接 : Cron是什么?利用Cron Job自动执行定时任务 – 草根SEO博客 (simcf.cc)

    Cron

    Cron是一个实用程序,用于在特定的时间自动执行重复任务。在Linux中,常用 cron 服务器来完成这项工作,以下是Cron的工作原理:

    如果想稍后执行特定任务一次,可以使用其他命令。但是,对于重复性任务,cron是完美的解决方案。Cron是一个守护进程,这意味着它在后台运行以执行非交互式任务。类似Windows后台进程中的服务。

    守护程序始终处于空闲状态,并等待命令请求执行某项任务 – 在计算机内或从网络上的任何其他计算机执行。cron文件是一个简单的文本文件,包含在特定时间运行的命令。

    默认crontab文件是/ etc / crontab,位于crontab目录/etc/cron.*/.,只有系统管理员才能编辑系统crontab文件。但是,由于类Unix操作系统支持多个用户,每个用户还可以创建自己的crontab文件并启动命令以随时执行任务,cron守护程序将检查文件并在系统后台运行该命令。

    使用cron作业,可以自动执行系统维护,磁盘空间监视和备份计划。由于其性质,cron作业非常适合全天候工作的计算机 – 服务器。

    请注意,虽然cron作业主要由系统管理员使用,但它对Web开发人员也非常有用。例如,要停用已过期的帐户,检查损坏的链接,甚至为目标用户发送简报都可以使用cron作业。

    Cron工作的基础知识

    基本上,可以使用几种不同的方法创建和编辑cron作业。在本教程中,我们想向您展示如何使用Linux Shell Prompt(终端)来完成它。

    以下是cron作业可以执行的一些基本操作:

    如果要编辑当前用户的crontab文件,请在终端中键入crontab -e:

    它会为您提供这样的结果

    在使用vi编辑器时,可以学习基本的vi命令,以确保采取正确的操作。

    如果要编辑其他用户的crontab,可以键入crontab -u username -e。请记住,您只能以超级用户身份执行此操作,这意味着需要在命令之前键入:sudo su。

    另一个操作允许您查看是否创建了任何crontab文件,只需键入crontab -l即可。如果没有,您将看到此结果。

    此外,如果要查看其他用户的crontab文件列表,可以键入crontab -u username –l

    除了解基本操作外,学习基本语法也很重要。

    基本上,crontab文件由两部分组成:调度计时器和命令,这是命令的编写方式:

    * * * * * / bin / sh backup.sh

    ***** / bin / sh backup.sh cronjob意味着它将每分钟运行一次备份。

    30 18 * * * rm / home / sydtesting / tmp / *表示它每天下午6:30 从/ home / sydtesting / tmp中删除tmp文件。

    如何正确编写Cron语法?

    如前所述,crontab文件有五个字段 – 每个字段用星号表示 – 以确定某个任务集重复执行的日期和时间。

    Minute – 运行命令的分钟,范围从0到59

    Hour  – 命令将在什么时间运行,范围从0到23

    Day of the month – 命令运行的月份的某一天,范围从1到31

    Month – 指定命令运行的月份,范围从1到12

    Day of the week – 希望命令运行的星期几,范围从0到7

    除此之外,您还需要在每个crontab文件中使用正确的字符。

    Asterisk (*)  – 定义所有调度参数。

    Comma (,) – 保持单个命令的两个或更多执行时间。

    Hyphen (-) – 确定设置单个命令的多个执行时间的时间范围。

    Slash (/) – 用于在特定范围内创建预定的时间间隔。

    Last (L)  – 用于确定给定月份中一周的最后一天的特定目的,例如,3L表示最后一个星期三。

    Weekday (W) – 确定给定时间的最近工作日,例如,1W表示如果第1个是星期六,则命令将在星期一(第3个)运行。

    Hash (#) – 用于确定星期几,后跟1到5之间的数字。例如,1#2表示第二个星期一

    Question mark (?) – 留空。

    11 Cron语法示例

    在继续之前,请记住该命令的输出将自动发送到本地电子邮件帐户。因此,如果要停止接收这些电子邮件,可以将> / dev / null 2>&1添加到语法中,如以下示例所示:

    0 5 * * * /root/backup.sh> / dev / null 2>&1
     

    此外,如果要将电子邮件输出发送到特定帐户,则可以添加MAILTO,然后添加电子邮件地址,如下:

    MAILTO = “myname@hostinger.com”

    0 3 * * * /root/backup.sh> / dev / null 2>&1
     

    更多语法示例:

    0 0 * * * / bin / sh backup.s——在每天午夜执行数据库备份。

    0 6,18 * * * / bin / sh backup.sh   ——在上午6点和下午6点每天执行两次数据库备份

    0 * / 6 * * * /scripts/monitor.sh——每六个小时进行一次监控

    * / 10 * * * * /home/user/script.sh——每10分钟为主目录中的脚本文件执行一次cron作业

    0 * 20 7 * / bin / sh backup.sh——在7月20日每小时运行一次数据库备份。

    0 0 * * 2 * / bin / sh——在每个星期二的零点运行数据库备份

    * * * 1,2,5 * /script/script.sh——在1月,2月和5月运行命令

    10-59 / 5 5 * * * /home/user/script.sh     ——在凌晨5点开始每隔5分钟运行一次命令,从早上5:10开始

    0 8 1 * / 3 * /home/user/script.sh——每季度在第一天早上8点运行一个命令

    * * * * * /scripts/script.sh; /scripts/scrit2.sh——在单个cron作业上设置多个任务的计划

    @reboot /scripts/script.sh——每次启动系统时执行某项任务

    结论

    设置自动计划的任务不仅实用,而且还可以防止错过按时采取的假设行动。Cron Job是一种管理此类任务的好方法,无论是作为系统管理员还是像Web开发人员这样的职业,您需要做的就是使用正确的命令并选择正确的时间。

  • 相关阅读:
    201706120024 编译原理第一次作业
    P2014 选课 题解(树形DP)
    基础算法·二分答案
    P4285 [SHOI2008]汉诺塔 题解 (乱搞)
    2018.12-2019.1 TO-DO LIST
    记录一枚蒟蒻的成长(持续更新)
    P3796 【模板】AC自动机(加强版) 题解(Aho-Corasick Automation)
    BuaacodingT651 我知道你不知道圣诞节做什么 题解(逻辑)
    P2766 最长不下降子序列问题 题解(网络流)
    P2516 [HAOI2010]最长公共子序列 题解(LCS)
  • 原文地址:https://www.cnblogs.com/GuoYuying/p/14757419.html
Copyright © 2020-2023  润新知