一、总结Linux系统上的任务计划(at、crontab)的详细使用方法;
Linux上的任务计划:
任务计划分为:
在未来时间点一次性执行某任务,实现目标命令:at batch
在未来时间内周期性执行某任务,crontab
电子邮件服务:
协议:SMTP:简单邮件传输协议
/var/spool/mail/USERNAME
登录用户的默认邮件目录
POP3:邮局协议
imap4:互联网访问协议
mail命令的使用:
centos7下为mailx;
发送邮件例:
#mail root@localhost \\-s 可代替邮件主题subject,直接回车输入
正文;
Subject:Hi 主题
How are you 正文
How old you 正文
Ctrl+D 邮件发送
发送给localhost 本地主机;
#mail 查看邮件信息
& number 查看某封邮件
输入重定向发送邮件:
mail -s "fstab" root@localhost < /etc/fstab \\输入重定向<;
cat /etc/fstab | mail -s 'fstab.new' root @localhost
MUA:mail命令的简单使用
mail命令:
mail:进入交互式收发邮件接口;
使用mail -s 指明subject
mail -s
at命令的使用:
一次性执行某任务;
Ctrl+d 提交作业
承载未来时间点运行的某作业:
支持使用作业队列:
默认为a队列;
at [option]... TIME
TIME:
(1)绝对时间 HH:MM;tomorrow;
(2)相对时间 now+时间单位 minute hour;
(3)模糊时间 midnight noon teatime
at -l
at now+3minute
常用选项:
-q: at作业队列;实现相关队列的管理;
-f: 读取文件中的作业命令;可编辑一个文件后使用文件名进行读取
作业,例:at -f at.list 15:15-->读取at.list文件中的命令在15:15分
进行作业执行;
-l: 查看作业队列待运行的作业列表=atq命令
-c: 查看待运行作业的内容;
-d: 删除指定作业;相当于atrm
batch:相似与at,但是不需要指定时间,时间由系统自行选择在资源较
为空闲时,运行指定的任务。
crontab:周期性任务计划;
守护进程:crond,在后台出于运行状态,进行监控。
crontab -e 编辑任务,打开当前shell回话的默认编辑器来编辑cron任
务表;
crontab -l 查看任务 list
-u user:不是管理自己的cron任务,而是指定的目标用户,只
有管理员可操作,不指定用户就代表管理自己的任务。
-r 移除所有任务
周期性任务有两类:
1.系统cron任务:没有默认运行用户身份,需要额外指定运行者;
在/etc/crontab vim打开进行编辑操作;
七个字段组成: 前5个字段来定义时间点
user-name:以哪个用户的身份运行任务:
command to be executed:要运行的任务
2.用户cron任务:由某个用户所提交,默认以提交者的身份运行,
无需额外指定运行者;
在/var/spool/cron/USERNAME vim命令打开编辑;
注: 普通用户不建议拥有此权限查看这个文件;
建议用crontab命令让用户管理此文件;
前五个为时间点,最后一个为运行任务本身
5个时间点:
分钟:有效范围为0-59minute
小时:0-23:
日 :1-31,不是每个月都有31号的。
月 :1-12,
周几:0-7,0和7都表示周日;
注意:几月几号与周几,不建议同时使用;
例:6 * * * * 表示:每月每天每小时的第六分钟
时间点表示法:
*:对应时间点有效取值范围内的每个时间点
用数字表示既定时间点;
-:一个特定的连续时间范围,3-7=3到7分钟
,: 一个离散的时间点,3,5,7=第三和第五和第七分钟;
/#:表示有效时间范围内每多少时间;用于指定频率;
1-30/4=每一个小时的1-30分钟每4分钟运行一次;*/4=每4小时运行一次
,*表示小时的话;
5 */3 * * * /bin/echo "howdy" 每三个小时运行echo查
看howdy;要给既定的分钟才可实现,不然意义不同为三小时以后而不是
每三小时;
思考:
如果想实现每8分钟运行一次某任务
如果想实现每10秒钟运行一次某任务
了解sleep命令;
cron补充性的工具:anacron
在cron一段时间内没有运行规定时间点执行任务的时候,立即执行此任务
一次。
(1)如何禁止crontab运行发送邮件给管理员;
COMMAND > /dev/null
COMMAND &> /dev/null
(2)对于crontab文件来讲:%有特殊功能,如果命令中出现%。要记得转
义,或者用单引号对其引用。
(3)crontab的PATH变量与用户的变量不完全相同,所以,建议在cron中
的任务要使用绝对路径。
题目:
1、每周一到周六的凌晨3点20分,运行cp命令对/etc/目录进行归档另存,存储位置为/backups/etc-YYYY-MM-DD
[root@localhost ~]#mkdir /backups/ [root@localhost ~]#contab -e 20 3 * * */1-6 /bin/cp /etc/ /backup/etc-$( date +\%Y-\%m-\%d )
2、每周日凌晨2点30分,运行cp命令对/etc/fstab文件进行备份,存储位置为/backup/fstab-YYYY-MM-DD-hh-mm-ss;
[root@localhost ~]#mkdir /backup/fstab [root@localhost ~]#crontab -e 30 2 * * */0 /bin/cp /etc/fstab /backup/fstab-$( date +\%Y-\%m-\%d-\%H-\%M-\%S )
3、每天晚上12点,取得/proc/meminfo文件中所有以S或M开头的行,追加至/statistics/meminfo.txt文件中,且每天的消息之前,要加上类似===============分隔线;
[root@localhost ~]#mkdir /statistics/meminfo.txt [root@localhost ~]#crontab -e 0 0 * * * /bin/echo "=================" >> statistics/meminfo.txt && /usr/bin/egrep '^(S|M)' /proc/meminfo >> statistics/meminfo.txt