Linux定时任务

##########系统延时命令at
at命令是系统延时任务发起的工具,是一次性的。

用法:at now+时间    ##在一定时间后要执行的动作(回车后显示如下结果)
        at>      ##在此后输入要执行的命令
        
    可以有多条命令,按Ctrl+D结束输入
    如果执行的命令具有输出结果到屏幕的功能(例如:echo),则到时后结果会以邮件形式发送到当前用户
    
例:at now+5min        ##在5分钟后执行什么动作(min:分钟 hour:小时 day:天)
    at> reboot        ##执行重启

    at 9:05        ##在9:05执行什么动作
    at -l            ##查看系统中存在的延迟任务    
    1    Mon Aug  3 13:50:00 2015 a root
  任务id   执行的时间          执行者

atrm +id    ##撤销此任务的执行
at  4pm+3days    ##在3天后4pm执行
at 10am Jul 31       ##在10am Jul 31执行
at 1am tomorrow        ##在明天1am执行

at命令的格式总结: at 小时:分钟 YY-MM-DD(具体到时间的话是发起命令的时间)
at命令执行后不可更改,只能删除

at的用户限制:
/etc/at.deny    ###用户黑名单
/etc/at.allow    ###用户白名单(这个默认不存在,需要的话自行创建)
#####用户黑名单:禁止使用at的名单
#####用户白名单:允许使用at的名单
#####当/etc/at.allow出现时/etc/at.deny自动失效


##########常用的定时任务crontab
crontab命令是定期任务,是周期性执行的,是重复的。

用法:crontab -e     ##发起定时任务,进入vi编辑界面,在此写入时间及命令。

标准格式:* * * * *  cammand/脚本

格式:分 时 日 月 周 命令(最好绝对路径)

例:0 10 * * * /bin/touch /file    #####在每一天的10:00都执行touch /file

符号含义:*   任何时间
          ,  不连续时间
             -   时间范围
          */n 隔多久执行

时间表示方式:
    */num        每隔。。。
    num1-num2    在num1-num2之间的时间
    num1,num2    在num1,num2这两个时间点
    num1-num2/num3    在num1-num2之间每隔num3
    * * 1 1 1     1月1号和一月的每个周一
    * * * * *    每分钟
    0 * * * *     每小时
    0 0 * * *    每天
    0 0 1 * *    每月1号
    05 * * * *    每小时整点过5分
    05 02 * * *    每天的2:05am
    30 08 01 * *    每月1号早上8:30
    00 07 25 12 *    12月25日7:00am
    30 16 * * 5        每个周五的4:30pm
    */5 * * * *        每隔5分钟
    0 0 1 jan 0        1月1日午夜和每周日
    */10 9-17 1,15 * *    在每月1号和15号9:am-5:00pm间每隔10分钟

分钟:0-59    小时:0-23    日:1-31    月:1-12(可以用名称)    周0-7(0和7都表示周日,可以用名称)

注意:在定时任务中,%有自己的含义,所以在定时任务中调用脚本时,%前要加转义符\

crontab -l        ##显示当前用户的定期任务列表
crontab -r        ##删除当前用户的定期任务
crontab -u 用户名    ##以该身份执行定期任务操作

crontab任务的记录文件 /var/spool/cron/[username]

每当有一个用户创建crontab任务,就会在/var/spool/cron中创建一个以该用户为名的文件,
其中的内容就是任务的内容。

当删除crontab任务后,对应在/var/spool/cron中以该用户为名的文件也会被删除。

每个用户只能建立一个/var/spool/cron/[username]文件,但可以在文件中加入多个定时任务。

crontab的用户限制:
如果太多用户可以被允许使用crontab命令的话,系统负载会过大,需要进行限制

/etc/cron.deny    ###用户黑名单
/etc/cron.allow    ###用户白名单(这个默认不存在,需要的话自行创建)

#####用户黑名单:禁止使用crontab的名单
#####用户白名单:允许使用crontab的名单
#####当/etc/cron.allow出现时/etc/cron.deny自动失效

你可能感兴趣的:(Linux定时任务)