linux任务计划

一、任务计划分为两类

    一次性:
        at, batch
    周期性:
        vixie cron: crontab

    一次性任务执行:
    at now+3min
    at 11:30
        noon, midnight, teatime

    at TIME
    at>  命令/脚本
    Ctrl+d: 提交任务

    at -l = atq     列出等待执行的任务

    执行结果以邮件方式发送给任务发起者;
    查看邮件:
    # mail   显示所有列表
        & #   加数字显示单个
        & q  退出显示

    删除尚未执行的任务:
        at -d JOB_ID = atrm JOB_ID

    at -f /PATH/TO/AT_SCRIPT TIME  调用文件中命令列表    at脚本

at任务实际应用举例,修改远程服务器IP前  设定任务 以防修改IP后链接丢失 如修改IP无问题再取消任务


    周期性任务:
        vixie cron
        crond: daemon
            守护进程: daemon
                /etc/init.d/

        uptime  系统资源状态查看


    crond: 配置文件
        crontab:
            系统cron:/etc/crontab

            用户cron: /var/spool/cron/USERNAME

        1、运行者身份;
            用户cron: 定义者
                6个字段,与系统cron相比,无需指定用户身份
            系统cron: 在配置文件指定
                7个字段

# 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 4 * * * root cat /etc/fstab  每天4时3分      周几不与月日同时用
                通配符:
                    *:相应时间点的所有有效取值
                    ,: 离散取值,   3,18,33,48 * * * * root cat /etc/fstab
                    /: 定义指定取值范围内的频率, 例如:*/3 * * * * root cat /etc/fstab      */3 即每三分钟   17 */3 * * * root cat /etc/fstab   每三小时的第17分执行一次
                    -: 连续取值:17 8-20/3 * * * root cat /etc/fstab

                    3 18 * * 2,5
                    7 2 */2 * * root tar -Jcf /backup/etc-`date '+%F'`.tar.xz /etc/*

                    2,32 8-18/3 * * 1-5


        2、PATH
            /bin:/sbin:/usr/bin:/usr/sbin
                如果是命令:使用绝对路径
                如果是脚本:在脚本自行定义PATH=

        3、拒收邮件
            方法一:
                MAILTO=‘’空即不发
            方法二:
                &> /dev/null    常用方法

 


    用户cron的定义: 位于/var/spool/cron/目录下
        crontab
            -e    与直接vm相比此方法可提示语法错误
            -r: 移除配置文件,会删除所有任务;
            -l: 列出周期性任务
            -u USERNAME
                crontab -e -u hadoop

 

crontab, process, function, sed, awk, boot, grub, kernel

 

以秒单位执行任务计划:
方法1:
* * * * * /usr/bin/unison webdata ;sleep 30;/usr/bin/unison webdata  或者如下
* * * * * sleep 30 && /usr/bin/unison webdata

方法2:
* * * * * for i in 0 1 2; do some_job && sleep 15; done; some_job
    0: 15,
    15:30
    30: 45
    45:

* * * * * for i in {1..5}; do some_job && sleep 10; done; some_job


注意:使用%时要加反斜线。例如:
1 2 3 * * touch ~/file_$(date +\%Y\%m\%d).txt

但使用单引号后也可以不再使用反斜线,例如:
1 2 3 * * touch ~/file_$(date '+%Y%m%d').txt


禁止在自动任务执行后发送电子邮件:

将输出结果重定向至/dev/null:
>/dev/null 2>&1   或
&> /dev/null

在文件的开始部分加入命令来关闭所有命令的邮件输出:
MAILTO=""


anacron: 红帽5  检查时间已过但未执行的任务并在合适的时间重新执行。

cronie:  红帽6的机制

你可能感兴趣的:(linux,计划,周期性)