linux定时任务

一、什么是计划任务:

未来的某时间点执行一次某任务或者周期性的运行某个任务,执行结果会通过邮件的形式发送给用户

计划任务可以分为两类:
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 userroot用户可为指定用户管理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、标准的书写规范

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值