linux crond任务调度

发布时间 2023-07-27 21:44:28作者: Crispy·Candy

摘要

  1. 介绍linux的任务调度机制
  2. 介绍任务调度指令crontab
  3. 举例crontab进行任务调度的例子

一、linux任务调度

  • 任务调度:是指系统在某个时间执行的特定的命令或程序
  • 任务调度分类:
    1. 系统工作:有些重要的工作必须周而复始地执行。如病毒扫描等个别
    2. 用户工作:个别用户可能希望执行某些程序,比如对mysql数据库的备份。

二、crond守护进程

  • crond是linux的一个后台服务,其任务就是根据cron的设置定时调度任务

三、crontab指令

crontab指令能够定时调用任务

选项 说明
-e 编辑、设置crontab定时任务
-l 查询crontab任务
-r 删除当前用户所有的crontab任务
指令 功能 说明 选项
crontab -e 编辑crontab定时任务
crontab -l 查询crontab任务
crontab -r 删除所有的crontab任务
service crond restart 重启调度任务

1. 设置定时调度任务

然后写入如下内容

意思说每小时的每分钟执行ls -l /etc/ > /tmp/to.txt命令

具体的时间占位符的含义,可以参考另一篇博客

退出后即可

一分钟后查看tmp目录,果然有to.txt文件

2. 查看crontab任务

crontab -l

3. 删除crontab任务

crontab -r

四、举例

上面已经举例了:每隔1分钟,就将当前的日期信息,追加到/tmp/mydate文件中,这是一次执行一个指令

如果要一次执行多个指令呢?

1. 例一:一次调度多个指令

  • 要求:每隔1分钟,将当前日期日历都追加到/home/mycal文件中
  • 一次执行两个指令,可以将指令写在sh文件里面
  • 然后crontab每个一分钟执行这个shell文件

  1. 编写shell
vim /home/mycal
  1. 写入内容
date >> /home/mycal
cal >> /home/mycal
  1. 给sh文件添加执行的权限
chmod u+x /home/my.sh
  1. crontab -e 添加调度
*/1 * * * * /home/my.sh

然后就可以看到这个文件了

2. 例二

  • 要求每天凌晨2:00将mysql数据库testdb,备份到文件中。
  • 提示:指令为 mysqldump -u root -p密码 数据库 > /home/db.bak

  1. 添加调度任务
crontab -e
  1. 输入任务
0 2 * * * mysqldump -u root -proot testdb > /home/db.bak