Linux基础之定时任务

30.1)什么是定时任务

定时任务命令是cond,crond就是计划任务,类似于我们平时生活中的闹钟,定点执行。

30.2)为什么要用crond

计划任务主要是做一些周期性的任务,比如凌晨3点定时备份数据、晚上23点开启网站抢购接口、凌晨0点关闭抢占接口等。

计划任务主要分为以下两种使用情况:

1.系统级别的定时任务

临时文件清理、系统信息采集、日志文件切割

2.用户级别的定时任务

定时向互联网同步时间、定时备份系统配置文件、定时备份数据库的数据。

30.3)crontab配置文件

[root@centos7 ~]# vim /etc/crontab
SHELL=/bin/bashPATH=/sbin:/bin:/usr/sbin:/usr/binMAILTO=root​# For details see man 4 crontabs​# Example of job definition:# .---------------- minute (0 - 59)# |  .------------- hour (0 - 23)# |  |  .---------- day of month (1 - 31)# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat# |  |  |  |  |# *  *  *  *  * user-name  command to be executed​备注:1) *  表示任意的(分、时、日、月、周)时间都执行2) -  表示一个时间范围段, 如5-7点3) ,  表示分隔时段, 如6,0,4表示周六、日、四4) /1 表示每隔n单位时间, 如*/10 每10分钟

30.4)crontab的时间编写规范

00 02 * * * ls          #每天的凌晨2点整执行00 02 1 * * ls          #每月的1日的凌晨2点整执行00 02 14 2 * ls         #每年的2月14日凌晨2点执行00 02 * * 7 ls          #每周天的凌晨2点整执行00 02 * 6 5 ls          #每年的6月周五凌晨2点执行00 02 14 * 7 ls         #每月14日或每周日的凌晨2点都执行00 02 14 2 7 ls         #每年的2月14日或每年2月的周天的凌晨2点执行   */10  02 * * * ls       #每天凌晨2点,每隔10分钟执行一次* * * * *  ls           #每分钟都执行00 00 14 2 *  ls        #每年2月14日的凌晨执行命令 */5 * * * *  ls         #每隔5分钟执行一次00 02 * 1,5,8 * ls      #每年的1月5月8月凌晨2点执行00 02 1-8 * *  ls       #每月1号到8号凌晨2点执行0 21 * * * ls           #每天晚上21:00执行45 4 1,10,22 * * ls     #每月的1,10,22号的4:45执行45 4 1-10 * * ls        #每月的1到10号的4:45执行3,15 8-11 */2 * * ls    #每隔两天的上午8点到11点的第3和第15分钟执行0 23-7/1 * * * ls       #晚上11点到早上7点之间,每隔一个小时执行15 21 * * 1-5 ls        #周一到周五每天晚上21:15执行

30.5)crontab命令选项

-e                      #编辑定时任务-l                      #查看定时任务-r                      #删除定时任务-u                      #指定其他用户

30.6)计划任务实践示例

示例1:使用root用户每2分钟执行一次时间同步​#需提前安装软件包[root@centos7 ~]# yum install -y ntpdate​#先在Linux系统上查看命令是否正确[root@centos7 ~]# ntpdate ntp.aliyun.com26 Jul 15:20:49 ntpdate[19706]: step time server 203.107.6.88 offset -1.696419 sec​#配置定时任务#编辑定时任务[root@centos7 ~]# crontab -e -u root​#每2分钟执行一次时间同步 by wxg At 2019.07.26*/2 * * * * /usr/sbin/ntpdate ntp.aliyun.com &>/dev/null​#查看定时任务[root@centos7 ~]# crontab -l -u root#每2分钟执行一次时间同步 by wxg At 2019.07.26*/2 * * * * /usr/sbin/ntpdate ntp.aliyun.com &>/dev/null​

30.7)计划任务如何调试

30.7.1)crond调试    1)调整任务每分钟执行的频率, 以便做后续的调试。    2)如果使用cron运行脚本,请将脚本执行的结果写入指定日志文件, 观察日志内容是否正常。    3)命令使用绝对路径, 防止无法找到命令导致定时任务执行产生故障。    4)通过查看/var/log/cron日志,以便检查我们执行的结果,方便进行调试。
30.7.2.crond编写思路    1.手动执行命令,然后保留执行成功的结果。    2.编写脚本        脚本需要统一路径/scripts        脚本内容复制执行成功的命令(减少每个环节出错几率)        脚本内容尽可能的优化, 使用一些变量或使用简单的判断语句        脚本执行的输出信息可以重定向至其他位置保留或写入/dev/null    3.执行脚本        使用bash命令执行, 防止脚本没有增加执行权限(/usr/bin/bash)        执行脚本成功后,复制该执行的命令,以便写入cron    4.编写计划任务        加上必要的注释信息, 人、时间、任务        设定计划任务执行的周期        粘贴执行脚本的命令(不要手敲)    5.调试计划任务        增加任务频率测试        检查环境变量问题        检查crond服务日志 /var/log/cron

30.8)综合示例:使用定时任务发邮件

步骤一:配置邮件发邮件1)现在/etc/mail.rc配置文件中配置邮件及下载证书;2)登录邮箱客户端或者PC端,开启POP3/SMTP服务,获得授权码;
[root@centos7 ~]# vim /etc/mail.rc​#发件人set from=913077407@qq.com#邮件服务器set smtp=smtp.qq.com#发件人用户名set smtp-auth-user=913077407@qq.com#发件人密码(QQ邮箱不可以使用密码,只能使用授权码)set smtp-auth-password=etadwxmucvmwbded#登录方式set smtp-auth=login#邮件服务器协议及端口set smtp=smtps://smtp.qq.com:465#忽略证书set ssl-verify=ignore#指定证书位置set nss-config-dir=/root/.certsType  :quit<Enter>  to exit Vim                                              76,1          Bot​

