bash - Bash 中的定时器事件

标签 bash shell timer

我有一个无限期运行的 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/

相关文章:

Bash 无意中分割命令

c - 在后台执行命令

go - 在 Golang 中以最小间隔调用具有可变执行时间的函数的最佳方法?

bash - 创建新 shell 时自动源 bash 脚本

linux - 使用 sed 条件替换

windows - 在 cmd.exe 中执行批处理文件什么都不做

asp.net - 在 Global.asax 文件中创建计时器

c# - 使用 TimeSpan 作为定时器间隔

bash - 如何使我的计算机使用大量 RAM?

linux - 如何使用 shell 命令的输出设置期望变量