前言:
crond服务提供分钟级的定时任务,但有的应用场景需要秒级的执行脚本,比如不稳定的应用程序,或者需要高可用的服务等等,整理测试后,有两种办法:1.使用while写一个死循环,并将脚本放入后台执行。2.使用sleep,根据脚本的需求来进行crontab的修改。
第一种办法:
#!/bin/bash
while true;do
echo "hahaha"
sleep 1
done
放入后台执行的方法为,在执行脚本的命令后面加上&符号就行
第二种办法:
使用sleep与crontab结合起来:
*/1 * * * * root /script/mstest.sh
*/1 * * * * root sleep 5;/script/mstest.sh
*/1 * * * * root sleep 10;/script/mstest.sh
*/1 * * * * root sleep 15;/script/mstest.sh
*/1 * * * * root sleep 20;/script/mstest.sh
*/1 * * * * root sleep 25;/script/mstest.sh
*/1 * * * * root sleep 30;/script/mstest.sh
*/1 * * * * root sleep 35;/script/mstest.sh
*/1 * * * * root sleep 40;/script/mstest.sh
*/1 * * * * root sleep 45;/script/mstest.sh
*/1 * * * * root sleep 50;/script/mstest.sh
*/1 * * * * root sleep 55;/script/mstest.sh
如上所示,每5s执行一次。需要注意的是,上面的配置是修改/etc/crontab文件的,使用/etc/crontab需要使用加上用户名,而crontab –e 则不需要,redhat系统每分钟定时设置为 * * * * * 而ubuntu为*/1 * * * *
总结:
相对来说还是第二种方法比较可靠,crontab服务在每次系统重新启动的时候都会自动加载配置文件,而第一种办法需要手动启动,并且不好检查,当然,这种方式对需要暂停脚本的情况来说又不友好了,想了一个办法:修改脚本的名称,而后需要启动脚本的时候,将脚本的名称可以改回来。