什么是计划任务?
后台运行,在预定时间自动执行预设任务。
检查crond服务相关软件包
1 | [root@localhost ~]# rpm -qa cron* |
出现如上信息说明已安装!
检查crond服务是否运行
1 | systemctl status crond |
1 | [root@localhost ~]# systemctl status crond |
running
说明正在运行
crond定时任务服务应用
Cron是Linux系统中以后台
进程模式周期性
执行命令或指定程序任务的服务软件名。
Linux系统启动后,cron软件便会启动,对应进程名为crond。
默认定期(每分钟)检查系统是否有需要执行的任务计划,如果有,则按计划执行。
cron
定时任务的名字
crond
定时任务进程名
crontab
管理定会任务命令
为什么要使用定时任务?
- 数据库定时备份
- 夜间网站数据(用户上传、文件、图片、程序)备份
- 备份时间等待长
- 任务重复性高
利用Linux的定时任务cron工具可以解决重复性、周期性、自动备份等运维工作。
Linux下定时任务软件
at
轻量定时任务工具,依赖于atd服务
,临时crond
定时任务工具
at
语法
1 | at [Time] [Commend] |
Ctrl+D
提交任务
时间
1 | HH:MM |
cron
crond进程提交任务方式与at不同,crond需要读取配置文件,且有固定的文件格式,通过crontab命令管理文件
cron任务分为两类
系统定时任务
操作系统自带的。crond服务除了会在工作时查看/var/spool/cron
文件夹下的定时任务文件以外,还会看/etc/cron.d
目录以及/etc/anacrontab
下面的文件内容,里面存放着每天
、每周
、每月
需要执行的系统任务
1 | [root@localhost ~]# ls /etc/ -l|grep cron* |
用户定时任务
当系统管理员或普通用户创建了需要定期执行的任务,可以使用crontab
命令配置,当crond服务在启动时,每分钟查看/var/spool/cron
路径下以系统用户名
命名的定时任务文件
,以确定是否有需要执行的任务。
crontab命令
参数
1 | -l 查看定时任务 |
语法
* * * * * <命令绝对路径>
口诀:什么时间做什么事
编写时注意书写规范
- 加上注释:what who why when
- 不要求输出定向到 >/dev/null 2>&1
- 在指定用户下执行相关定时任务,而不是什么都交给root,可以使用-u
- 推荐使用crontab -e编辑,有语法检查
1 | * * * * * 开头五颗星用于设置时间 |
五颗星分别对应:
- 分(0-59)
- 时(0-23)
- 日(1-31)
- 月(1-12 or jan、feb…..)
- 周(0-6、sunday=0/7 or sun、mon……)
注意:每天和每周不能同时使用
特殊符号
1 | * 每 |
管理命令
查看cron运行状态
1 | systemctl is-active crond |
1 | systemctl status crond |
定时任务与邮件服务
计划任务触发执行后,会通过邮件发送给用户(并非互联网中的邮件那样,仅仅是系统内部的邮件服务)
检查服务端口
邮件端口号为
25
1 | ss -tnl | grep 25 |
若未开启服务
需要启动postfix服务,用于发送邮件
首先,编辑文件
1 | vim /etc/postfix/main.cf |
然后,修改参数
1 | ... |
最后,启动postfix服务
1 | systemctl start postfix |
本地化电子邮件服务
邮件协议解释
- pop3
- smtp
- imap
mailx命令
三个概念
MTA:Mail Transport Agent,邮件传送代理,也就是postfix
服务
MUA:Mail User Agent,收发邮件的客户端
Centos7通过mailx
发送邮件,通过mail
收邮件(mail也可以用来发邮件)
1 | mailx -s "This is title." usr |
使用文件中的内容
1 | mail -s "This is title." usr <mailtosb.txt |
可以将文件中的内容当作邮件发给对应用户
mail命令
用于接收邮件
查看邮件
如果有多封邮件,&+第一列对应的数字
即可打开对应邮件。