引言

crond 的概念和 crontab 是不可分割的。crontab 是一个命令,而 crond 是Linux 下用来周期性执行某种任务或等待处理某些事件的守护进程,类似于 Windows 下的计划任务。

当装完操作系统之后,默认便会安装 crond 服务工具,并会自动启动 crond 进程,crond 进程每分钟定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。

Linux 下的定时任务种类

种类 使用场景
at 适合仅执行一次就结束的调度命令,需要启动一个后端的atd服务。 
crontab 最常用的定时任务,需要启动一个服务crond才行,crond服务通过crontab命令实现 
anacron 无法周期性执行,只能以天为周期,但有个特点,在关机状态下未>执行的任务,下次开机时可以补上执行

crontab 工作原理

在 Linux 中,crontab 是最常用的定时任务工具,系统会每分钟循环检查任务列表,默认系统中可以登录的用户,都可以使用 crontab 定义计划任务。另外,还可以通过 /etc/cron.allow 文件来限制权限

系统任务调度和用户任务调度

crontab 设置定时任务可以分为两类:

系统任务调度:指的是系统级别的周期性任务,如定期写磁盘、日志清理。/etc/crontab 文件就是系统任务调度的配置文件。

用户任务调度:通过 crontab -e 进行编写的任务,都属于用户任务调度,这类任务可以包括:用户数据备份、定时邮件提醒等。Linux 系统会将所有用户设置的定时任务存放到 /var/spool/cron 目录中,文件名与用户名一致:

执行 crontab -r  后,即直接删除用户 crontab 文件:

cron 表达式

【基本含义】

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

【特殊符号含义】

特殊符号 含义
* 任何时间。如第一个 * 代表每分钟都执行。
不连续的时间,如:0 8,12 * * * ,表示每天8:00和12:00各执行一次。
- 连续的时间段,如:0 5 * * 1-6,表示每周一到周六的5:00执行。
/ 间隔时间,如:*/10 * * * * , 表示每隔 10 分钟执行一次,不看时间点。

crontab 基本应用

【语法】

crontab [-u user] [ -e | -l | -r ]

【常用参数】

-e 编辑 crontab 定时任务

-l  查询crontab 定时任务

-r  删除当前用户所有的 crontab 任务(终止任务调度)

【服务操作】

service crond restart 或 /sbin/service crond restart  重启任务调度服务

service crond stop 关闭服务

service crond start 启动服务

service crond reload 重新载入配置

查看crontab 运行日志

/var/log/cron-日期  文件中,可以看到定时任务的执行情况:

应用案例1

【案例要求】将 /etc 目录下的文件列表每分钟追加到 /tmp/to.txt 文件中。

【操作步骤】

1) cron  -e

2) */1 * * * *  ls -l /etc >>/tmp/to.txt

3)保存退出,即可生效

应用案例2

【案例要求】每天凌晨2点,将mysql数据库testdb,备份到文件mydb.bak中

1)先编写一个脚本文件,/home/mytask3.sh

/usr/local/mysql/bin/mysqldump -u root -proot testdb > /tmp/mydb.bak

2)给mytask3.sh 一个可执行权限

chmod 744 /home/mytask3.sh

3)crontab -e

4)0 2 * * * /home/mytask3.sh

【注意】如果直接执行类似 * * * * * ls  /home  或 * * * * * echo 'hello  world' 这样的任务,Linux会每分钟发一封邮件给当前用户。保存在 /var/spool/mail/root 中。

