linux – 使用“watch”在Bash中重复运行一个函数?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了linux – 使用“watch”在Bash中重复运行一个函数?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1655字,纯文字阅读大概需要3分钟。
内容图文
这是我的第一个Bash脚本.我的Debian机器有WiFi问题.我不是在这里询问原因,而是如何在Bash的问题上设置一个创可贴.我的WiFi将随机退出,通常每12-15分钟一次.我在这台服务器上使用SSH,并且不希望从物理服务器手动运行ifdown wlan0和ifup wlan0(重新连接WiFi).
此Bash脚本的功能是尝试连接三次.如果它失败三次,它就会放弃.否则,每三秒钟它会通过尝试ping Google来检查我的服务器是否已连接.
#!/bin/bash
ATTEMPTS=1
function test_connection {
ping -c 1 www.google.com
local EXIT_CODE=$?
if [ $EXIT_CODE -eq 0 ]
then
return true
else
return false
fi
}
function reset_connection {
ifdown wlan0
ifup wlan0
EXIT_CODE=$((EXIT_CODE+1))
}
function connection_test_loop {
if [ $ATTEMPTS -ge 3 ]
then
echo CONNECTION FAILED TO INITIALIZE ... ATTEMPT $ATTEMPTS FAILED ... EXITING
exit
fi
if ! [ test_connection ]
then
echo CONNECTION DROPPED ... ATTEMPTING TO RE-ESTABLISH CONNECTION ... ATTEMPT $ATTEMPTS
reset_connection
fi
}
test_connection
if [ $? ]
then
echo CONNECTION PRE-ESTABLISHED
watch -n 3 connection_test_loop
else
echo CONNECTION FAILED TO INITIALIZE ... ATTEMPTING TO RESET CONNECTION ... ATTEMPT $ATTEMPTS
reset_connection
if [ $? ]
then
echo CONNECTION ESTABLISHED
watch -n 3 connection_test_loop
else
echo CONNECTION FAILED TO INITIALIZE ... ATTEMPT $ATTEMPTS FAILED ... EXITING
exit
fi
fi
我已经分离了我对这个脚本的问题.它在于使用watch调用connection_test_loop函数.我一直无法找到任何关于为什么没有按预期执行并且每三秒运行一次该功能的信息.
解决方法:
手表可能不知道你的connection_test_loop函数.您可以尝试在test_connection下面添加一个export来解决问题:
test_connection
export -f connection_test_loop
...
?http://linuxcommand.org/lc3_man_pages/exporth.html
调用watch时,您可能需要以下语法:
watch -x bash -c connection_test_loop
内容总结
以上是互联网集市为您收集整理的linux – 使用“watch”在Bash中重复运行一个函数?全部内容,希望文章能够帮你解决linux – 使用“watch”在Bash中重复运行一个函数?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。