对于Linux的crontab的用法来说大家都很熟悉。
[email protected]:~# crontab -l
#.------------------------------------------------------------------- mintues( 0 - 59 ) #| .--------------------------------------------------------------- hour ( 0 - 23 ) #| | .----------------------------------------------------------- day ( 1 - 31 ) #| | | . ------------------------------------------------------ month ( 1 - 12 ) #| | | | .--------------------------------------------------- week ( 0 - 6 ) #| | | | | */15 * * * * /usr/sbin/ntpdate pool.ntp.org >/dev/null 2>&1
其中上述每个位置表示的含义已经写了很清楚,但是crontab最小是分钟,如何才能实现秒级呢。说白了就是crontab + sleep。如下操作说明:
1. 脚本实现任务
[[email protected] ~]# cat cmz.sh #!/bin/bash echo `date +%H:%M:%S`>>/tmp/cmz.txt
2. 添加定时任务
[[email protected] tmp]# crontab -l * * * * * /bin/bash /root/cmz.sh * * * * * sleep 10; /bin/bash /root/cmz.sh * * * * * sleep 20; /bin/bash /root/cmz.sh
3. 查看输出结果
[[email protected] tmp]# cat cmz.txt 13:30:01 13:30:21 13:31:01 13:31:21 13:32:01 13:32:21 13:33:01 13:33:21 13:34:01 13:34:21 13:35:01
解释说明:
- 脚本的任务是20秒钟实现打印当前时间
- 脚本输出到/tmp/cmz.txt中
- 其中最关键的还是crontab中如何写
* * * * * /bin/bash /root/cmz.sh #第一次执行任务
* * * * * sleep 10; /bin/bash /root/cmz.sh #第二次执行任务间隔10秒钟(10-0)
* * * * * sleep 20; /bin/bash /root/cmz.sh #第三次执行任务间隔10秒钟(20-10)
- 但是对于每秒钟实验,测试了不行,建议还是时间比较大一点比如10秒,20秒等等大点的,请自行测试
时间: 2024-10-29 19:08:33