红联Linux门户
Linux帮助

Linux实现秒级定时任务(crontab)Shell小脚本

发布时间:2017-04-16 11:16:26来源:blog.csdn.net/sweeper_freedoma作者:蛙鳜鸡鹳狸猿
今天领导让我配置一个服务器job,要求是暂时每秒钟都要跑一次。本来想到去crontab配置。Linux的定时任务简单地配置到crontab里面就可以了,设置方法也很简单,如下所示,6个参数依次表示为“分、时、日、月、周和具体任务”(示例为每天凌晨3点执行freshclam工作)。
[root@student ~]# crontab -l
0 3 * * * freshclam
 
所以,从5个时间参数来看最小是精确到某一分钟执行。当然,通过互相组合已经满足绝大多数定时任务的需求了,毕竟,秒级别的定时任务还是比较少见和少用到的。既然5个时间参数没法实现,就只能靠其他方法了。于是想到写一个脚本,就如以下Shell小脚本。
 
#! /bin/bash
# Author    : 蛙鳜鸡鹳狸猿
# create    : 2017年 4月 16日 星期日 11:10:21 CST
# program   : process of second level crontab to script
# crontab   : NULL
# way 1
# for (( i=0; i<i+1; i++ ))
# do
# echo "@ $(date) I LOVE YOU" && sleep 1
# done
# way 2
# while [ 0 -lt 1 ]
# do
# echo "@ $(date) I LOVE YOU" && sleep 1
# done
# way 3
until [ 0 -gt 1 ]
do
echo "@ $(date) I LOVE YOU" && sleep 1
done
#
 
方法就是把命令放入一个条件永远满足或不满足的循环中每隔1秒执行一次。过程很简单!具体来说三种循环for、while和until都可以实现。这里也给出了三个脚本way 1,way 2和way 3。建议的话是用第三种,即没有注掉的way 3。第一种既要维持一个i计数器,同时也要做大小比较。第二种和第三种其实是一样的,区别在于第三种理解起来更粗暴,“一直do …… 直到 …… done”,适合于我们这个粗暴的环境。示例中是直到 0 > 1 否则每秒钟输出当前系统时间加上“I LOVE YOU”。LOVE个鬼,具体用的时候换成其他命令就行了,隔多少秒执行一次就改一下sleep参数。将其写入脚本执行后,就相当于实现了秒级别的定时任务crontab了!
 
本文永久更新地址:http://www.linuxdiyf.com/linux/30061.html