at、cron周期性任务计划详解

一、一次性任务计划:atbatch

    1.batch系统自行选择在系统资源较空闲的时间去执行指定的任务

用法类似于at,但只要提交所需执行的命令

    2.at:指定未来的某时间点执行一次某任务

        (1)用法格式:at   [OPTION]...   TIME

               1)TIME格式:

HH:MM [YYYY-mm-dd]:直接指明具体的时间

noon,midnight, teatime:中午、午夜、下午茶时间(下午四点左右)

tomorrow:明天

now+#:现在之后的多久,可使用表示单位为minutes, hours, days, OR weeks

               2)OPTION常用选项

 -l:查看作业队列,相当于atq

 -f /PATH/FROM/SOMEFILE:从指定文件中读取作业任务,不用交互式输入;

 -d  #:删除指定的作业,相当于atrm

 -c  #:查看指定作业的具体内容;

 -q QUEUE:指明队列;

               3)Ctrl+D :提交一次性任务,退出at

        (2)示例:

               1)创建一次性任务,并查看任务列表

                     at的作业有队列,用单个字母表示,默认都使用a队列;

                     一次性任务在执行完成后消失,不再在队列中显示,执行结果邮件发送给MAILTO指定的用户

wKioL1Z3-8OTgE5sAAAlubTkhvg037.png

               2)查看单个任务的具体内容

指定任务的队列号,可查看其详细信息,用到的变量,命令,执行时间用户等信息

[root@localhost ~]# at -c 7

#!/bin/sh

# atrun uid=0 gid=0

# mail root 0

umask 22

HOSTNAME=localhost.localdomain; export HOSTNAME

SHELL=/bin/bash; export SHELL

HISTSIZE=1000; export HISTSIZE

SSH_CLIENT=172.16.250.39\ 50177\ 22; export SSH_CLIENT

QTDIR=/usr/lib64/qt-3.3; export QTDIR

QTINC=/usr/lib64/qt-3.3/include; export QTINC

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:\*.arj=01\;31:\*.taz=01\;31:\*.lzh=01\;31:\*.lzma=01\;31:\*.tlz=01\;31:\*.txz=01\;31:\*.zip=01\;31:\*.z=01\;31:\*.Z=01\;31:\*.dz=01\;31:\*.gz=01\;31:\*.lz=01\;31:\*.xz=01\;31:\*.bz2=01\;31:\*.tbz=01\;31:\*.tbz2=01\;31:\*.bz=01\;31:\*.tz=01\;31:\*.deb=01\;31:\*.rpm=01\;31:\*.jar=01\;31:\*.rar=01\;31:\*.ace=01\;31:\*.zoo=01\;31:\*.cpio=01\;31:\*.7z=01\;31:\*.rz=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:\*.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/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin; export PATH

PWD=/root; export PWD

LANG=en_US.UTF-8; export LANG

SSH_ASKPASS=/usr/libexec/openssh/gnome-ssh-askpass; export SSH_ASKPASS

HISTCONTROL=ignoredups; export HISTCONTROL

SHLVL=1; export SHLVL

HOME=/root; export HOME

LOGNAME=root; export LOGNAME

QTLIB=/usr/lib64/qt-3.3/lib; export QTLIB

CVS_RSH=ssh; export CVS_RSH

SSH_CONNECTION=172.16.250.39\ 50177\ 172.16.249.161\ 22; export SSH_CONNECTION

LESSOPEN=\|\|/usr/bin/lesspipe.sh\ %s; export LESSOPEN

G_BROKEN_FILENAMES=1; export G_BROKEN_FILENAMES

cd /root || {

 echo 'Execution directory inaccessible' >&2

 exit 1

}

${SHELL:-/bin/sh} << 'marcinDELIMITER0fed9e36'

cat /etc/passed

marcinDELIMITER0fed9e36

               3)删除指定任务(对比)

wKiom1Z3-7ST6W7aAAAPCBfKz_c452.png

 

 

 

 

 

二、周期性任务计划:cron(crontabanacron)

    1.服务程序:cronle

cronle 67)主程序包,提供crond守护及相关辅助工具

确保crond守护进程(daemon)处于运行状态:

CentOS 7:systemctl  status  crond.service

结果Active: active (running) ... …

CentOS 6:service  crond  status

... is running.

    2.提交cron方式

           (1)专用配置文件,有固定格式

           (2)不建议使用文本编辑器直接编辑此文件;要使用crontab命令;

    3.cron任务分类:

         (1)系统cron任务:主要用于实现系统自身的维护;

         系统cron的配置格式:/etc/crontabSHELL=/bin/bash

wKiom1Z3-7TT2Y0nAAArkIG8vIE328.png

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

 注释:

     1)每一行定义一个周期性任务,共7个字段;

  *  *  *  *  * : 定义周期性时间,分时日月周

  user-name : 运行任务的用户身份

  command to be executed:任务

     2)环境变量不同于用户登录后获得的环境,建议命令使用绝对路径,或者自定义PATH环境变量;

     3)执行结果邮件发送给MAILTO指定的用户

         (2)用户cron任务:crontab命令

        用户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)每行定义一个cron任务,共6个字段;

              2)环境变量不同于用户登录后获得的环境,建议命令使用绝对路径,或者自定义PATH环境变量;

              3)邮件发送给当前用户;

    4.*  *  *  *  *时间表示法

       (1)表示方法:特定值  *  ,   -  /

               1)特定值给定时间点有效取值范围内的值;

          注意:day of week day of month一般不同时使用;

               2)*  给定时间点上有效取值范围内的所有值;表“每..”

               3) #,#,#离散取值,  在时间点上使用逗号分隔的多个值;        

               4)#-#连续取值:- 在时间点上使用-连接开头和结束      

               5)/#在指定时间点上,定义步长: /#:#即步长;

         注释:

               1)指定的时间点不能被步长整除时,其意义将不复存在;

               2)最小时间单位为“分钟”,想完成“秒”级任务,得需要额外借助于其它机制;

               3)定义成每分钟任务:而在利用脚本实现在每分钟之内,循环执行多次;

       (2)示例

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:每周三和周日;

0 8,20 * * 3,7:

0 9-18 * * 1-5:

*/5 * * * *:每5分钟执行一次某任务;

    5.crontab命令:

  crontab [-u user] [-l | -r | -e] [-i]

-e:编辑任务;

-l:列出所有任务;

-r:移除所有任务;即删除/var/spool/cron/USERNAME文件;

-i:在使用-r选项移除所有任务时提示用户确认;

-u user:root用户可为指定用户管理cron任务;                                        

         注释:

(1)运行结果以邮件通知给当前用户;拒绝接收邮件

COMMAND > /dev/null   将正确结果导入到数据黑洞,只报告错误结果

COMMAND &> /dev/null   将所有结果都导入数据黑洞

(2)定义COMMAND时,如果命令需要用到%要对其转意;但放置于单引号中的%转意

    6.如果期望某时间因故未能按时执行,下次开机后无论是否到了相应时间点都要执行一次,可使用anacron实现;

你可能感兴趣的:(crontab,batch,anacron,at)