我有一个无限期运行的 bash 脚本。我到处搜索解决方案,将定时事件添加到每 5 分钟触发一次的脚本中,同时脚本的其余部分继续运行。我不能让脚本休眠,因为它不断地向服务器发送/接收信息。有没有人有任何功能或想法可以实现这一目标。基本上我希望它每 300 秒(5 分钟)向服务器发送一个特定的命令。我无权重写服务器代码以每 5 分钟请求一次命令。
基本上主脚本是这样的:
#!/bin/bash
Var1="localhost"
Var2="2356"
Var3="DSDSASAQ"
Var4= "Admin"
#other variables as needed.
function fun1(){
#do some stuff
}
function fun2(){
#do some stuff
}
function fun3(){
#do some stuff
}
#Main code section.
exec 3<>/dev/tcp/${Var1}/${Var2}
echo "login Var4 Var3" >&3
While read LINE <&3;
do
#do some stuff
done
exit $?
感谢任何帮助。我也尝试过像 start=$SECONDS 和 duration=$SECONDS-$start 之类的东西,并在 while 循环中使用 if...then 语句进行检查,但它往往会在重置 start 变量之前多次触发命令。 ..服务器也喜欢在检测到垃圾邮件时断开链接,因此在短时间内发送 10 次以上的相同命令并不理想。
最佳答案
在单独的后台进程中运行一个循环。
#!/bin/bash
...
#Main code section.
exec 3<>/dev/tcp/${Var1}/${Var2}
# watchdog
while sleep 300 & wait; do
echo "login Var4 Var3"
done >&3 &
trap "kill $!" EXIT
while read LINE <&3;
do
#do some stuff
done
exit $?
关于bash - Bash 中的定时器事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43922761/