个人随笔
目录
crontab定时任务的基本使用
2019-02-18 21:04:45

在linux中,需要一些定时任务来备份日志或者监控程序是否正常运行,此时可以借助工具crontab。方法如下,下面是转载至一篇博客,尊重原著,贴上链接,以及一些我自己的经验在最后。
本文转载自博客

crontab命令常见于Unix和Linux的操作系统之中,用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其存放于”crontab”文件中,以供之后读取和执行。

在Linux系统中,Linux任务调度的工作主要分为以下两类:
1、系统执行的工作:系统周期性所要执行的工作,如备份系统数据、清理缓存
2、个人执行的工作:某个用户定期要做的工作,例如每隔10分钟检查邮件服务器是否有新信,这些工作可由每个用户自行设置

一、/etc/crontab、/etc/cron.deny 、 /etc/cron.allow文件介绍

系统调度的任务一般存放在/etc/crontab这个文件下,里面存放了一些系统运行的调度程序,通过命令我们可以看一下里面的内容:

  1. [root@xiaoluo ~]# cat /etc/crontab
  2. SHELL=/bin/bash
  3. PATH=/sbin:/bin:/usr/sbin:/usr/bin
  4. MAILTO=root
  5. HOME=/
  6. # For details see man 4 crontabs
  7. # Example of job definition:
  8. # .---------------- minute (0 - 59)
  9. # | .------------- hour (0 - 23)
  10. # | | .---------- day of month (1 - 31)
  11. # | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
  12. # | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
  13. # | | | | |
  14. # * * * * * user-name command to be executed
  15. 这些任务都会是系统在运行起来后自动进行调度的。同时在/etc目录下还存放了/etc/cron.deny /etc/cron.allow 文件
  16. /etc/cron.deny 表示不能使用crontab 命令的用户
  17. /etc/cron.allow 表示能使用crontab的用户。

如果两个文件同时存在,那么/etc/cron.allow 优先。

如果两个文件都不存在,那么只有root用户可以安排作业。

二、.crontab命令语法及其各个参数含义

crontab命令的语法为:

crontab [-e [UserName]|-l [UserName]|-r [UserName]|-v [UserName]|File ]
注意:crontab 是用来让使用者在固定时间或固定间隔执行程序之用,换句话说,也就是类似使用者的时程表。-u user 是指设定指定 user 的时程表,这个前提是你必须要有其权限(比如说是 root)才能够指定他人的时程表。如果不使用 -u user 的话,就是表示设定自己的时程表。

各个参数说明:

  1. -e [UserName]: 执行文字编辑器来设定时程表,内定的文字编辑器是 vi
  2. -r [UserName]: 删除目前的时程表
  3. -l [UserName]: 列出目前的时程表
  4. -v [UserName]:列出用户cron作业的状态

三、crontab命令的格式

我们如果要创建自己的一个任务调度,可以使用 crontab -e 这个命令,如:

[root@ xiaoluo ~]# crontab -e
此时会进入到vi编辑界面,来编写我们要调度的任务,crontab调度命令的格式如下:

  1. * * * * * command path  // 前五个字段可以取整数值,指定何时开始工作,第六个域是字符串,即命令字段,其中包括了crontab调度执行的命令。 各个字段之间用spaces和tabs分割。

调度命令的规则:

字段名称 说明 取值范围

  1. 分钟 每小时的第几分钟执行 0-59
  2. 小时   每日的第几个小时执行 0-23
  3. 日期 每月的第几天执行 1-31
  4. 月历 每年的第几月执行 1-12
  5. 星期 每周的第几天执行 0-6
  6. 命令名称 欲执行的命令及参数

crontab命令中的一些常用特殊符号:

  1. 符号  说明
  2. * 表示任何时刻
  3. , 表示分割
  4. 表示一个段,如第二段里: 1-5,就表示15
  5. /n 表示每个n的单位执行一次,如第二段里,*/1, 就表示每隔1个小时执行一次命令。也可以写成1-23/1.
  6. */10 * * * * 每隔10 执行
  7. 0 17 * * * 每天的17:00 执行
  8. 43 21 * * * 每天的21:43 执行

下面是我的一些经验;
1、我们执行命令crontab -e 新加一条定时任务,然后保存后不需要重启crontab的,会自动执行。
如下日志备份明天凌晨4点备份的命令
首先执行命令crontab -e 打开编辑器
然后输入如下内容

  1. 0 4 * * * /data/esb/domain/baklog.sh

最后保存即可。
2、一些常用命令
其实上面也已经总结了,但是这里还是列一下

  1. crontab -l 列出当前登录用户所有定时任务
  2. crontab -l -u XXX 列出XXX用户所有的定时任务,如果没有会提示 no crontab for XXX
  3. crontab -e 编辑当前用户的定时任务
  4. crontab -r 删除当前用户的定时任务
  5. tail -f /var/log/cron 查看crontab的执行情况
  6. vim /var/spool/main/root 查看crontab的执行log
  7. 0 0 1,5,10 * * 每月1号,5号,10号执行
  8. 0 0 1-5 * * 每月15号执行
 217

啊!这个可能是世界上最丑的留言输入框功能~


当然,也是最丑的留言列表

有疑问发邮件到 : suibibk@qq.com 侵权立删
Copyright : 个人随笔   备案号 : 粤ICP备18099399号-2