Prashant Luhar Asked: 2017-12-14 13:10:14 +0800 CST2017-12-14 13:10:14 +0800 CST 2017-12-14 13:10:14 +0800 CST 我怎样才能每秒运行一个特定的脚本? 772 我曾尝试使用 crontab,但仅限于几分钟。还有其他选择吗? 我也尝试过类似的东西: watch -n 1 sh /path-to-script/try.sh 但是每当我关闭终端时,它就会停止。我想要一些在后台持续工作的东西。 shell-script shell 3 个回答 Voted Best Answer NarūnasK 2017-12-14T14:54:35+08:002017-12-14T14:54:35+08:00 使用带有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如果您关心stdout. TheNH813 2017-12-14T13:29:33+08:002017-12-14T13:29:33+08:00 根据您提供的信息,最佳答案可能是最简单的答案。使用具有无限循环和 1 秒延迟的 shell 脚本。 #!/bin/bash # Program that checks if MySQL is running while [ 1 = 1 ]; do <your code here> sleep 1 done 让脚本在终端外运行。这样它就在后台运行。 对于更具体的答案,我需要知道您使用什么命令以及如果它没有运行您会做什么。例如。发送通知或电子邮件。 John 2021-02-28T06:46:54+08:002021-02-28T06:46:54+08:00 该例程将每秒连续运行 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
使用带有
while
循环的脚本和nohup
.the_script.sh:
对挂断
the_script.sh
免疫:/dev/null
如果您关心stdout
.根据您提供的信息,最佳答案可能是最简单的答案。使用具有无限循环和 1 秒延迟的 shell 脚本。
让脚本在终端外运行。这样它就在后台运行。
对于更具体的答案,我需要知道您使用什么命令以及如果它没有运行您会做什么。例如。发送通知或电子邮件。
该例程将每秒连续运行 try.sh ,除非它已经在运行。如果已经运行,它将暂停,直到前一次执行结束。
这样执行:
然后点击
^C
重新获得控制台。必须使用
kill
命令停止loop_script.sh