Linux任务计划、周期性任务总结

一、简述
1.linux任务计划分为未来某一时间点任务计划和未来周期性任务计划。
2.at、batch:未来某一时间点任务计划
3.crontab :未来周期性计划
4.执行结果:任务执行后给用户发送邮件,
# netstat -tnlp邮件端口:25
5.本地电子邮件服务
(1)smtp
(2)pop3
(3)imap
6.mail命令
centOS7 mail - send and receive Internet mail
发送邮件3种方法
(1)交互式输出,.(点)单独成行,表示正文结束;ctl+d也可提交;
mailx -s ‘hello,fun’ username@hostname
在这里插入图片描述
(2)通过输入重定向
[root@master tmp]# mailx -s ‘fun?’ tom@master < /tmp/cdx
(3)通过管道
[root@master tmp]# cat cdx | mailx -s ‘fun?’ tom@master
查看tom邮箱
7.at命令,at作业有队列,用单个字母表示,默认从字母a开始。
at [option] time
time:
hh:mm [yyyy-mm-dd]
tomorrow
now+#
unit:minutes,hours,days,weeks
例:
交互式输入,ctl+d结束
在这里插入图片描述
常用选项:
-l:查看作业队列,等价于atq
-f:at -f /PATH/FROM/SOMEFILE time:从指定文件中读取作业任务,而不用再交互式输入;
-d:删除指定的作业,相当于atrm;at -d xx = atrm
-c:查看指定作业的具体内容;at -c xx
-q QUEUE:指明队列;at -q [a-z] time
在这里插入图片描述
注意:作业执行结果是以邮件发送给提交作业的用户。
8.batch命令:
batch会让系统自行选择在系统资源较空闲的时间去执行指定的任务;
二、周期性任务计划crond
1.确保crond的(daemon)守护进程处于运行状态
centOS7:systemctl status crond.service
Active: active (running)
2.周期性任务crond不同于at命令,它有固定配置文件及格式,建议不要手动vim去编辑,使用专有命令crontab编辑(报错有提示)
/etc/cron.deny 该文件中所列用户不允许使用crontab命令
/etc/cron.allow 该文件中所列用户允许使用crontab命令
/var/spool/cron/ 所有用户crontab文件存放的目录,以用户名命名
3.crond任务分两类:
(1)系统性crond任务:实现系统自身维护
手动编辑:系统任务默认配置文件保存在/etc/crontab文件。
(2)用户crond任务
crontab命令,配置文件位于:/var/spool/cron/username(同用户名)
4.crontab命令
crontab [-u user] [-l] [-e] [-i] [-r]
-l:查看所有任务;
-e:编辑任务;
-r:删除用户的所有任务,即删除/var/spool/cron/username文件
-i:使用-r时,提示用户确认;
-u user:root用户可以指定用户管理cron任务:

注意;运行结果以邮件通知MAILO指定的用户,如果拒绝接受邮件(一定要确认任务执行成功,负责有风险!!!)
 	(1)command   > /dev/null   命令执行成功情况
 	(2)command  &> /dev/null    命令执行失败或者成功情况
 	(3)MAILTO=" ",mailto值为空,表示不发送执行任务邮件
注意:定义command命令时,如果命令用到%,需要对其转义,但放到单引号中的%不用转义。

5.系统cron的配置格式:/etc/crontab
在这里插入图片描述
注意:
(1)每一行定义一个周期性任务,共7个字段
* * * * * 定义时间周期
username 运行任务的用户身份
command to be executed:命令任务
(2)#号表示注释,不执行行
(3)此处的环境变量和用户登录后的环境变量不同,因此建议使用绝对路径,或者自定义path环境变量
(4)运行结果以邮件通知MAILO指定的用户,此处是root用户
(5)第四行加HOME变量指定在执行命令或者脚本时使用的主目录,HOME=/
6.用户cron配置格式:/var/spool/cron/username
在这里插入图片描述
注意:
(1)每行定义一个cron周期任务,共6个字段
(2)此处环境变量不同于用户登录后获得的环境,故建议使用绝对命令,或者自定义path环境变量
(3)邮件发送给当前用户
(4)第四行加HOME变量指定在执行命令或者脚本时使用的主目录,例HOME=/

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

  注意:
  	(1)指定时间点不能被步长整除时,其意义不存在
  	(2)最小时间单位为“分钟”,想完成“秒”级任务,得需要额外借助其它机制实现:
  			定义成每分钟任务:而在利用脚本实现每分钟之内,循环执行多次
 

  	例:
  	 (1)3 * * * * :每小时执行一次,每小时的第3分钟
  	 (2)3 4 * **:每天执行一次,每天的4点3分
  	 (3)3 4 * * 5:每周执行一次,每周5的4点3分
  	  (4)7 8 9 10 * :每年执行一次,每年的10月9号8点7分
  	  (5)2 4 * * 2,4:每周2和周4的4点2分
  	   (6)0  9-18 * * 1-5:每周1到每周5的9点到18点
  	   (7)*/2 * * * *:每2分钟执行一次某任务
  	   (8)*/7 * * * *:   无意义,不执行	
  	   (9)* * * * * :每分钟,也可写成 */1 * * * *

8.某任务在指定的时间因关机未能执行,下次开机会不会自动执行?
不会!.
如果期望某时间因故未能按时执行,下次开机后无论是否到了相应时间点都要执行一次,可使用anacron实现;

9.练习
(1)每12小时备份一次/etc目录至/backups目录中,保存文件 名称格式为“etc-yyyy-mm-dd-hh.tar.xz”
(2)每周2、4、7备份/var/log/secure文件至/logs目录中,文件名格式为“secure-yyyymmdd”;
(3)每两小时取出当前系统/proc/meminfo文件中以S或M开头的行信息追加至/tmp/meminfo.txt文件中;

					* */12 * * * root cp -r /etc/ /backups/etc-$(date +"%F"-"%H").tar.xz
					* * * * 2,4,7 root cp /var/log/secure /logs/secure-$(date +"%Y""%m""%d")
					* */2 * * * root grep -E "^(S|M)" /proc/meminfo >> /tmp/meminfo
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值