目录:
一、什么是计划任务:
未来的某时间点执行一次某任务或者周期性的运行某个任务,执行结果会通过邮件的形式发送给用户
计划任务可以分为两类:
1.定点执行一次某任务:at,batch
2.周期性的运行某任务:crontab
系统任务调度: 系统周期性所要执行的工作,比如写缓存数据到硬盘,日志清理等。/etc/crontab文件就是系统任务调度的配置文件
用户任务调度: 用户定期要执行的工作,比如用户数据备份,定时邮件提醒等等。用户可以使用crontab工具来定制自己的计划任务。所有用户定义的crontab文件都被保存在/var/spool/cron目录中
二、计划任务相关命令:
1.mail命令:
首先没有mail命令时需要先安装,yum install -y mailx
mail命令格式:
mail -s “邮件主题” -c “抄送地址” -b“密送地址” -f 发件人地址 -F 发件人姓名< 邮件内容
三种发信格式: (前面的test是邮件主题,后面的nebula@nebula.edu.cn是用户或者邮箱)
mail -s test nebula@nebula.edu.cn✏✏✏✏第一种方法,你可以把当前shell当成编辑器来使用,编辑完成后按Ctrl+D结束
echo “hello” | mail -s test nebula@nebula.edu.cn✏✏✏✏第二种方法,使用管道
mail -s test nebula@nebula.edu.cn < file✏✏✏✏第三种方法,以file的内容为邮件内容发信
使用mail发邮件时,必须先将sendmail服务启动。
安装sendmail服务:
2.at命令:
计划任务,在特定的时间执行某项工作,在特定的时间执行一次,需要安装at服务, yum install apt-get at -y
首先得先启动atd服务, systemctl start atd
时间定义:
16:47 24小时制
noon, midnight,teatime(下午四点)
04:47pm
2020-04-04 日期必须在时间后面
相对时间法:
now + 5 minutes + 3 days
today tomorrow
选项:
-d 删除指定定时任务 -l 列出指定的定时任务 -v 列出已执行未删除的定时任务 -f file 读取命令文件 -c # 根据任务ID查看内容 #:id号
at相关命令:
1.atq命令:
列出用户的计划任务,如果是超级用户将列出所有用户的任务,结果输出格式为:作业号,日期,小时,队列和用户名
2.atrm命令:
根据job number删除at任务
3.batch命令:
batch:在系统空闲情况下才执行at命令
at命令实例:
在此我们等待两分钟后,就可以看到
用atrm加作业号可以删除待处理的计划任务
3.crond命令:
crond是linux下用来周期性执行某种任务或等待处理某些事件的一个守护进程,与Windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务工具,并且会自动启动crond进程,crond进程每分钟定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。
没有crontab此命令需要先安装, yum install crontabs
crontab命令选项:
-e 编辑任务 -l 列出所有任务 -r 移除所有有任务,即删除/var/spool/cron/USERNAME文件 -i 在使用-r选项移除所有任务时提示用户确认 -u user root用户可为指定用户管理cron任务
系统任务调度:
系统周期性所要执行的工作,比如写缓存数据到硬盘,日志清理等。在/etc目录下有一个crontab文件,这个就是系统任务调度的配置文件
前四行是用来配置crond任务运行的环境变量,第一行SHELL变量指定了系统要是用哪个shell,这里是bash,第二行PATH变量指定了系统执行命令的路径,第三行MAILTO变量指定了crond的任务执行信息将通过电子邮件发送给root用户,如果MAILTO变量的值为空,则表示不发送任务执行信息给用户。
用户任务调度:
用户定期要执行的工作,比如用户数据备份,定时邮件提醒等。用户可以使用crontab工具来定制自己的计划任务。所有用户定义的crontab文件都被保存到 /var/spool/cron 目录中。其文件名与用户名一致。
当我给root、用户写了一个计划任务时,这时候目录下就有一个以root命令的文件
使用者权限文件:
/etc/cron.deny ✏✏✏✏✏ 该文件中所列的用户不允许使用crontab命令
/etc/cron.allow ✏✏✏✏✏ 该文件中所列的用户允许使用crontab命令
定时任务的规范:
1、定时任务的脚本文件必须存放在指定位置,便于维护和定期备份
2、添加定时任务时需要写注释:
3、执行脚本要使用绝对路径
4、避免标准输出和错误输出, > /dev/null 2>&1
5、如果定时任务可以使用命令完成,建议命令写在脚本里
6、使用指定用户执行定时任务
7、标准的书写规范