修复ifup / 如果up-eth中的Django / 流浪汉错误

我通常使用本地无业游民实例测试django项目。 流浪汉创建了一个运行django项目的虚拟机,该虚拟机可立即识别代码更改。但是,我最近正在运行测试,因此VM突然开始输出错误消息,如下所示。注意:我’已编辑这些终端输出的某些部分。

(滚动到这篇文章的底部以跳至解决方案)

没有翻译文件?一世’我从来没有听说过他们。认为这可能是一个随机错误,因此我尝试再次运行测试并得到:

我尝试注销实例,但遇到I / O错误:

尝试再次ssh进入VM:

有时“关闭并重新打开”解决方案可以工作,所以让’s尝试流浪者重装:

此轮超时错误。该错误似乎与身份验证有关,但它’并非全部。尽管未正确设置,但VM仍根据全局状态运行,这有点奇怪。

我也跑了 名为VirtualBox的GUI 有时对于可视化笔记本电脑上的所有VM十分方便。检查那里,它似乎也存在–所以全局状态’t lying 至 我们. 让’s try 停ing 它:

这次强制关闭。到目前为止,调试此错误是’不好完全奇怪,因为VM事先运行良好。在产生相同的超时后流浪汉:

让’尝试完全销毁无业游民的实例….

从头开始:

那’这是一个非常奇怪的错误。也许某些事情随机失败了?

显然,它仍然创建了VM。 SSH协议进入它可以做到这一点:

奇怪的是没有文件!还是有东西’t startup properly.

在这一点上,我有点沮丧,并开始向Google询问错误。我可以找到的最相关的博客文章是Mike Berggren’s solution here: http://mikeberggren.com/post/100289806126/if-up。他解决了这个问题并报告:“我会为您省去其余的细节,但足以说明这一点,我们最终绕过了该检查并从主机运行了相同的命令。它返回了另一个声称拥有所有权的MAC地址“。这是否意味着他从字面上注释掉了进行检查的代码行?他可能遇到了非常不同的问题,而我’我不是开发人员专家,但也许在那里’s a 更好 solution –也许那张支票是有原因的。

让’回顾一下前面提到的网络错误:

删除流浪者文件,并显示相同的IP地址。这意味着该特定的无业游民总是被分配该IP地址。如果这是唯一的实例,那么该虚拟网络上的其他对象正在使用它吗?我的mac电脑内部存在某些问题。

我们可以检查一下’通过检查正在运行的进程来真正运行(除了global-status和VirtualBox所说的那样):

啊哈!实际上有两个。让’销毁我们之前创建的无法运行的空白虚拟机,并查看是否有任何更改:

是的,它已经消失了:

使用kill -9 [pid]删除它。

现在让’尝试重新创建VM:

有用!

结论:

  • I’我仍然不确定为什么会首先发生这种情况。一开始的错误完全是突然的– I’d已在该虚拟机上运行了几周而没有任何问题。也许事实是我’d已经运行了这么长时间?
  • 流浪汉的全局状态和VirtualBox似乎不能完全准确地报告正在运行的虚拟机,因此绝对可以使用ps检查所有正在运行的vbox进程,并删除没有’t正确关闭。这让我想起了–全局状态下的修剪选项(//www.vagrantup.com/docs/cli/global-status.html),它可以修复持久性旧条目。

非常感谢Tony(http://blog.tonns.org/)以帮助解决此问题!

发表评论 取消回复