Linux进阶之路————crond定时任务调度相关推荐

  1. Linux进阶之路————进程与服务管理

    引言 在Linux 中,每个执行的程序(代码)都成为一个进程,Linux 为每一个进程分配了一个唯一的 id 号 - PID. 每个进程都会对应一个父进程,而这个父进程可以复制多个子进程,例如 www ...

  2. Linux进阶之路————磁盘查询

    引言 承接<Linux进阶之路----Linux磁盘分区与挂载>,本文介绍实际生产中对于磁盘的监控和查询. 一.查询磁盘整体使用情况 基本语法: df -h 该命令会显示包括我们手动挂载的 ...

  3. Linux进阶之路————组管理与权限管理

    引言 这篇博客将会总结一些关于组的概念和相关操作,以及文件的一些权限管理. 一.组的基本介绍 在前面的博文<Linux进阶之路----用户管理>已经有提到用户组的概念,实际上,组的概念并不 ...

  4. Linux进阶之路————Linux运行级别(重置密码)

    引言 前面的<Linux进阶之路----开机.重启和用户登录注销>已经简单介绍过Linux系统运行级别的概念,今天来详细介绍和总结一下Linux的运行级别. inittab配置文件 在配置 ...

  5. Linux进阶之路-Ubuntu版

    Linux进阶之路 @[TOC](Linux进阶之路) Linux 简介 概述 Linux 与 Windows 比较 安装 Linux 操作系统 Linux 远程控制管理 概述 OpenSSH XSh ...

  6. linux实操篇,定时任务调度

    crond 任务调度 概述 任务调度:是指系统在某个时间执行的特定的命令或程序. 任务调度分类:1.系统工作:有些重要的工作必须周而复始地执行.如病毒扫描等 个别用户工作:个别用户可能希望执行某些程序 ...

  7. 【Linux进阶之路】基本开发工具

    前言 在正式开始之前我们先补充一个知识点--普通用户提权的操作. sudo [指令] 那如何将tmp1添加到信任白名单--sudoers文件 中呢? 肯定不能自己加,得超级管理员root加--第一步: ...

  8. Linux进阶之路——常用命令总结

    一.帮助命令 help man type区分内建.外建命令 [扩展]关于内建命令与外建命令. 内建命令属于shell程序的一部分,包含一些比较简单的Linux命令.这些命令被写在/bin/bash 文 ...

  9. Linux进阶之路———Shell 编程入门

    引言 通过 Shell 编程的学习,铺平架构师道路上的一块大砖. Shell 在Linux 系统中的定位如下所示: 一.第一个 Shell 脚本 我们通过一个简单的 Shell 脚本来感受一下. 在 ...

最新文章

  1. Android No static field XXX of type I in class Lcom/XXX/R$id错
  2. 优化gradle下载引用jar速度慢或者出错的问题
  3. php数据访问(查询)
  4. 2018/03/25
  5. 2.9 穆尔彭罗斯伪逆
  6. (Leetcode)买股票的最佳时机
  7. PKM2数据导出的xml显示用的XSL
  8. 将列表打印为表格数据
  9. 如何选择InstallShield工程类型
  10. android 圆形自定义进度条,Android自定义漂亮的圆形进度条
  11. 【语音定时播报系统】基于树莓派+百度语音合成打造语音定时播报系统
  12. springboot使用j2cache
  13. Python-docx python处理Word文档之加下划线
  14. java-nio网络编程
  15. 【应用统计学】几种常见的概率分布
  16. uni-app字符串数字转换
  17. MP | 东农吴凤芝/南农韦中-根系分泌物介导的植物种间互作塑造了根际微生物组抑病力...
  18. 阿里巴巴离职DBA职业生涯总结
  19. Zookeeper源码解析 -- 本地事务日志持久化之FileTxnLog
  20. Visual Studio 2017十五项新功能体验

热门文章

  1. Python 爬取淘宝商品信息栏目
  2. ubuntu搭建nodejs生产环境——快速部署手册
  3. Debian11安装VLC Media Player视频播放器
  4. Win10安装 WSL Ubuntu Linux系统,非双系统,完美兼容超详细版本
  5. C#中使用NPIO实现导入导出Excel简单操作
  6. Elasticsearch修改字段之别名,扩展数据迁移
  7. 编译后没有taget文件夹_maven资源文件的相关配置才会在编译后的target里面有
  8. python合并两个数据框_使用python合并两个数据框
  9. win7装mysql一直未响应_求助啊 WIN7下安装mysql出问题 老是说未响应~!!
  10. 权限申请_Android 开发工程师必须掌握的动态权限申请,三步轻松搞定!