美文网首页Anolis8
AnolisOS 8 Crontab定时任务

AnolisOS 8 Crontab定时任务

作者: 前浪浪奔浪流 | 来源:发表于2022-10-04 11:41 被阅读0次

    一、crontab介绍

    Crontab是系统定时任务计划,也称之为系统作业,用于周期性的执行程序。crontab定时任务的工作主要分为以下两类。

    系统任务:系统周期性所要执行的工作,如备份系统数据、清理缓存等;
    用户任务:某个用户定期要做的工作,例如每隔几分钟检查邮件服务器是否有新信,这些工作可由每个用户自行设置等。

    二、crontab常用命令

    2.1、查看Crontab作业状态

    crond 服务一般在AnolisOS 8系统中默认安装,用如下命令查看Crontab定时任务。

    systemctl status crond
    [root@anolis8 ~]# systemctl status crond
    ● crond.service - Command Scheduler
       Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled; vendor preset: enabled)
       Active: active (running) since Sat 2022-10-01 17:50:25 CST; 2 days ago
     Main PID: 1066 (crond)
        Tasks: 1 (limit: 23664)
       Memory: 1.6M
       CGroup: /system.slice/crond.service
               └─1066 /usr/sbin/crond -n
    
    10月 04 06:01:01 anolis8 run-parts[3787]: (/etc/cron.hourly) starting 0anacron
    10月 04 07:01:01 anolis8 CROND[3803]: (root) CMD (run-parts /etc/cron.hourly)
    10月 04 07:01:01 anolis8 run-parts[3812]: (/etc/cron.hourly) finished 0anacron
    10月 04 08:01:01 anolis8 CROND[3832]: (root) CMD (run-parts /etc/cron.hourly)
    10月 04 08:01:01 anolis8 run-parts[3841]: (/etc/cron.hourly) finished 0anacron
    10月 04 09:01:01 anolis8 CROND[3856]: (root) CMD (run-parts /etc/cron.hourly)
    10月 04 09:01:01 anolis8 run-parts[3865]: (/etc/cron.hourly) finished 0anacron
    10月 04 10:01:01 anolis8 CROND[3876]: (root) CMD (run-parts /etc/cron.hourly)
    10月 04 10:01:01 anolis8 run-parts[3885]: (/etc/cron.hourly) finished 0anacron
    10月 04 11:01:01 anolis8 CROND[4020]: (root) CMD (run-parts /etc/cron.hourly)
    

    如果不存在,我们可以用这个命令安装。

    dnf install crontabs
    [root@anolis8 ~]# dnf install crontabs
    Repository epel is listed more than once in the configuration
    上次元数据过期检查:0:18:38 前,执行于 2022年10月04日 星期二 11时03分55秒。
    软件包 crontabs-1.11-17.20190603git.an8.noarch 已安装。
    依赖关系解决。
    无需任何处理。
    完毕!
    

    2.2、查看指定用户的Crontab作业

    例如查看AnolisOS 8系统中用户nobody的Crontab定时任务,不加-u参数,则查看当前用户的作业。

    crontab -l -u nobody
    [root@anolis8 ~]# crontab -l
    no crontab for root
    

    2.3、编辑指定用户的Crontab作业

    如果目录已经存在指定的文件(文件名为当前用户名),则会编辑文件,否则将会以当前用户名创建作业文件,注意/var/spool/cron是用户任务,/etc/crontab是系统任务。

    [root@anolis8 ~]# ll /var/spool/cron
    总用量 0
    [root@anolis8 ~]# 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
    
    crontab -e -u nobody   #编辑指定用户的定时任务
    crontab -e    #编辑当前用户的定时任务
    

    2.4、删除指定用户的所有Crontab作业

    crontab -r -u nobody
    

    2.5、重启Crontab作业

    systemctl restart crond
    

    2.6、停止Crontab作业

    systemctl stop crond
    

    2.7、查看Crontab版本

    [root@anolis8 ~]# crond -V
    cronie 1.5.2
    

    三、Crontab文件

    3.1、Crontab日志位置

    在 /var/log目录下,cron打头的就是系统作业执行的日志文件。

    [root@anolis8 ~]# ll /var/log/cron*
    -rw-------  1 root root 15253 10月  4 11:23 /var/log/cron
    -rw-------. 1 root root 26263 10月  2 03:13 /var/log/cron-20221002
    

    3.2、Crontab位置

    在 /etc/crontab目录下,这些任务都会是系统在运行起来后自动进行调度的。

    [root@anolis8 ~]# 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
    

    3.3、禁止使用Crontab命令的用户

    在 /etc/cron.deny 表示不能使用Crontab命令的用户。

    3.4、允许使用Crontab命令的用户

    在 /etc/cron.allow 表示能使用Crontab的用户。如果/etc/cron.deny和/etc/cron.allow同时存在,那么/etc/cron.allow 优先。如果两个文件都不存在,那么只有root用户可以安排作业。

    [root@anolis8 ~]# cat /etc/cron.deny
    [root@anolis8 ~]# cat /etc/cron.allow
    cat: /etc/cron.allow: 没有那个文件或目录
    

    四、Crontab作业的使用

    4.1、Crontab创建

    crontab -e
    此时会进入到vi编辑界面,来编写我们要调度的Crontab定时任务
    * * * * * command // 前五个字段可以取整数值,指定何时开始工作,第六个域是命令字段。 字段之间用空格分割。
    每小时的第几分钟执行,取值 0-59
    每日的第几个小时执行,取值 0-23
    每月的第几天执行,取值 1-31
    每年的第几月执行,取值 1-12
    每周的第几天执行,取值 0-6
    

    4.2、Crontab命令中的一些常用特殊符号

    表示任何时刻
    ,表示分割
    -表示一个段,如第二段里: 1-5,就表示1到5点
    /n表示每个n的单位执行一次,
    /1, 就表示每隔1个小时执行一次命令。也可以写成1-23/1

    4.3、Crontab常用示例

    例如:每天8点、12点、16点的0分钟执行以下tmp目录下的sh文件。

    00 8,12,16 * * * /tmp/test.sh

    例如:每天的21:43 执行

    43 21 * * * /tmp/test.sh

    例如: 每周一的 17:00 执行

    0 17 * * 1 /tmp/test.sh

    例如:周一到周六 21:00 执行

    0 21 * * 1-6 /tmp/test.sh

    相关文章

      网友评论

        本文标题:AnolisOS 8 Crontab定时任务

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