登录邮箱客户端或者PC端,点击“设置”,点击“账户”,

开启POP3/SMTP服务

生成授权码

3)编辑文本,准备邮件附件

[root@centos7 /]# cd /[root@centos7 /]# vim book1.txt喜欢你的人很多,不缺我一个,但我爱的人很少,只有你一个!​[root@centos7 /]# vim book2.txt一直想说,无论走到哪里,最想去的是你的身边。

4)发送邮件测试,编写Linux命令,邮箱收到测试邮件,表示命令可以正常使用。

cat book1.txt | mail -s '表白' 913077407@qq.com

5)接下来写脚本,放入定时任务中

#创建一个情书的目录[root@centos7 ~]# mkdir /txt_dir​#将所有情书移动到该目录下[root@centos7 /]# mv /book* /txt_dir/​#编写脚本[root@centos7 /]# vim send_mail.sh​#!/bin/bash​qs_name=`ls -1 /root/qingshu_dir/|head -1`​cat /root/qingshu_dir/${qs_name} |mail -s '致我最爱的小姐姐' 133411023@qq.com​if [ $? -eq 0 ];then        rm -f /root/qingshu_dir/$qs_namefi​#编辑crontab[root@centos7 /]# crontab -e​#每天发情书   by wxg At 2019.7.26* * * * * /bin/bash /root/send_mail.sh &>/dev/null​​
(0)

相关推荐

  • centos5,6 系统启动流程

    linux内核特点: 支持模块化:模块文件的名字以.ko(kernel object)结尾 支持内核运行时,动态加载和卸载模块文件. linux内核组成部分: 核心文件:/boot/vmlinuz-V ...

  • centos crontab定时任务用法

    一.安装crond服务 yum -y update yum -y install cronie yum-cron 二.crontab任务语法 crontab任务配置基本格式: * * * * * co ...

  • Linux系统如何创建任务?操作方法!

    Linux系统是当下非常受欢迎的系统,受到很多人的喜欢,同时在Linux运行过程中我们经常会遇到各种各样定时任务,那么在Linux系统下如何创建定时任务? 以MySQL定时备份,创建一个用于执行MyS ...

  • MySQL 定时备份数据库(非常全)

    在操作数据过程中,可能会导致数据错误,甚至数据库奔溃,而有效的定时备份能很好地保护数据库.本篇文章主要讲述了几种方法进行 MySQL 定时备份数据库. 一. mysqldump命令备份数据 在MySQ ...

  • Shell—定时任务(crontab)

    如何让shell脚本每天定时执行? 1.新建需要定时执行的shell脚本,这里为date.sh脚本. #!/bin/bashPATH=/bin:/sbin:/usr/bin:/usr/sbin:/us ...

  • Linux命令中交互式命令都有哪些?Linux基础

    交互式命令就是在top命令执行过程中使用的一些命令.top命令用于实时地对系统处理器状态进行监控,它能够实时地显示系统中各个进程的资源占用状况.该命令可以按照CPU的使用.内存的使用和执行时间对系统任 ...

  • Linux基础优化与安全有哪些重点?Linux应该如何学习

    Linux如今深受互联网企业的喜爱,想要众多的IT工作者中脱颖而出,就需要拥有高深的技术,学习增值是必不可少的.学习之路贵在坚持.很多人在初学Linux技术时,不了解Linux基础优化该如何操作.那么 ...

  • 老曹眼中的Linux基础

    Linux 几乎无处不在,不论是服务器构建,还是客户端开发,对操作系统的基本理解和基础技能的掌握对全栈来说都是必备的. 系统的选择 Linux发行版本大体分为两类,一类是商业公司维护的发行版本,一类是 ...

  • Linux基础命令中,进程相关命令有哪些?

    随着互联网技术的发展,Linux逐步成为了较为热门的职业岗位技术,受到越来越多的企业和个人的喜爱.互联网市场对Linux运维的需求也在增加.Linux命令是Linux运维技能的基础,想要学好Linux ...

  • echo命令有什么参数选项?linux基础命令

    显示一行文本的echo命令是Linux运维必须要学习的Linux基础命令之一.都说Linux命令是学习Linux技术的基础,想要成为优秀的Linux运维人员,Linux命令是必须掌握的.那么如果要显示 ...

  • date命令的参数选项有哪些?linux基础知识

    date命令用于显示当前的系统时间或设置系统时间.date命令是Linux运维工作中会用到的核心命令之一,是运维人员必须要掌握的.那么date命令有哪些相关内容?date命令的参数选项有哪些? dat ...

  • Linux基础

    系统常识 通过xshell工具来连接Linux服务器 Linux,windows,macos 三大操作系统 windows(win7,win10,winxp) linux(Redhat/红帽,cent ...

  • cd命令有哪些相关知识?linux基础命令入门

    众所周知,Linux是一个重点使用命令行来完成相关工作的操作系统,因此,对Linux命令的熟练使用是工程师婉转Linux的基础且关键的技能之一.那么Linux系统核心命令学习中,cd命令都有哪些相关知 ...

  • (4条消息) Linux 基础操作、常用shell命令、vi常用命令、man帮助手册

    一.简述 记录简单的Linux 基础操作.常用shell命令.vi编辑器常用命令.man帮助手册的使用. 二.Linux 基础操作 1.按 Ctrl+Alt+t 快捷键或者双击桌面的"Ter ...