文档章节

SS哥的crontab教程

帖子列表
 帖子列表
发布于 2014/08/27 11:17
字数 1286
阅读 537
收藏 16

cron命令

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

Linux Crontab 格式

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

字段 描述 允许的值
分钟 一小时的第几分 0-59
小时 一天的第几小时 0-23
日期 一个月的的第几天 1-31
月份 一年的第几个月 1-12
周几 一周的第几天 0-6
命令 命令 可以被执行的任何命令

cron实例

1. 特定时间执行

cron的基本用法是在特定的时间执行一项任务,如下是6月10上午8:30执行Full backup shell script。

要注意的是时间字段采用的是24小时制,如果是下午8点,则改写为20点。

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

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

下面的增量备份脚本每天执行两次,每天于11:00,16:00执行。

逗号两侧的时间都会执行。

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

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

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

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

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

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

4. 如何查看cron定时任务

查看当前用户定时任务:

1
ramesh@dev-db$ crontab -l

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

1
2
root@dev-db# crontab -l
no crontabforroot

查看其它用户定时任务:

1
2
3
root@dev-db# crontab -u sathiya -l
@monthly /home/sathiya/monthly-backup
00 09-18 * * * /home/sathiya/check-db-status

5. 如何编辑cron定时任务

1
ramesh@dev-db$ crontab -e

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

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

1
* * * * * 命令

*代表着所有可能取到的值,除了直接用*外,下面的几种情况也较为常用:

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

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

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

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

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

表格: Cron 关键字与其意义

关键字 等效于
@yearly 0 0 1 1 *
@daily 0 0 * * *
@hourly 0 * * * *
@reboot 重启时运行

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

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

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

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

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

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

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

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

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

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

1
@reboot CMD

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

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

1
2
3
4
5
ramesh@dev-db$ crontab -l
MAIL="ramesh"
 
@yearly /home/ramesh/annual-maintenance
*/10 * * * * /home/ramesh/check-disk-space

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

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

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

14. cron中的PATH变量

上面的例子都是用绝对的路径,如果你想用相对的路径,设置环境变量可以在crontab增加:

1
2
3
4
5
6
ramesh@dev-db$ crontab -l
 
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/home/ramesh
 
@yearly annual-maintenance
*/10 * * * * check-disk-space

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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
ramesh@dev-db$ crontab -l
no crontabforramesh
 
$ cat cron-file.txt
@yearly /home/ramesh/annual-maintenance
*/10 * * * * /home/ramesh/check-disk-space
 
ramesh@dev-db$ crontab cron-file.txt
 
ramesh@dev-db$ crontab -l
@yearly /home/ramesh/annual-maintenance
 
*/10 * * * * /home/ramesh/check-disk-space

应用时要注意,此操作会删除原有的cron任务。

本文转载自:http://wind6266.blog.163.com/blog/static/6710907201391591158878/

帖子列表

帖子列表

粉丝 117
博文 131
码字总数 33125
作品 1
浦东
程序员
私信 提问
马哥-51CTO-Linux培训-0905-Linux任务计划

(注:此文源于夜归人的博客) 1、总结Linux系统上的任务计划(at、crontab)的详细使用方法; at命令: 承载未来时间运行的某作业: 支持使用作业队列: 默认为a队列; Ctrl+d at [option].....

smallhorse
2018/10/30
0
0
Linux 设置 计划或者排程

致谢鸟哥,感谢鸟哥的书。 一、Linux 定期执行某一些任务 1.1 at 1.2 crontab 二、开机自动运行

Oscarfff
2016/01/27
28
0
centos 例行性工作转发外部邮箱

跟着鸟哥的《私房菜》学习LINUX的例行性工作这一章,需要配置/etc/crontab文件来进行自动化调度,实验过程中如果某一项工作执行结果有输出或者是报错时默认都会向root管理员发送一封邮件。当...

good_joe
2016/05/13
0
0
Crontab 让linux定时执行shell脚本

使用crontab你可以在指定的时间执行一个shell脚本或者一系列Linux命令。例如系统管理员安排一个备份任务使其每天都运行 入门 # crontab –e 这样可以已编辑模式打开个人的crontab配置文件,然...

酱醋茶丶
2015/07/31
9.3K
0
mongodb备份-mmb使用说明和如何导出更可读的csv

mongodb备份和导出csv mongodb备份方式有三种 文件快照方式 复制数据文件方式 使用mongodump方式 原理 mongodb的简单备份一般使用mongoexport即可,只要你装了mongodb就有的命令,上面说的其...

i5ting
2015/08/23
60
2

没有更多内容

加载失败,请刷新页面

加载更多

查看线上日志常用命令

cat 命令(文本输出命令) 通常查找出错误日志 cat error.log | grep 'nick' , 这时候我们要输出当前这个日志的前后几行: 显示file文件里匹配nick那行以及上下5行 cat error.log | grep -C ...

xiaolyuh
24分钟前
3
0
六、Java设计模式之工厂方法

工厂方法定义: 定义一个创建对象的接口,但让实现这个接口的类来决定实例化哪个类,工厂方法让类的实例化推迟到子类中进行 类型:创建型 工厂方法-使用场景: 创建对象需要大量重复的代码 ...

东风破2019
30分钟前
3
0
win服务器管理遇到的一系列问题记录

有些小伙伴在使用iis7远程桌面管理工具的时候总是会遇到一系列的问题,下面就是为大家介绍一下服务器日常管理过程中出现的问题及我的解决办法和心得。希望能帮到大家。   拒绝服务器重新启...

1717197346
38分钟前
4
0
flutter 剪切板 复制粘贴

复制粘贴功能 import 'package:flutter/services.dart'; Clipboard.setData(ClipboardData(text:_text));Clipboard.getData;...

zdglf
40分钟前
3
0
如何保证消息的可靠性传输?或者说,如何处理消息丢失的问题?

面试题 如何保证消息的可靠性传输?或者说,如何处理消息丢失的问题? 面试官心理分析 这个是肯定的,用 MQ 有个基本原则,就是数据不能多一条,也不能少一条,不能多,就是前面说的重复消费...

米兜
41分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部