Linux :crontab 自动化的任务

版权声明:本文为博主原创文章,未经博主容许不得转载。linux

目录shell

  1. cron 简介
  2. cron 命令
  3. Linux Crontab 格式
  4. cron 实例
    1. 特定时间执行
    2. 安排多个实例好比一天执行两次
    3. 让任务只在特定时间执行好比仅当工做日时执行
    4. 如何查看 cron 定时任务
    5. 如何编辑 cron 定时任务
    6. 安排每分钟都执行定时任务
    7. 安排后台每十分钟执行定时任务
    8. 每年的第一分钟执行定时任务yearly
    9. 每个月执行定时任务mothly
    10. 天天执行定时任务daily
    11. 每次重启时执行定时任务reboot
    12. 如何用 mail 关键字禁止重定向 cron 的邮件
    13. 如何系秒每执行一个定时任务
    14. cron 中的 PATH 变量
    15. 从 cron 文件中定义 cron 任务

cron 简介

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

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 点ui

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

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

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

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

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

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

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

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

若是只想工做日执行此操做code

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 定时任务

查看当前用户定时任务crontab

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
00 09-18 * * * /home/sathiya/check-db-status

5. 如何编辑 cron 定时任务

ramesh@dev-db$ crontab -e

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

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

* * * * * 命令

* 表明着全部可能取到的值,除了直接用 * 外,下面的几个例子也较为经常使用

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

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

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

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

有一些特殊的例子,能够用关键字替代上述五个字段– rebootmidnightyearlyhourly

Table: Cron special keywords and its meaning

Keyword Equivalent
@yearly 0 0 1 1 *
@daily 0 0 * * *
@hourly 0 * * * *
@reboot 重启时运行

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
*/10 * * * * /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
*/10 * * * * check-disk-space

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

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

ramesh@dev-db$ crontab -l
no crontab for ramesh

$ 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任务

相关文章
相关标签/搜索