at & crontab命令

at命令

功能
    at命令用于执行未来某个时间点的某一次任务,任务的执行结果为以邮件的形式发送给用户

命令格式
    at [OPTION] TIME

常用选项[OPTION]
    -l 查看等待运行的任务
    atq 命令也可用户查看等待运行的任务
    -f /path/from/file 从指定文件中读取作业任务,而不再交互式输入
    -d # 删除指定的作业任务
    -c 查看指定作业的具体内容
    -q QUEUE 指明队列

TIME
    HH:MM[YYYY-mm-dd]
    noon,mdinight,teatime(下午4点)
    tomorrow
    now+#(minutes,hours,days,weeks)


使用示例

 一分钟之后执行mkdir /test
[root@localhost ~]# at now+1minutes
at> mkdir /test
at> <EOT>
job 6 at Mon Jun 11 13:39:00 2018

查看等待运行的作业
[root@localhost ~]# at -l
8    Mon Jun 11 13:50:00 2018 a root
[root@localhost ~]# atq
8    Mon Jun 11 13:50:00 2018 a root

查看作业的具体内容
[root@localhost ~]# at -c 8
#!/bin/sh
# atrun uid=0 gid=0
# mail root 0
umask 22
XDG_SESSION_ID=1235; export XDG_SESSION_ID
HOSTNAME=localhost.localdomain; export HOSTNAME
SHELL=/bin/bash; export SHELL
HISTSIZE=1000; export HISTSIZE
SSH_CLIENT=192.168.1.102\ 57385\ 22; export SSH_CLIENT
SSH_TTY=/dev/pts/0; export SSH_TTY
USER=root; export USER
LS_COLORS=rs=0:di=01\;34:ln=01\;36:mh=00:pi=40\;33:so=01\;35:do=01\;35:bd=40\;33\;01:cd=40\;33\;01:or=40\;31\;01:mi=01\;05\;37\;41:su=37\;41:sg=30\;43:ca=30\;41:tw=30\;42:ow=34\;42:st=37\;44:ex=01\;32:\*.tar=01\;31:\*.tgz=01\;31:\*.arc=01\;31:\*.arj=01\;31:\*.taz=01\;31:\*.lha=01\;31:\*.lz4=01\;31:\*.lzh=01\;31:\*.lzma=01\;31:\*.tlz=01\;31:\*.txz=01\;31:\*.tzo=01\;31:\*.t7z=01\;31:\*.zip=01\;31:\*.z=01\;31:\*.Z=01\;31:\*.dz=01\;31:\*.gz=01\;31:\*.lrz=01\;31:\*.lz=01\;31:\*.lzo=01\;31:\*.xz=01\;31:\*.bz2=01\;31:\*.bz=01\;31:\*.tbz=01\;31:\*.tbz2=01\;31:\*.tz=01\;31:\*.deb=01\;31:\*.rpm=01\;31:\*.jar=01\;31:\*.war=01\;31:\*.ear=01\;31:\*.sar=01\;31:\*.rar=01\;31:\*.alz=01\;31:\*.ace=01\;31:\*.zoo=01\;31:\*.cpio=01\;31:\*.7z=01\;31:\*.rz=01\;31:\*.cab=01\;31:\*.jpg=01\;35:\*.jpeg=01\;35:\*.gif=01\;35:\*.bmp=01\;35:\*.pbm=01\;35:\*.pgm=01\;35:\*.ppm=01\;35:\*.tga=01\;35:\*.xbm=01\;35:\*.xpm=01\;35:\*.tif=01\;35:\*.tiff=01\;35:\*.png=01\;35:\*.svg=01\;35:\*.svgz=01\;35:\*.mng=01\;35:\*.pcx=01\;35:\*.mov=01\;35:\*.mpg=01\;35:\*.mpeg=01\;35:\*.m2v=01\;35:\*.mkv=01\;35:\*.webm=01\;35:\*.ogm=01\;35:\*.mp4=01\;35:\*.m4v=01\;35:\*.mp4v=01\;35:\*.vob=01\;35:\*.qt=01\;35:\*.nuv=01\;35:\*.wmv=01\;35:\*.asf=01\;35:\*.rm=01\;35:\*.rmvb=01\;35:\*.flc=01\;35:\*.avi=01\;35:\*.fli=01\;35:\*.flv=01\;35:\*.gl=01\;35:\*.dl=01\;35:\*.xcf=01\;35:\*.xwd=01\;35:\*.yuv=01\;35:\*.cgm=01\;35:\*.emf=01\;35:\*.axv=01\;35:\*.anx=01\;35:\*.ogv=01\;35:\*.ogx=01\;35:\*.aac=01\;36:\*.au=01\;36:\*.flac=01\;36:\*.mid=01\;36:\*.midi=01\;36:\*.mka=01\;36:\*.mp3=01\;36:\*.mpc=01\;36:\*.ogg=01\;36:\*.ra=01\;36:\*.wav=01\;36:\*.axa=01\;36:\*.oga=01\;36:\*.spx=01\;36:\*.xspf=01\;36:; export LS_COLORS
MAIL=/var/spool/mail/root; export MAIL
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin; export PATH
PWD=/root; export PWD
LANG=en_US.UTF-8; export LANG
HISTCONTROL=ignoredups; export HISTCONTROL
SHLVL=1; export SHLVL
HOME=/root; export HOME
LOGNAME=root; export LOGNAME
SSH_CONNECTION=192.168.1.102\ 57385\ 192.168.1.107\ 22; export SSH_CONNECTION
LESSOPEN=\|\|/usr/bin/lesspipe.sh\ %s; export LESSOPEN
XDG_RUNTIME_DIR=/run/user/0; export XDG_RUNTIME_DIR
cd /root || {
     echo 'Execution directory inaccessible' >&2
     exit 1
}
${SHELL:-/bin/sh} << 'marcinDELIMITER50548e49'
mkdir /test

