我尝试过使用 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