Linux crontab设置秒级运行

Linux contab 可以定时自动跑脚本,日常也经常使用,但它最小单位是每分钟执行一次,工作中需要每20s执行一次脚本,故写此文章记录下。

一、基础

contab语法:

crontab [ -u user ] {
          
    -l | -r | -e }

-r : 删除目前的时程表 -l : 列出目前的时程表

我常用的命令:

crontab -l				#查看
crontab -e				#编辑crontab

crontab中参数说明 cron有且仅有五个关于时间的参数,分别代表: 分钟(0-59),小时(0-23),一月中的第几天(1-31),月份(1-12),星期(0-6,0表示星期天)

f1 f2 f3 f4 f5 program			#格式:时间参数+所需要执行的命令
    其中 f1 是表示分钟,f2 表示小时,f3 表示一个月份中的第几日,f4 表示月份,f5 表示一个星期中的第几天。program 表示要执行的程序。 当 f1 为 * 时表示每分钟都要执行 program,f2 为 * 时表示每小时都要执行程序,其馀类推 当 f1 为 a-b 时表示从第 a 分钟到第 b 分钟这段时间内要执行,f2 为 a-b 时表示从第 a 到第 b 小时都要执行,其馀类推 当 f1 为 */n 时表示每 n 分钟个时间间隔执行一次,f2 为 */n 表示每 n 小时个时间间隔执行一次,其馀类推 当 f1 为 a, b, c,… 时表示第 a, b, c,… 分钟要执行,f2 为 a, b, c,… 时表示第 a, b, c…个小时要执行,其馀类推 PS:* * * * * 表示每分钟执行一次

二、实战

  1. 设置每天6:00 - 22:00之间,每20s执行一次 方法一:
*/1 6-22 * * * sleep 0;/bin/sh /usr/local/src/script/kill_long_sql.sh
*/1 6-22 * * * sleep 20;/bin/sh /usr/local/src/script/kill_long_sql.sh
*/1 6-22 * * * sleep 40;/bin/sh /usr/local/src/script/kill_long_sql.sh

执行命令中添加分号“;”可以连接很多shell命令,并且都按顺序执行

方法二: 写脚本调用(非crontab中执行)

$ cat every-20-seconds.sh
#!/bin/bash
while true
do
 /usr/local/src/script/kill_long_sql.sh
 sleep 20
done

$ nohup sh every-20-seconds.sh > every-20s.log 2>&1 &
经验分享 程序员 微信小程序 职场和发展