linux 之计划任务 at crontab

作者: 我爱矿泉水 | 来源:发表于2017-10-22 13:09 被阅读31次

    1. at 命令

    1.1 at 用法

    at 时间描述

    at 6pm Monday
    at now + 5 minutes
    at 12:04:47 10/22/2017

    at>任务描述
    at> ctrl+d

    atq 查询当前用户正在等待的计划任务
    atrm 删除一个正在等待的计划任务
    格式:atrm 任务号

    at计划任务依赖于atd:

    [root@my ~]# systemctl status atd
    atd.service - Job spooling tools
       Loaded: loaded (/usr/lib/systemd/system/atd.service; enabled)
       Active: active (running) since Sat 2017-10-21 07:51:33 CST; 22h ago
     Main PID: 958 (atd)
       CGroup: /system.slice/atd.service
               ?..958 /usr/sbin/atd -f
    
    Oct 21 07:51:33 my.912616.com systemd[1]: Started Job spooling tools.
    [root@my ~]# 
    

    删除at计划任务

    [root@my ~]# atq #查询当前等待执行的计划任务
    1   Sun Oct 22 12:14:00 2017 a root
    [root@my ~]# atrm 1
    [root@my ~]#
    

    1.2 限制

    编辑/etc/at.deny,限制用户使用at做计划任务:

    at.deny.jpg
    [root@my ~]# su - mycms5
    Last login: Sun Oct 22 05:52:38 CST 2017 from 192.168.137.3 on pts/0
    [mycms5@rhel7 ~]$ at 12:25
    You do not have permission to use at.
    [mycms5@rhel7 ~]$
    

    2. crontab

    linux系统里,可以使用crontab制定管理计划任务时间表。

    • crontab -e 编辑当前用户的计划任务时间表
    • crontab -l 列出当前用户的计划任务时间表
    • crontab -r 删除当前用户的计划任务时间表
    • crontab -u username < -e | -l | -r > 以某一个用户的身份管理
    • man 5 crontab 查看crontab帮助信息

    时间表配置文件的格式:

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

    时间数值的特殊表示方法:

    • * 表示该范围内的任意时间
    • - 表示间隔的多个不连续时间点
    • - 表示一个连续的时间范围
    • / 指定间隔的时间频率

    示例:

    • 0 17 * * 1-5 周一到周五每天17:00
    • 30 8 * * 1,3,5 每周一、三、五的8点30分
    • 0 8-18/2 * * *     8点到18点之间每隔2小时
    • 0 * */3 * * 每隔3天
    [root@rhel7 ~]# crontab -l
    20 13 * * sun    touch filename
    25 13 * * *      links www.chachabei.com/p/youjia_update
    [root@rhel7 ~]# crontab -l  -u root
    20 13 * * sun    touch filename
    25 13 * * *      links www.chachabei.com/p/youjia_update
    0 7 * * *      links www.yto.cc
    
    • crontab -r # 删除当前用户所有的计划任务
    • crontab -e # 进入编辑状态,添加计划任务,或者使用vim的-d删除具体某条任务

    2.2 限制crontab

    vi /etc/cron.deny,把mycms5用户名写进去

    cron.deny.jpg

    然后切换到mycms5,发现mycms5已经没法使用crontab了:

    [root@rhel7 ~]# su - mycms5
    Last login: Sun Oct 22 06:14:45 CST 2017 on pts/1
    [mycms5@rhel7 ~]$ crontab -e
    You (mycms5) are not allowed to use this program (crontab)
    See crontab(1) for more information
    [mycms5@rhel7 ~]$ 
    

    相关文章

      网友评论

        本文标题:linux 之计划任务 at crontab

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