crontab计划任务
打开crontab的配置文件:
[root@localhost ~]# cat /etc/crontab
1 # Example of job definition:
2 # .---------------- 分钟(0 - 59)
3 # | .------------- 小时 (0 - 23)
4 # | | .---------- 一月中的哪一天 (1 - 31)
5 # | | | .------- 月份 (1 - 12) OR jan,feb,mar,apr ...
6 # | | | | .---- 星期 (0 - 6) (Sunday=0 or 7) OR sun,mon...
7 # | | | | |
8 # * * * * * 用户 命令(或者脚本)
可以看到,他的5颗星分别代表 分钟、小时、天、星期、月份
那么可以实现的最小时间单位是分钟,想要实现秒级的计划任就需要另外做些处理:
我们要看到秒级的执行情况,需要借用一个date命令,这一样可以很好的看到结果。
每分钟将date输出的内容导入到/mnt/file的计划任务是:
1[root@eg0 mnt]# crontab -l
2* * * * * date>>/mnt/file
这是每一分钟执行一次计划任务。接下来进入正题,看如何实现每秒执行一次的计划任务:
先来看下每10秒执行一次的实现方法:
1 [root@eg0 mnt]# crontab -l
2 * * * * * sleep 10; date>>/mnt/file
3 * * * * * sleep 20; date>>/mnt/file
4 * * * * * sleep 30; date>>/mnt/file
5 * * * * * sleep 40; date>>/mnt/file
6 * * * * * sleep 50; date>>/mnt/file
1 [root@eg0 mnt]# cat /mnt/file
2 Wed Nov 29 07:46:01 EST 2017
3 Wed Nov 29 07:46:11 EST 2017
4 Wed Nov 29 07:46:21 EST 2017
5 Wed Nov 29 07:46:31 EST 2017
6 Wed Nov 29 07:46:41 EST 2017
7 Wed Nov 29 07:46:51 EST 2017
8 Wed Nov 29 07:47:01 EST 2017
9 Wed Nov 29 07:47:11 EST 2017
10 Wed Nov 29 07:47:21 EST 2017
11 Wed Nov 29 07:47:31 EST 2017
12 Wed Nov 29 07:47:41 EST 2017
13 Wed Nov 29 07:47:51 EST 2017
14 Wed Nov 29 07:48:01 EST 2017
用sleep10 表示休眠10s,
这样写就实现了每10秒执行一次,用了5个计划任务。如果要实现每5秒,甚至是每1秒执行一次,就要写59行计划任务了,显然太繁琐,可以用一个脚本的方式实现:
1 [root@eg0 mnt]# vim test.sh
2 #!/bin/bash
3 step=1 #间隔的秒数,不能大于60
4 for ((i=0;i<60;i=(i+step)));do
5 $(date>>/mnt/file)
6 sleep $step
7 done
8 exit 0
1 [root@eg0 mnt]# chmod +x test.sh
2 [root@eg0 mnt]# crontab -e
3 * * * * * sh /mnt/date.sh
结果是:
1 [root@eg0 mnt]# cat file
2 Wed Nov 29 08:06:02 EST 2017
3 Wed Nov 29 08:06:03 EST 2017
4 Wed Nov 29 08:06:04 EST 2017
5 Wed Nov 29 08:06:05 EST 2017
6 Wed Nov 29 08:06:06 EST 2017
7 Wed Nov 29 08:06:07 EST 2017
8 Wed Nov 29 08:06:08 EST 2017
9 Wed Nov 29 08:06:09 EST 2017
10 Wed Nov 29 08:06:10 EST 2017
11 Wed Nov 29 08:06:11 EST 2017
12 Wed Nov 29 08:06:12 EST 2017
13 Wed Nov 29 08:06:13 EST 2017
14 Wed Nov 29 08:06:14 EST 2017
15 Wed Nov 29 08:06:15 EST 2017
16 Wed Nov 29 08:06:16 EST 2017
17 Wed Nov 29 08:06:17 EST 2017
18 Wed Nov 29 08:06:18 EST 2017
19 Wed Nov 29 08:06:19 EST 2017
20 Wed Nov 29 08:06:20 EST 2017
21 Wed Nov 29 08:06:21 EST 2017
22 Wed Nov 29 08:06:22 EST 2017
23 Wed Nov 29 08:06:23 EST 2017
24 Wed Nov 29 08:06:24 EST 2017
25 Wed Nov 29 08:06:25 EST 2017
26 Wed Nov 29 08:06:26 EST 2017
27 Wed Nov 29 08:06:27 EST 2017
28 Wed Nov 29 08:06:28 EST 2017
29 Wed Nov 29 08:06:29 EST 2017
30 Wed Nov 29 08:06:30 EST 2017
31 Wed Nov 29 08:06:31 EST 2017
32 Wed Nov 29 08:06:32 EST 2017
33 Wed Nov 29 08:06:33 EST 2017
34 Wed Nov 29 08:06:34 EST 2017
35 Wed Nov 29 08:06:35 EST 2017
36 Wed Nov 29 08:06:36 EST 2017
37 Wed Nov 29 08:06:37 EST 2017
38 Wed Nov 29 08:06:38 EST 2017
39 Wed Nov 29 08:06:39 EST 2017
40 Wed Nov 29 08:06:40 EST 2017
41 Wed Nov 29 08:06:41 EST 2017
42 Wed Nov 29 08:06:42 EST 2017
43 Wed Nov 29 08:06:43 EST 2017
44 Wed Nov 29 08:06:44 EST 2017
45 Wed Nov 29 08:06:45 EST 2017
46 Wed Nov 29 08:06:46 EST 2017
47 Wed Nov 29 08:06:47 EST 2017
48 Wed Nov 29 08:06:48 EST 2017
49 Wed Nov 29 08:06:49 EST 2017
50 Wed Nov 29 08:06:50 EST 2017
51 Wed Nov 29 08:06:51 EST 2017
52 Wed Nov 29 08:06:52 EST 2017
53 Wed Nov 29 08:06:53 EST 2017
54 Wed Nov 29 08:06:54 EST 2017
55 Wed Nov 29 08:06:55 EST 2017
56 Wed Nov 29 08:06:56 EST 2017
57 Wed Nov 29 08:06:57 EST 2017
58 Wed Nov 29 08:06:58 EST 2017
59 Wed Nov 29 08:06:59 EST 2017
60 Wed Nov 29 08:07:00 EST 2017
61 Wed Nov 29 08:07:01 EST 2017
62 Wed Nov 29 08:07:01 EST 2017
63 Wed Nov 29 08:07:02 EST 2017
64 Wed Nov 29 08:07:03 EST 2017
可以看到结果是每一秒都将date的结果导入到了指定的文件,这样就实现了每秒执行一次了。