Linux 【crontab 命令】循环调度执行

crontab 是 Linux 系统中用于设置周期性被执行的指令的命令。

当安装完成操作系统之后,默认便会启动此任务调度命令。

crond 命令每分钟会定期检查是否有要执行的工作,如果有要执行的工作便会自动执行该工作。

注意:新创建的 cron 任务,不会马上执行,至少要过 2 分钟后才可以,当然你可以重启 cron 来马上执行。

Linux 任务调度的工作主要分为以下两类:

1、系统执行的工作:系统周期性所要执行的工作,如备份系统数据、清理缓存

2、个人执行的工作:某个用户定期要做的工作,例如每隔 10 分钟检查邮件服务器是否有新信,这些工作可由每个用户自行设置

查看配置文件:

vim /etc/crontab

如果软件不存在安装:

yum -y install crontabs
#启动:
ystemctl start crond.service

语法

crontab 选项

选项:

-u<user> : 定义用户

-e : edit:编辑用户的crontab

-l : list:列出用户的crontab

-r : remove:删除用户的crontab

-n<host> : 为某用户设置的crontab(仅root可用)

-x<mask> : 启用调试

示例

1.添加定时任务 :每天12点执行 t.sh 脚本

crontab -e
#给用户 tom 添加定时任务
crontab -e -u tom

Minutes   Hours    Day-of-Month    Month    Day-of-Week    Command 
分钟	    小时	   日			         月		    周		       执行的命令,最好是命令的绝对路径
0-59	    0-23  	 1-31            1-12	    0-7
*         *          *             *        *
每小时的某一分钟
每天的某小时
每月的某天
每年的某月

2.查看任务列表:查看当前用户的任务列表

crontab -l
#查看用户 tom 的任务列表
crontab -l -u tom

3.删除用户的 crontab 文件

crontab -r
#删除用户 alan 的 crontab 文件
crontab -r -u alan

特殊:

* 每分钟/小时/.....

*/n 表示每 n (分钟/小时......)个时间间隔执行一次

, 不同的时间段

a-b 表示范围a-b分钟/小时......

#每天6点执行
0 6 * * *  /home/t.sh
#每月1号的早上6点执行
0 6 1 * *  /home/t.sh
#每年2月1号的早上6点执行
0 6 1 2 *  /home/t.sh
#每周六凌晨4:00执行
0 4 * * 6  /home/t.sh

#每隔5分钟执行
*/5 * * * *  /home/t.sh
#每隔30分钟执行
*/30 * * * *  /home/t.sh

#每周早上9:30-10:30
30 9-10 * * 1  /home/t.sh
#每周一到周五早上9:30
30 9 * * 1-5  /home/t.sh

#每天6,12,18点执行
00 6,12,18 * * * /home/t.sh
#每月1,5,8号的2:00整执行
00 02 1,5,8 * * /home/t.sh
#每月1号和15号检查/home 磁盘
0 0 1,15 * * fsck /home

* * * * *

每分钟执行一次

0 * * * *

每小时的第 0 分钟执行一次

0 0 * * *

每天的午夜(0 点)执行一次

0 0 * * 0

每周日的午夜(0 点)执行一次

0 0 1 * *

每个月的第一天午夜(0 点)执行一次

0 0 L * *

每个月的最后一天午夜(0 点)执行一次

0 0 1 1 *

每年的第一天午夜(0 点)执行一次

0 0 * * 3

每周三的午夜(0 点)执行一次

0 0 1,15 * *

每个月的第 1 和第 15 天午夜(0 点)执行一次

0 0 * * FRI

每周五的午夜(0 点)执行一次

0 0 * * 5

每周五的午夜(0 点)执行一次

0 8-17 * * *

每天的上午 8 点到下午 5 点每小时执行一次

0 12 * * MON

每周一的中午(12 点)执行一次

0 0 15 * *

每个月的第 15 天午夜(0 点)执行一次

0 0 * * 3

每周三的午夜(0 点)执行一次

0 8-17 * * *

每天的上午 8 点到下午 5 点每小时执行一次

0 0 * * 1-5

每个工作日的午夜(0 点)执行一次

0 0 1 * FRI

每个月的第一个星期五午夜(0 点)执行一次

0 0 1,15 * *

每个月的第 1 和第 15 天午夜(0 点)执行一次

0 0 15 1 *

每年的 1 月 15 日午夜(0 点)执行一次

0 0 * * 7

每周日的午夜(0 点)执行一次

0 0 * * 5

每周五的午夜(0 点)执行一次

脚本无法执行问题

如果我们使用 crontab 来定时执行脚本,无法执行,但是如果直接通过命令(如:./test.sh)又可以正常执行,这主要是因为无法读取环境变量的原因。

解决方法:

1、所有命令需要写成绝对路径形式,如: /usr/local/bin/docker。

2、在 shell 脚本开头使用以下代码:

#!/bin/sh

. /etc/profile
. ~/.bash_profile

3、在 /etc/crontab 中添加环境变量,在可执行命令之前添加命令 . /etc/profile;/bin/sh,使得环境变量生效,例如:

20 03 * * * . /etc/profile;/bin/sh /var/www/runoob/test.sh
  • 34
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值