如何重复执行一个Linux命令,直到成功为止
【YINGSOO提示】文章内容收集整理于网络,仅供参考!如需了解“如何重复执行一个Linux命令,直到成功为止”等有关服务器、云主机租用、托管、配置、价格问题,请咨询YINGSOO客服,为您答疑解惑!
【主机上新】俄罗斯云服务器 | 韩国CN2服务器 | 日本云服务器
【精选文章】如何选择海外云主机?看完这7条你就会选了
如果你想在Linux系统服务器上运行一个命令,直到它成功,有一些非常简单的方法可以做到这一点,不需要你重复输入命令或坐在屏幕前按! ,直到命令成功为止。在这篇文章中,我们将看看bash的两个选项。
1、使用 while !
首先,我们来看看一个简单的例子,试图显示一个文件的内容。这个技巧是使用bash的while命令来创建一个循环,但是在你要运行的命令前加上一个 !号,这样它就可以循环,直到命令成功为止。下面是它的工作原理。
$ while ! cat missingfile
! 作为一个 "不 "条件。把这一行读成 "虽然不能显示指定的文件"。 如果文件确实丢失了,或者由于某种原因,你没有读取文件的权限,那么显示 "missingfile" 的内容的尝试就会失败。然而,为了完成while命令,你需要指定文件不可用时应该发生的事情。所以,我们在这里增加了一些行来充实while命令。
$ while ! cat missingfile
do
echo waiting for missingfile
sleep 10
done
一旦某个人或进程把missicefile丢到了, cat missfile命令应该会成功(假设你有权限查看),while命令会在下一次检查时退出。睡眠命令可以确保你不会每隔一秒钟就尝试很多次,迅速让你的屏幕上充满了 "waiting for missicefile "的消息。你检查的频率应该取决于你是想在文件可用的时候就看到它,还是要等待一段时间--在这种情况下,最多10秒。
echo命令真的不需要,除非你想被提醒你在等待文件可用的时候,否则就不需要。
一旦文件可用,while命令就会退出,你就可以进入下一步--可能是以某种方式使用该文件,或者在确定文件可用后再转到其他任务上。
你也可以在运行脚本时使用这种方法。在这个命令中,我们每隔10秒尝试一次while命令,等待runme脚本运行成功。
$ while ! ./runme
do
sleep 10
done
注意,"while ! ./runme "命令相当于指定了 "当脚本运行失败时"。
2、使用until
你也可以使用 "until "命令来完成同样的事情。你可以使用 "直到它是 "逻辑来代替 "while not "逻辑。这些命令的工作原理与上图中的相同。
$ until cat missingfile
do
echo waiting for missingfile
sleep 10
done
$ until ./runme
do
sleep 10
done
一旦出现missingfile或runme脚本成功运行,循环将退出。
3、脚本中的循环
你也可以使用while ! 或 until命令来反复尝试运行脚本中的一些命令。如果你有一个依赖其他文件运行的脚本,你可以这样做。
#!/bin/bash
until ls myscript 2>/dev/null
echo waiting
sleep 10
done
./myscript
脚本将继续尝试,直到它能运行指定的脚本。
注意,这个脚本会显示出它正在等待myscript出现的消息,但它会将测试中的错误输出发送到/dev/null(又名 "bit bucket"),以防止脚本显示错误,表明有什么东西坏了。一旦myscript可用,循环退出,脚本就会运行。
当然,你可能根本不想看到 "等待 "的信息填满你的屏幕。你可以完全省略回声命令,尤其是当你确信脚本最终会被运行,并且在完成后会收到通知。
爆款产品:美国服务器去首页享优惠!YINGSOO推出Phala挖矿服务器、Chia奇亚农场服务器、Swarm物理节点服务器、Swarm母鸡服务器、Swarm云节点服务器、国内矿机服务器海外托管、《Phala PHA挖矿资料大全》,《swarm bzz挖矿资料大全》,Swarm Bee节点租用请咨询YINGSOO客服!官网WWW.YINGSOO.com
版权声明:本站文章来源标注为YINGSOO的内容版权均为本站所有,欢迎引用、转载,请保持原文完整并注明来源及原文链接。禁止复制或仿造本网站,禁止在非www.yingsoo.com所属的服务器上建立镜像,否则将依法追究法律责任。本站部分内容来源于网友推荐、互联网收集整理而来,仅供学习参考,不代表本站立场,如有内容涉嫌侵权,请联系alex-e#qq.com处理。