4

我的 shell 配置器是一个小型 bash 脚本,它 apt-gets 一些东西,通过 cpan 安装一些 Perl 模块,设置 Apache 和 MySQL,回显一些文本,然后存在。

除了在打印其最终消息后,它似乎没有退出,而是永远挂起。

我忘记做某事了吗?我该如何开始调试呢?

如果我使用 VirtualBox 管理器关闭虚拟机,我会得到一个堆栈跟踪,其头部显示,

/Applications/Vagrant/embedded/gems/gems/net-ssh-2.6.7/lib/net/ssh/ruby_compat.rb:30:in `select': closed stream (IOError)

主机操作系统:OS X Snow Leopard 来宾操作系统:Ubunut viaprecision32

TIA

4

2 回答 2

4

这确实是一条评论,但我没有足够的声誉将其作为评论发布。

我会建议两种技术来调试这个问题。

1) 在 Vagrant 中启用调试,如下所示:

VAGRANT_LOG=info vagrant up

2)set -x在 shell 脚本的顶部定义以将 shell 脚本的一行链接到它在运行时创建的输出。这应该允许您查看您的 shell 脚本的哪一行挂起。

使用 Vagrantfile 更新您的问题也将帮助我们引导您朝着正确的方向前进。

于 2013-06-28T23:06:37.133 回答
1

这个问题应该在 Vagrant 版本 1.2.4 或更新版本中得到解决,其中包括一个在 shell 配置程序退出时关闭 ssh 通道的修复程序。

于 2013-08-21T18:08:40.013 回答