有没有办法在Linux中循环控制台命令?


0

问题:

我在Fedora 19的控制台中尝试这个(以root身份):

yum install httpd

它返回的是:

加载的插件:langpacks,refresh-packagekits错误:无法检索存储库的metalink:fedora / 19 / x86_64。请验证其路径,然后重试。

很少有这个错误,但是当我得到它时,我得到它一天。

我尝试了什么:

yum update 返回相同的错误。

这已经持续了一段时间,基本上是我刚才的问题旁支这里

如果我等待足够长的时间,控制台命令最终会起作用。但有没有办法循环命令直到它成功?


你可能会扭曲watch这个purpsoe的使用,虽然它一旦工作就不会停止并继续直到它收到一个sigterm / Ctrl + C
mveroone

Answers:


1

就像是

 while true; do
    yum install httpd && break
    sleep 10
 done

应该管用。(睡眠量以秒为单位)。

你可以在一行中输入它,;如下所示:

while true; do yum install httpd && break; sleep 10; done

添加

正如Politowski在评论中建议的那样,你也可以尝试:

 while ! yum install httpd; do sleep 10; done

这可能看起来更好/更短/更清晰/更容易记住/理解某人。(以为至少有一个shell无法运行它,但它在“Linux”系统中并不常见,所以几乎可以肯定你不必担心它)。


我只是在控制台中输入这个吗?该sleep怎么做,以及如何检测命令是否成功?只是好奇。
zack_falcon 2014年

单行对于控制台来说更好,但你也可以用其他方式输入它,shell只会询问下一个预期的行。睡眠“休眠”N秒。例如,如果你想在一分钟后重试,你可以等待60秒,sleep 60
ShinTakezou 2014年

这样做了,谢谢。它成功后会自动破坏吗?希望其中一个重复命令能够通过。
zack_falcon 2014年

如果yum命令正确地使用返回代码来表示它是否失败,它是否有效; 如果确实如此,那么当它成功时,无限循环将被打破。
ShinTakezou 2014年

1
为什么不简单while ! yum install httpd; do sleep 10; done
MichałPolitowski
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.