linux crontab seconds按秒自动运行任务

如何在 Linux 中每 30 秒运行一次 cron 作业
cron 作业调度程序不支持将作业调度为以秒为间隔运行。在本文中,我们将向您展示一个简单的技巧,帮助您在 Linux 中每 30 秒或 x 秒运行一次 cron 作业。
您是 cron 作业调度程序的新手,并且想要每 30 秒运行一次作业吗?不幸的是,cron 不允许这样做。不能将 cron 作业安排为每 x 秒运行一次。Cron 仅支持至少 60 秒(即 1 分钟)的时间间隔。

方法1,使用crontab

#每30秒运行1次
crontab -e
* * * * * date>> /tmp/date.log
* * * * * sleep 30; date>> /tmp/date.log 
cat /tmp/date.log
tail -f /tmp/date.log

#每 10 秒运行一次
crontab -e
* * * * * date>> /tmp/date.log
* * * * * sleep 10; date>> /tmp/date.log
* * * * * sleep 20; date>> /tmp/date.log
* * * * * sleep 30; date>> /tmp/date.log
* * * * * sleep 40; date>> /tmp/date.log
* * * * * sleep 50; date>> /tmp/date.log
tail -f /tmp/date.log


#每 15 秒运行一次
crontab -e
* * * * * date>> /tmp/date.log
* * * * * sleep 15; date>> /tmp/date.log
* * * * * sleep 30; date>> /tmp/date.log
* * * * * sleep 45; date>> /tmp/date.log
tail -f /tmp/date.log

#每 20 秒运行一次
crontab -e
* * * * * date>> /tmp/date.log
* * * * * sleep 20; date>> /tmp/date.log
* * * * * sleep 40; date>> /tmp/date.log
tail -f /tmp/date.log

方法2,使用shell脚本

#每5秒运行1次
vi /opt/every-x-seconds.sh
#!/bin/bash

if [[ $# != 2 ]]
then
  echo script arguments: time and command
  exit
fi

while true
do
 $2
 sleep $1
done

chmod +x /opt/every-x-seconds.sh
apt install -y screen
screen /opt/every-x-seconds.sh 5 date