如何每秒运行一个特定的脚本?

如何每秒运行一个特定的脚本?

我尝试过使用 crontab,但它仅限于几分钟。还有其他选择吗?

我也尝试过类似的事情:

watch -n 1 sh /path-to-script/try.sh

但每当我关闭终端时它就会停止。我想要一些在后台持续工作的东西。

答案1

while使用带有循环 和 的脚本nohup

the_script.sh:

while :; do
  /path-to-script/try.sh
  sleep 1
done

运行the_script.sh不受挂断影响:

nohup /path/to/the_script.sh > /dev/null

/dev/null如果您关心 .txt 文件中的内容,请替换为某个文件路径stdout

答案2

根据您提供的信息,最佳答案可能是最简单的答案。使用具有无限循环和 1 秒延迟的 shell 脚本。

#!/bin/bash
# Program that checks if MySQL is running
while [ 1 = 1 ]; do
<your code here>
sleep 1
done

让脚本在终端外运行。这样它就在后台运行。

对于更具体的答案,我需要知道您使用什么命令以及如果它没有运行您会做什么。例如。发送通知或电子邮件。

答案3

该例程将每秒连续运行 try.sh 除非它已经在运行。如果已经在运行,它将暂停,直到前一个执行结束。

loop_script.sh: 




while true; do  
   if [[ ! $(pgrep -x /path-to-script/try.sh) -gt 1 ]]; then  
      /path-to-script/try.sh  
   fi  
  
   sleep 1  
done  

这样执行:

nohup /path/to/loop_script.sh & > /dev/null

然后点击^C以重新获得控制台。

必须使用kill命令停止loop_script.sh

相关内容