9_Cron命令相关用法

Cron命令相关用法

  1. 本文将讨论Cron,它是在linux管理中最实用的程序之一,它允许你在特定的时间安排命令和任务,也叫Corn作业。

    Corn作为守护进程运行,用于执行重复性任务,比如备份、监视磁盘空间使用、使用最新的应用程序版本更新系统、发送电子邮件和轮换日志等等。我认为没有不运行几个Corn任务的linux服务器。

    crontab一词具有三种不同的含义:包含用户cron作业的文本文件被称为用户的crontab,每个用户都有这样一个文件,在Ubuntu上,这些文件位于/var/spool/cron/crontabs,只有root用户可以访问这些目录。

    还有一个叫crontab的命令用来管理指定用户,这些文件位于/var/spool/cron/的子目录中。不建议手动编辑他们,建议改用crontab命令,这将使用您首选或默认的文本编辑器打开文件,并在退出时验证文件的结构。

    显示crontab文件的内容可用:

      crontab -l
    

    一开始,用户没有crontab编辑,编辑当前用户的crontab文件,运行:

      crontab -e # -e = edit
    

    如果没有默认值,系统会提示你选择一些编辑器。

    在打开的文件中,你可以编辑你想安排的任务。举个例子,你想在每天6a.m运行一个backup脚本,所以可以在该文件中编辑:

      0 6 * * * /root/backup.sh #该行由六个字段组成,每个字段之间用空格隔开,从前到后依次是 minute hour dayofmonth month dayofweek command。注意hour是以24小时为计数的,dayofweek范围是0-7,星期日可以用0或7表示。
    

    还比如你想安排一个每分钟监视磁盘空间使用的任务:

      * * * * * /root/check_space.sh
    

    还比如你想在凌晨4点、6点和10点运行任务,所以分钟为零,在各个小时数之间加逗号:

      0 4,6,10 * * * /root/check_space.sh
    

    还比如你希望任务在工作日的晚上9点至5点之间运行,在各个小时数之间加横号,每小时一次:

      0 9-17 * * 1-5 /root/firewall.sh
    

    还比如你希望在固定的时间间隔内执行某任,比如每隔三天,在4点和21点运行一次任务:

      0 4,21 * */3 * /root/task.sh
    

    还有几个cron宏用于指定最常用的间隔:

    比如每年或者每年将在1月1日午夜运行一次指定的命令/每个月/每星期/每天/每小时/reboot:

      @yearly /root/happy_new_year
      @monthly /root/task.sh
      @weekly /root/task.sh
      @daily /root/path_to_script.sh
      @hourly /root/path_to_script.sh
      @reboot /root/firewall.sh
    

    比如我想每隔2分钟将当前日期和时间附加到文件中:

      */20 * * * * date >> /tmp/date_and_time.txt
    

    查看ubuntu上的cront日志文件:

      tail -f /var/log/syslog
    

    查看centos上的cront日志文件:

      tail -f /var/log/cron
    

    等两分钟,日志文件上会出现 CMD (date >> /tmp/date_and_time.txt)的任务提示

    要删除您的crontab文件,请运行:crontab -r

    root可以使用-u选项和用户名编辑、列出或删除其他用户的crontab

      sudo su
    
      crontab -e -u student 
      #接着编辑crontab文件
    
      crontab -r -u student
    
      crontab -l
    

    no crontab for student #此时student下没有crontab,说明root用户可以任意修改删除其他用户的crontab

    root还额可以对哪些用户可以访问自己的crontab文件设置一些限制:

    另外还有一些基于Web的crontab语法生成器可以使这更加容易,比如crontab.guru/crontab-generator.org/只要你输入想要的时间日期,它会自动生成相应的crontab语法。

    我们看到有一些cron作业将以root身份运行,你只需要将脚本移动到某些目录中去,这些目录是
    /etc/cron.daily、hourly、monthly和weekly。

    例如,将某脚本移动到/etc/cron.hourly目录,该脚本会每隔一小时执行一次,然后在/etc/crontab中指定这些cron作业的确切运行时间

img

posted @ 2023-08-03 11:27  lyyyuanfang  阅读(139)  评论(0)    收藏  举报