Linux笔记(三)—— crond 任务调度

和自甴很熟 提交于 2019-12-23 10:02:39

任务调度

原理示意图:
在这里插入图片描述
crontab 进行定时任务的设置。比如:写了一个爬虫需要每天早上八点执行,就可以用到Crontab;安装的Tomcat服务器需要每天凌晨重启一次,也可以使用到Crontab。总之,几乎所有的定时任务,我们都可以通过Crontab这个工具来完成。但如果/etc/crontab 文件权限设置不正确,crontab不会自动执行任务。

概述

任务调度:是指系统在某个时间执行的特定的命令或程序。
任务调度分类:

  1. 系统工作:有些重要的工作必须周而复始地执行。如病毒扫描等。
  2. 个别用户工作:个别用户可能希望执行某些程序,比如对mysql数据库的备份。

基本语法

crontab 【选项】

常用选项:

  • -e 编辑crontab定时任务
  • -l 查询crontab任务
  • -r 删除当前用户所有的crontab任务

快速入门

设置任务调度文件: /etc/crontab
设置个人任务调度。执行crontab -e 命令。
接着输入任务到调度文件
如:*/1 * * * * ls -l /etc/ > /tmp/to.txt 命令
意思说每小时的每分钟执行 ls -l /etc/ > /tmp/to.txt 命令

参数细节说明:5个占位符说明

项目 含义 范围
第一个“*” 一个小时当中的第几分钟 0-59
第二个“*” 一天当中的第几个小时 0-23
第三个“*” 一个月当中的第几天 1-31
第四个“*” 一年当中的第几月 1-12
第五个“*” 一周当中的星期几 0-7(0和7都代表星期日)

特殊符号的说明:

特殊符号 含义
* 代表任何时间。比如第一个*代表一小时每分钟都执行一次的意思
, 代表不连续的时间。比如“0 8,12,16 * * * 命令”,就代表在每天的8点0分、12点0分、16点0分都执行一次命令
- 代表连续的时间范围。比如“0 5 * * 1-6 命令”,代表在周一到周六的凌晨5点0分执行命令
*/n 代表每隔多久执行一次。比如“*/10 * * * * 命令”,代表每个10分钟就执行一遍命令

运行结果:
在这里插入图片描述

案例

  1. 每隔一分钟,就将当前的日期信息,追加到/tmp/mydate 文件中。
    在这里插入图片描述
#mystask.sh文件内容:
date >> /tmp/mydate

#修改mytask.sh文件,赋予其可执行权限:
chmod 744 mystask.sh

crontab -e

编写文件内容如下图:
在这里插入图片描述
在这里插入图片描述

  1. 每天凌晨2:00将mysql数据库testdb,备份到文件中。
  • 先写一个文件 /home/mytask2.sh
    文件里面写:
./usr/local/mysql/bin/mysqldump -u root -proot testdb > /tmp/mydb.bak
  • 给mytask2.sh文件一个可以执行的权限
chmod 744 /home/mytask2.sh
  • crontab -e
  • 在文件中添加以下命令:
0 2 * * * * /home/mytask2.sh
  • 成功,可以查看备份文件是否生成

其他任务调度命令

  1. 列出当前有哪些任务调度
    在这里插入图片描述
  2. 重启等服务,centos7环境
#启动
/bin/systemctl start crond.service
 
#重启
/bin/systemctl restart crond.service
 
#关闭
/bin/systemctl stop crond.service
  1. 查看crontab状态:
service crond status
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!