0x00 cron 简介

cron 是 UNIX, SOLARIS,LINUX 下的一个十分有用的工具。通过 cron 脚本能使计划任务定期地在系统后台自动运行。

0x01 cron 命令

  • crontab -e     – 编辑该用户的 crontab,当指定 crontab 不存在时新建。
  • crontab -l     – 列出该用户的 crontab。
  • crontab -r     – 删除该用户的 crontab。
  • crontab -u<用户名称>     – 指定要设定 crontab 的用户名称。

0x02 Linux Crontab 格式

表格: Crontab 字段与允许的值 (Linux Crontab

0x03 cron 实例和用法

1. 特定时间执行

cron 的基本用法是在特定的时间执行一项任务,如下是 6 月 10 上午 8:30 执行 Full backup shell script。 要注意的是时间字段采用的是 24 小时制,如果是下午 8 点,则改写为 20 点。

    * /home/ramesh/full-backup
  • 30 – 第 30 分钟
  • 08 – 早上 8 点
  • 10 – 10 号
  • 06 – 第 6 个月 (6 月)
  • * – 一周的任何一天

2. 安排多个实例(比如一天执行两次)

下面的增量备份脚本每天执行两次。

每天于 11:00, 16:00 执行,逗号两侧的时间都会执行。

 , * * * /home/ramesh/bin/incremental-backup
  • 00 – 第 0 分钟 (每小时开时)
  • 11,16 – 早上 11 点与下午 4 点
  • * – 每天
  • * – 每个月
  • * – 一周的任何一天

3. 让任务只在特定时间执行(比如仅当工作日时执行)

下面这个例子是每天 9:00-16:00 检查数据库状态(包括周六)

 - * * * /home/ramesh/bin/check-db-status
  • 00 – 第 0 分钟 (每小时开时)
  • 09-18 – 9 点, 10 点, 11 点, 12 点, 下午 1 点, 下午 2 点, 下午 3 点, 下午 4 点, 下午 5 点, 下午 6 点
  • * – 每天
  • * – 每个月
  • * – 一周的任何一天

如果只想工作日执行此操作

 - * * - /home/ramesh/bin/check-db-status
  • 00 – 第 0 分钟 (每小时开时)
  • 09-18 – 9 点, 10 点, 11 点, 12 点, 下午 1 点, 下午 2 点, 下午 3 点, 下午 4 点, 下午 5 点, 下午 6 点
  • * – 每天
  • * – 每个月
  • 1-5 – 周一, 周二, 周三, 周四和周五 (工作日)

4. 如何查看 cron 定时任务

查看当前用户定时任务

ramesh@dev-db$ crontab -l

查看 ROOT 用户定时任务,用 root 登入 su-root,再执行 crontab -l

root@dev-db# crontab -l
no crontab for root

查看其它用户定时任务

root@dev-db# crontab -u sathiya -l
@monthly /home/sathiya/monthly-backup
- * * * /home/sathiya/check-db-status

5. 如何编辑 cron 定时任务

ramesh@dev-db$ crontab -e

6. 安排每分钟都执行定时任务

理论情况下,没有每分钟都要执行的 shell,但下面这个例子,让我们更好的了解 crontab

* * * * * 命令

* 代表着所有可能取到的值,除了直接用 * 外,下面的几个例子也较为常用

  • 当指定 */5 在分钟字段,代表每五分钟。
  • 当指定 0-10/2 在分钟字段,代表在前十分钟的每两分钟

上面的例子对于其它四个字段同样适用

7. 安排后台每十分钟执行定时任务

*/ * * * * /home/ramesh/check-disk-space

有一些特殊的例子,可以用关键字替代上述五个字段– reboot, midnight, yearly, hourly

Table: Cron special keywords and its meaning

8. 每一年的第一分钟执行定时任务(@yearly)

下面的例子将在每一年的 1 月 1 日 0:00 执行

@yearly /home/ramesh/red-hat/bin/annual-maintenance

9. 每月执行定时任务(@mothly)

下面的例子将在每月 1 日 0:00 执行

@monthly /home/ramesh/suse/bin/tape-backup

10. 每天执行定时任务(@daily)

下面的例子将在每天 0:00 执行

@daily /home/ramesh/arch-linux/bin/cleanup-logs "day started"

11. 每次重启时执行定时任务(@reboot)

@reboot CMD

12. 如何用 mail 关键字禁止/重定向 cron 的邮件

默认情况下,crontab 将向布置定时任务的管理员发送邮件,如果想重定向此用户,添加并更新 MAIL

ramesh@dev-db$ crontab -l
MAIL="ramesh" @yearly /home/ramesh/annual-maintenance
*/ * * * * /home/ramesh/check-disk-space

如果不想任何人接收,则直接将 MAIL 置空。

13. 如何系秒每执行一个定时任务

无法安排每秒执行,因为最小处理单元是分钟,另一方面,没有什么理由让我们每秒都执行一任务

14. cron 中的 PATH 变量

上面的例子都是用绝对的路径

如果你想用相对的路径,设置环境变量可以在 crontab 增加

ramesh@dev-db$ crontab -l

PATH=/bin:/sbin:/usr/bin:/usr/sbin:/home/ramesh

@yearly annual-maintenance
*/ * * * * check-disk-space

15. 从 cron 文件中定义 cron 任务

除了直接编辑外,你也可以先在一个文件中编辑好任务,再导入

ramesh@dev-db$ crontab -l
no crontab for ramesh $ cat cron-file.txt
@yearly /home/ramesh/annual-maintenance
*/ * * * * /home/ramesh/check-disk-space ramesh@dev-db$ crontab cron-file.txt ramesh@dev-db$ crontab -l
@yearly /home/ramesh/annual-maintenance */ * * * * /home/ramesh/check-disk-space

应用时要注意,此操作会覆盖原有的cron任务

参考

Linux学习笔记之Linux计划任务Crontab的更多相关文章

  1. linux学习笔记2 - linux常用命令

    转载请标注原链接:http://www.cnblogs.com/xczyd/p/5543731.html 第一篇博客:linux学习笔记1-ubuntu的安装与基本设置 之中,已经介绍了如何安装lin ...

  2. linux学习笔记30--命令at和crontab

    在windows系统中,windows提供了计划任务这一功能,在控制面板 -> 性能与维护 -> 任务计划, 它的功能就是安排自动运行的任务. 通过'添加任务计划'的一步步引导,则可建立一 ...

  3. Linux学习笔记之Linux相关知识

    [想成为某一方面的大神,没有捷径可走,只能不断的记录.练习.总结.coding……] notes:主要从网上摘录了一些关于Linux的历史以及一些相关内容,以便对Linux系统有一定的了解.这不但可以 ...

  4. Linux学习笔记之Linux启动引导过程

    早期时,启动一台计算机意味着要给计算机喂一条包含引导程序的纸带,或者手工使用前端面板地址/数据/控制开关来加载引导程序.尽管目前的计算机已经装备了很多工具来简化引导过程,但是这一切并没有对整个过程进行 ...

  5. Linux学习笔记之Linux第一课-基本介绍

    Linux简介 Linux内核最初只是由芬兰人李纳斯·托瓦兹(Linus Torvalds)在赫尔辛基大学上学时出于个人爱好而编写的. Linux是一套免费使用和自由传播的类Unix操作系统,是一个基 ...

  6. Linux学习笔记(21) Linux日志管理

    1. 简介 (1) 日志服务 在CentOS 6.x中日志服务已经由rsyslogd取代了原先的syslogd服务.rsyslogd日志服务更加先进,功能更多.但是不论该服务的使用,还是日志文件的格式 ...

  7. Linux学习笔记(20) Linux系统管理

    1.进程管理 进程是正在执行的一个程序或命令,每一个进程都是一个运行的实体,都有自己的地址空间,并占用一定的系统资源. 进程管理的作用有判断服务器健康状态.查看系统中所有进程及杀死进程.一般都可以采用 ...

  8. Linux学习笔记之Linux启动级别

    对于绝大多数Linux程序员来说,进入Linux系统后一般看到的是黑乎乎的界面(开发模式),因为系统如果启动选择开发模式,会减少启动时间,优化内存等.但是通常我们刚安装完Linux系统,然后进去以后是 ...

  9. Linux学习笔记(23) Linux备份

    1. 备份概述 Linux系统需要备份的数据有/root,/home,/var/spool/mail,/etc及日志等其他目录. 安装服务的数据需要备份,如apache需要备份的数据有配置文件.网页主 ...

随机推荐

  1. 关于HTML5的十大面试题

    1.html5的文档类型和字符集分别是什么? 答:<!doctype html>/<meta charset="UTF-8"> 2.在html5中如何嵌入一 ...

  2. js将字符串转换为数字等类型

    1.js提供了parseInt()和parseFloat()两个转换函数. 2.ECMAScript中可用的3种强制类型转换如下:  Boolean(value)——把给定的值转换成Boolean型: ...

  3. VS2013快捷键

    这个好用,先放这两个 组合键“Ctrl+Enter”:在当前行的上面插入一个空行:  组合键“Ctrl+Shift+Enter”:在当前行的下面插入一个空行.

  4. 【Android N 7.1.1】 锁屏之上显示Toast

    package com.android.systemuirom.keyguard; import android.content.Context; import android.view.Gravit ...

  5. IT公司常见的内网漏洞表格

    访问控制类漏洞与隐患 这一类漏洞与隐患属于访问控制与身份鉴别问题,一般有没有配置访问控制.访问控制弱(弱口令或者空口令),身份鉴别可以绕过等问题 漏洞协议组件 漏洞类型 漏洞评级 SSH 弱口令 严重 ...

  6. SSH配置优化和慢的解决方法

    author: headsen chen date: 2018-08-18  00:28:37 ssh配置优化 vim  /etc/ssh/sshd_config 1,修改root端口 2,不允许ro ...

  7. Xcode - 插件管理工具Alcatraz

    Alcatraz 1.简介 Alcatraz是一个能帮你管理Xcode插件丶模版及颜色配置的工具.它可以直接集成在Xcode的图形界面中,让你感觉就像在使用Xcode自带的功能一样. 2.安装和删除 ...

  8. Linux 搭建Nginx并添加配置 SSL 证书

    1. 安装准备   1.1 gcc安装 安装 nginx 需要先将官网下载的源码进行编译,编译依赖 gcc 环境,如果没有 gcc 环境,则需要安装: [root@nginx ~]# yum -y i ...

  9. JavaORM框架之Mybatis篇(Ibatis)

    欢迎查看Java开发之上帝之眼系列教程,如果您正在为Java后端庞大的体系所困扰,如果您正在为各种繁出不穷的技术和各种框架所迷茫,那么本系列文章将带您窥探Java庞大的体系.本系列教程希望您能站在上帝 ...

  10. CH5E07 划分大理石【多重背包】

    5E07 划分大理石 0x5E「动态规划」练习描述有价值分别为1..6的大理石各a[1..6]块,现要将它们分成两部分,使得两部分价值之和相等,问是否可以实现.其中大理石的总数不超过20000. 输入 ...