美文网首页
使用Cron在Ubuntu上创建定时任务

使用Cron在Ubuntu上创建定时任务

作者: i_1312 | 来源:发表于2021-05-02 16:02 被阅读0次

    cron是一个Linux定时执行工具,可以在无需人工干预的情况下运行作业。 Cron在后台运行,并且使用cron计划的任务(称为“ cron作业”)会自动执行,这对于自动执行与维护相关的任务非常有用。

    在本教程中使用的是Ubuntu 18.04版本,并且还需要一个具有管理权限的账号。

    安装Cron

    默认情况下,几乎每个Linux发行版都默认会安装Cron。 如果您使用的是未安装cron的Ubuntu计算机,则可以安装它。

    在Ubuntu机器上安装cron之前,请更新计算机的本地软件包索引 :

    sudo apt update
    

    然后使用以下命令安装cron:

    sudo apt install cron
    

    您还需要确保它也设置为在后台运行 :

    sudo systemctl enable cron
    
    Output 输出
    Synchronizing state of cron.service with SysV service script with /lib/systemd/systemd-sysv-install.
    Executing: /lib/systemd/systemd-sysv-install enable cron
    

    到此,cron就安装在你的系统上,并可以开始调度作业。

    理解Cron是如何工作的

    Cron的各个任务在一个crontab的特殊文件中记录和管理。 系统上的每个用户都可以拥有自己的crontab配置文件,可以在里面添加计划任务,这些任务存储在/ var / spool / cron / crontabs /下。

    要添加任务,可以打开crontab进行编辑,并添加以cron表达式形式编写的任务计划。 cron表达式的语法可以分为两个元素:时间和要运行的命令。 运行的命令实际上可以是在命令行上运行的任何命令。 语法的时间表组件分为5个不同的字段,按以下顺序编写:


    image.png

    将时间参数组合在一起后,在crontab中编写的的任务计划结构如下 :

    minute hour day_of_month month day_of_week command_to_run
    

    您还可以在cron表达式的时间计划中包括一些特殊字符,可以以使计划更加容易 :


    image.png

    以下是一些更多有关如何使用cron计划组件的示例:

    * * * * * - Run the command every minute.
    12 * * * * - Run the command 12 minutes after every hour.
    0,15,30,45 * * * * - Run the command every 15 minutes.
    */15 * * * * - Run the command every 15 minutes.
    0 4 * * * - Run the command every day at 4:00 AM.
    0 4 * * 2-4 - Run the command every Tuesday, Wednesday, and Thursday at 4:00 AM.
    20,40 */8 * 7-12 * - Run the command on the 20th and 40th minute of every 8th hour every day of the last 6 months of the year.
    

    直接编写时间表可能会有点麻烦。Cronitor提供了一个方便的cron时间表表达式编辑器,名为“ Crontab Guru”,您可以使用它来检查您的cron时间表是否有效。 Crontab.guru - The cron schedule expression editor

    管理Crontab

    安排好执行计划后,需要将计划放在守护程序可以读取的位置。 crontab是一个特殊文件,其中包含cron将运行的作业计划。 但是这个文件不建议直接进行编辑。 可以使用crontab命令来进行添加。 crontab命令还可以检查是否存在语法错误。

    您可以使用以下命令编辑crontab:

    crontab -e
    

    如果这是用户第一次运行crontab命令,它将提示选择在编辑crontab时要使用的默认文本编辑器:

    Output 输出
    no crontab for sammy - using an empty one
    
    Select an editor.  To change later, run 'select-editor'.
      1. /bin/nano        <---- easiest
      2. /usr/bin/vim.basic
      3. /usr/bin/vim.tiny
      4. /bin/ed
    
    Choose 1-4 [1]: 
    

    输入与习惯使用的编辑器相对应的数字。 或者可以按ENTER接受默认选项nano。

    选择完成后,将进入一个新的crontab,其中包含一些注释掉的使用说明:

    # Edit this file to introduce tasks to be run by cron.
    # 
    # Each task to run has to be defined through a single line
    # indicating with different fields when the task will be run
    # and what command to run for the task
    # 
    # To define the time you can provide concrete values for
    # minute (m), hour (h), day of month (dom), month (mon),
    # and day of week (dow) or use '*' in these fields (for 'any').# 
    # Notice that tasks will be started based on the cron's system
    # daemon's notion of time and timezones.
    # 
    # Output of the crontab jobs (including errors) is sent through
    # email to the user the crontab file belongs to (unless redirected).
    # 
    # For example, you can run a backup of all your user accounts
    # at 5 a.m every week with:
    # 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
    # 
    # For more information see the manual pages of crontab(5) and cron(8)
    # 
    # m h  dom mon dow   command
    

    可以直接在后面增加新的一行,添加如下的计划任务(该任务每分钟执行一次,输出信息,并写到 /home/test.log日志文件中,可以检查日志查看任务是否执行)

    * * * * * echo ‘Run this command every minute’  >>  /home/test.log
    

    在新行中添加了每个作业的时间表后。 保存并关闭crontab(如果使用nano,CTRL + X,Y,ENTER)。

    保存后可以查看crontab的内容,检查是否添加成功,使用以下命令:

    crontab -l
    

    参考文章
    How To Use Cron to Automate Tasks on Ubuntu 18.04 | DigitalOcean

    相关文章

      网友评论

          本文标题:使用Cron在Ubuntu上创建定时任务

          本文链接:https://www.haomeiwen.com/subject/awvtdltx.html