Linux任务计划、周期性任务执行
未来的某时间点执行一次某任务:at,batch
周期性运行某任务:crontab
执行的结果会通过邮件发送给用户
netstat -tnlp 可以查看是否开启邮件服务的端口
ss -tnl 相同的效果
本地电子邮件服务:
smtp:simple mail transmission Protocol 简单邮件传输协议
pop3:post office Protocol
imap4: internet mail access Protocol
SMTP、POP3、IMAP4,它们都隶属于TCP/IP协议簇,默认状态下,分别通过TCP端口25、110和143建立连接。下面分别对其进行简单介绍。
mail 命令:
send and receive Internet mail
MUA:mail user agent 用户收发邮件的工具程序
mail [-s ‘SUBJECT’] nsername [@hostname]
邮件正文的生成:
(1)交互式输入;. 单独成行可以表现正文结束;Ctrl+d提交亦可
(2)通过输入重定向
(3)通过管道;
at命令:
at [OPTION]…TIME
TIME:
精确时间表示法:
在下一个HH:MM时间执行
在YYYY-mm-dd时间执行
模糊时间表示法:
noon:中午
midnight:午夜
teatime:下午茶时间
tomorrow:明早
相对时间表示法
now+#
UNIT:minutes,hours,days,weeks
at命令输入完成以后使用CTRL+d提交
at 的作业有队列,用单个字母表示,默认都是使用a队列
常用选项:
-l:查看作业队列,相当于atq
-f:/path/from/somefile:从指定文件钟读取作业任务,而不用交互式提交
-d:删除指定的作业,相当于atrm
-c:查看指定作业的具体内容
-q queue:指明队列
注意:作业执行结果是以邮件发送给提交作业的用户
batch命令:与at命令使用方式相同;唯一的区别是不能指定执行的时间,会让系统自行选择在系统资源较为空闲的时间去执行指定的任务;
使用at命令执行脚本在使用别的命令时,执行的环境是不同的,最好只用该命令的全路径来写入
周期性任务计划:crontab
服务程序:
cronie:主程序包,提供了crond的守护进程及相关辅助工具;
确保crond守护进程确保为(daemon)处于运行状态
使用systemctl status crond.service查看状态Active:active(running)
cron任务分为两类
系统cron任务:主要用于实现系统自身的维护
cron任务配置需要手动编辑:/etc/crontab
用户cron任务:
配置文件:/var/spool/cron/USERNAME
命令:crontab
时间表示法:
(1)特定值
给定时间点有效取值范围
注意:day of week 和 day of month一般不同时使用
(2)*
给定时间点上有效取值范围内的值;表“每…”
3 * * * * :表示每小时的第三分钟执行一次
(3)离散取值:","
在时间点上使用都好分隔的多个值
#,#,#
(4)连续取值:-
在时间点上使用-连接开头和结束
(5)在指定时间点上,定义步长
/#:#即为步长
指定的时间点不能被步长整除时,其意义将不复存在
最小时间单位为:为分钟
crontab命令:
-e:编辑任务
-l:列出所有任务
-r:移除所有任务;即删除。/var/spool/cron/USERNAME文件
-i:交互式在使用-r选项移除所有任务时提示用户确认
-u:root用户可为指定用户管理crond用户
注意:运行结果会以邮件通知给当前用户,如果拒绝接收邮件;
(1)COMMAND> /dev/null 将执行结果发送给null就不会发送邮件
定义COMMAND时,如果命令需要用到%,需要对其转移;但是放置于单引号中的%不用转义