Linux Crontab命令定时任务基本语法与操作教程

Linux Crontab命令定时任务基本语法与操作教程

一、Crontab查看编辑重启

1、查看crontab定时执行任务列表

crontab -l

2、编辑crontab定时执行任务

crontab -e

3、删除crontab定时任务

crontab -r

4、相关命令:

sudo service crond start #启动服务

sudo service crond stop #关闭服务

sudo service crond restart #重启服务

sudo service crond reload #重新载入配置

sudo service crond status #查看服务状态

二、Crontab基本格式语法

crontab 的时间表达式:

基本格式 :

*  *  *  *  *  command

分  时 日 月 周  命令

先来看一个例子。每天凌晨1:00执行备份程序:0 1 * * * /root/backup.sh 。其中/root/backup.sh 这是脚本路径,要使用绝对路径,前面的日期格式请直接看下图就知道了。

在这里插入图片描述
crontab还有操作符,用来实现一些复杂的时间设定需要。操作符有:

1、* 取值范围内的所有数字 ,代表所有。

2、/ 每过多少个数字 ,代表每隔n长时间。

3、- 从X到Z ,代表一段时间范围。

4、,散列数字,代表分割开多个值。

如果还有搞不懂代码公式的,可以使用这个在线Cron表达式生成器:http://cron.qqe2.com/

三、20个经典Crontab应用实例

在使用时记得替换为自己的脚本路径。请在相应的脚本第一行加上#!/bin/bash,否则脚本在定时任务中无法执行。

  • 实例1:每1分钟执行一次
* * * * * /root/backup.sh
  • 实例2:每小时的第3和第15分钟执行一次
3,15 * * * * /root/backup.sh
  • 实例3:每天的8点到11点的第3和第15分钟执行一次
3,15 8-11 * * * /root/backup.sh
  • 实例4:每隔两天的上午8点到11点的第3和第15分钟执行一次
3,15 8-11 */2 * * /root/backup.sh
  • 实例5:每周一上午8点到11点的第3和第15分钟执行一次
3,15 8-11 * * 1 /root/backup.sh
  • 实例6:每晚的21:30执行一次
30 21 * * * /root/backup.sh
  • 实例7:每月1、10、22日的4 : 45执行一次
45 4 1,10,22 * * /root/backup.sh
  • 实例8:每周六、周日的1 : 10执行一次
10 1 * * 6,0 /root/backup.sh
  • 实例9:每天18 : 00至23 : 00之间每隔30分钟执行一次
0,30 18-23 * * * /root/backup.sh
  • 实例10:每星期六的晚上23: 00 pm执行一次
0 23 * * 6 /root/backup.sh
  • 实例11:每一小时执行一次
* */1 * * * /root/backup.sh
  • 实例12:每天晚上23点到第二天7点之间,每隔一小时执行一次
* 23-7/1 * * * /root/backup.sh
  • 实例13: 每个星期的第一天执行一次(即每个星期天晚上24:00开始执行).
@weekly /root/backup.sh
  • 实例14:每个月的15日执行一次.
0 11 15 * * /root/backup.sh
  • 实例15:每个月的第一天执行一次(即每个月的1日凌晨0点开始执行).
@monthly /root/backup.sh
  • 实例16: 在指定的月份执行一次(在1月,4月和 6月每天晚上0点执行一次).
0 0 * jan,apr,jun * /root/backup.sh
  • 实例17: 重启后执行一次.
@reboot /root/backup.sh
  • 实例18:定时任务执行后发一封邮件通知.
MAILTO="raj"

1 1 * * * /root/backup.sh
  • 实例19:指定shell (默认的是/bin/bash)
SHELL=/bin/sh

1 1 * * * /root/backup.sh
  • 实例20:指定环境变量.
PATH=/sbin:/bin:/usr/sbin:/usr/bin

1 1 * * * /root/backup.sh

四、Crontab可能存在的问题

4.1 Crontab不立即生效

大家新建的Crontab定时任务保存后需要等待2分钟后才会执行,当然如果想要立即执行可以重启Crontab。当crontab失效时,可以尝试/etc/init.d/crond restart解决问题,或者查看日志看某个任务有没有执行/报错tail -f /var/log/cron。

4.2 Crontab不执行

脚本中涉及文件路径时写全局路径,更新系统时间时区后需要重启cron。当手动执行脚本OK,但是crontab死活不执行时很有可能是环境变量,可尝试在crontab中直接引入环境变量解决问题,例如:

0 * * * * . /etc/profile;/bin/sh /root/backup.sh

4.3 Crontab无权限执行

要注意系统级任务调度与用户级任务调度。只有 root 用户和 crontab 文件的所有者可以在 -e 、-l、-r 和 -v 标志后面使用 UserName 以编辑、列出、除去或验证指定用户的 crontab 文件。

​ root用户的任务调度操作可以通过”crontab –uroot –e”来设置,也可以将调度任务直接写入/etc/crontab文件。

想编辑别的用户的 crontab, 使用root运行下面的命令,同一个格式 (追加 “-u username” 到命令后) 也可以用来列出或删除 crontabs。

crontab -u username -e

4.4 Crontab执行后通知

当Crontab定时任务在你所指定的时间执行后,系统会寄一封信给你,显示该程序执行的内容,可以在日志中/var/log/cron看到。若是你不希望收到这样的通知,请在每一行空一格之后加上 > /dev/null 2>&1 即可。

使用crontab定时执行shell脚本

很多时候我们有希望服务器定时去运行一个脚本来触发一个操作,比如说定时去备份服务器数据、数据库数据等不适合人工经常做的一些操作。

那么今天就来简单说下如何使用crontab定时执行shell脚本。

步骤一 首先我们先看一下是否安装了crontab。一般情况下linux系统会自带crontab及crond。如果没有安装,请使用以下指令安装:yum install vixie-cron yum install crontabs (PS:Ubuntu操作系统下请使用apt-get)

在这里插入图片描述

步骤二 然后我们写一个名字叫做liao.sh的shell脚本。很简单,就是输出一段字符。
在这里插入图片描述
步骤三 我们的目的是每分钟执行一次这个shell脚本,所以要再建立一个存放日志的log文件,然后给予liao.sh权限。
在这里插入图片描述
步骤四 然后我们就要使用crontab了,首先进入它的配置文件,在/etc/crontab 中添加我们的调度命令。注意,该配置文件是一个只读文件,需要使用sudo vi /etc/crontab 指令打开文件,不然有可能没有修改权限。
在这里插入图片描述
文件/etc/crontab中每行任务的描述格式如下:

minute hour day month dayofweek command

minute - 从0到59的整数
hour - 从0到23的整数
day - 从1到31的整数 (必须是指定月份的有效日期)
month - 从1到12的整数 (或如Jan或Feb简写的月份)
dayofweek - 从0到7的整数,0或7用来描述周日 (或用Sun或Mon简写来表示)
command - 需要执行的命令(可用as ls /proc >> /tmp/proc或 执行自定义脚本的命令)
comp表示以comp用户身份来运行

>>表示运行脚本后重定向到log文件中

对于以上各语句,星号()表示所有可用的值。例如在指代month时表示每月执行(需要符合其他限制条件)该命令。
步骤五 开启crontab服务
在这里插入图片描述
步骤六 查看运行结果
在这里插入图片描述

  • 参考博客
  • https://www.cnblogs.com/hustzzl/p/8878664.html
  • https://blog.csdn.net/liao392781/article/details/79278811
  • 1
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值