linux 定时任务

下面我以 centos7 为例来介绍我们在 linux 中如何创建定时任务

查看是否安装了 cron 服务

1
rpm -qa|grep cron

安装 cron

1
yum install crontabs

查看 cron 状态,设为开机启动

1
2
3
4
5
systemctl status crond   #查看状态
systemctl start crond #启动
systemctl restart crond #重启
systemctl enable crond #设为开机启动
systemctl start crond #启动crond服务

corntab 的一些命令

1
2
3
4
crontab -help
crontab -l #查看当前定时任务
crontab -e #新建定时任务
crontab -r #删除定时任务

crontab -e 新建定时任务后,可输入定时任务,可参考文件 /etc/crontab

1
2
3
4
5
6
7
8
9
# Example of job definition:

# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed

crontab -e 新建定时任务后会在 /var/spool/cron 下生成 root 文件,里面即为定时任务

要使用该命令更新定时任务

1
1  * * * run-parts /etc/crontab-test

该任务表示每分钟执行一次/etc/crontab-test 目录下的所有 .sh 文件。

/etc/crontab-test 目录下新建需要执行的任务文件,该目录可以自定义

test.sh 内部代码如下,表示访问一个链接。

1
2
#!/bin/sh
curl http://***.com/test

还有一个问题,就是目录权限,如果 .sh 所在的目录没有权限,不会执行,具体验证可以直接在命令窗口执行 .sh 文件

1
sh /etc/crontab-test/test.sh

如果报错,可根据报错给相应的目录 777 权限

还有具体的执行日志可以在目录 /var/log 中查看

定时例子

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# 每天早上6点
0 6 * * *

# 每两个小时
0 */2 * * *

# 晚上11点到早上7点之间每两个小时和早上八点
0 23-7/2,8 * * *

# 每个月的4号【和】每个礼拜的礼拜一到礼拜三的早上11点
0 11 4 * 1-3

# 1月1日早上4点
0 4 1 1 *

# 每小时01分
01 * * * *

# 每天凌晨4点02分
02 4 * * *

# 每星期凌晨4点22分
22 4 * * 0

# 每月1号凌晨4点42分
42 4 1 * *

# 每天的下午4点、5点、6点的5 min、15 min、25 min、35 min、45 min、55 min
5,15,25,35,45,55 16,17,18 * * *

# 每周一,三,五的下午3:00
00 15 * * 1,3,5

# 每小时的10分,40分
10,40 * * * *

# 每年的一月和四月,4号到9号的3点12分和3点55分执行
12,55 3 4-9 1,4 *