一、一次性任务计划:at、batch
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 #:查看指定作业的具体内容; -qQUEUE:指明队列; 3)Ctrl+D :提交一次性任务,退出at (2)示例: 1)创建一次性任务,并查看任务列表 at的作业有队列,用单个字母表示,默认都使用a队列; 一次性任务在执行完成后消失,不再在队列中显示,执行结果邮件发送给MAILTO指定的用户 2)查看单个任务的具体内容 指定任务的队列号,可查看其详细信息,用到的变量,命令,执行时间用户等信息 [iyunv@localhost~]# at -c 7 #!/bin/sh #atrun uid=0 gid=0 #mail root 0 umask22 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)删除指定任务(对比)
二、周期性任务计划:cron(crontab、anacron) 1.服务程序:cronle cronle (6、7)主程序包,提供crond守护及相关辅助工具 确保crond守护进程(daemon)处于运行状态: CentOS 7:systemctl status crond.service 结果Active:active (running) ... … CentOS6:service crond status ...is running. 2.提交cron方式 (1)专用配置文件,有固定格式 (2)不建议使用文本编辑器直接编辑此文件;要使用crontab命令; 3.cron任务分类: (1)系统cron任务:主要用于实现系统自身的维护; 系统cron的配置格式:/etc/crontabSHELL=/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) ORjan,feb,mar,apr ... #| | | | .---- day of week (0 - 6) (Sunday=0 or 7) ORsun,mon,tue,wed,thu,fri,sat #| | | | | #* * * * * user-name command to be executed 注释: 1)每一行定义一个周期性任务,共7个字段; * * * * * : 定义周期性时间,分时日月周 user-name: 运行任务的用户身份 commandto 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) ORjan,feb,mar,apr ... #| | | | .---- day of week (0 - 6) (Sunday=0 or 7) ORsun,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分钟; 34 * * 5:每周执行一次;每周5的4点3分; 56 7 * *:每月执行一次;每月的7号的6点5分; 78 9 10 *:每年执行一次;每年的10月9号8点7分; 98 * * 3,7:每周三和周日; 08,20 * * 3,7: 09-18 * * 1-5: */5 * * * *:每5分钟执行一次某任务; 5.crontab命令: crontab [-u user] [-l | -r | -e] [-i] -e:编辑任务; -l:列出所有任务; -r:移除所有任务;即删除/var/spool/cron/USERNAME文件; -i:在使用-r选项移除所有任务时提示用户确认; -uuser:root用户可为指定用户管理cron任务; 注释: (1)运行结果以邮件通知给当前用户;拒绝接收邮件 COMMAND > /dev/null 将正确结果导入到数据黑洞,只报告错误结果 COMMAND &> /dev/null 将所有结果都导入数据黑洞 (2)定义COMMAND时,如果命令需要用到%要对其转意;但放置于单引号中的%转意 6.如果期望某时间因故未能按时执行,下次开机后无论是否到了相应时间点都要执行一次,可使用anacron实现;
|