marcinDELIMITER50548e49


删除指定的作业
[root@localhost ~]# at -d 8

crontab命令

功能
    用于设定系统中周期性执行的任务计划,任务计划分为两类

    系统cron任务:
        主要用于实现系统自身维护,配置系统cron任务需要手动编辑:/etc/crontab文件
    用户cron任务:
        用于实现各用户的cron任务,用crontab命令实现


系统cron任务配置文件  /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

    注意:
        每一行定义一个周期性任务
        *  *  *  *  * :定义周期性时间
        user-name    :运行周期性任务的用户
        command to be executed :定义任务
        此处的环境变量不同于用户登录后获得的环境变量,因此,建议使用命令的绝对路径.
        执行结果邮件发送给MAILTO指定的用户    


用户cron配置文件  /var/spool/cron/USERNAME
        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
        # |  |  |  |  |
        # *  *  *  *  *  command to be executed


时间表示法
    1,特定值
        给定时间点有效取值范围内的值
        注意:day of week 和day of month 一般不同时使用
    2,*
        给定时间点上有效取值范围内的所有值:表“每”
    3,离散取值
        在时间点上使用逗号分隔的多个值
        #,#,#
    4,连续取值
        在时间点上使用-链接开头和结束
        #-#
    5 在指定时间点上定义步长 /#
        */# #及步长

        注意:给定的时间不能被步长整除时,其意义将不复存在

    示例
        3 * * * * 每小时执行一次,每小时的第3分钟
        3 4 * * 5 每周执行一次,每周5的4点3分
        5 6 7 * * 每月执行一次,每月的7号6点5分
        7 8 9 10 * 每年执行一次,每年的10月9号8点7分
        9 8 * * 3,7 每周三周日8点9分
        6 8,20 * * 3,7 每周三周日的8点和20点
        0 9-18 * * 1-5 周一到周五的9点到18点
        */5 * * * * 每4分钟执行一次某任务

命令格式

    crontab [-u user] [-l | -r | -e] [-i] [-s]
        -e 表示编辑任务
        -l 列出所有任务
        -r 移除所有任务,即删除/var/spool/cron/USERNAME文件
        -i 在使用-r选项是提示用户确认
        -u user   root用户可为其他用户管理计划任务
    注意:定义COMMAND时,如果命令需要用到%,需要对其转义,但放置于单引号中的%不用转义
    运行结果以邮件形式通知当前用户,如果拒绝接受邮件
        *  *  *  *  * COMMAND >/dev/null
        *  *  *  *  * COMMAND &>/dev/null


使用示例

    每周三凌晨三,五点10分执行某个脚本输出当前时间,时间格式为2017-12-28 10:00:00
    [root@localhost ~]# crontab -e   
    10 3,5 * * 3  /usr/bin/date +%F\ %T

    [root@localhost ~]# crontab -l
    10 3,5 * * 3  /usr/bin/date +%F\ %T

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/100864

(0)
dyzhoudyzhou
上一篇 2018-06-11
下一篇 2018-06-12

相关推荐