如何在Vagrant文​​件中运行sleep命令

时间:2016-09-27 17:45:52

标签: vagrant vagrantfile vagrant-provision

我有一个Vagrant文​​件。在运行vagrant时进入文件,rsync失败并且生成的实例变得无用(有时sshd进程在目标AWS实例可用后重新启动)。我想睡眠流浪汉rsync进程约20秒,并启动rsync到目标实例。所以,不要担心sshd进程。我在Vagrant文​​件中尝试了以下命令,但没有运气(在rsync运行之前指定以下命令)。请有人帮帮我

试验1:

 puts "Sleep for a while to keep SSH alive"
 sleep(20)

试验2:

   config.vm.provision "shell", inline: "echo Sleep for a while to keep SSH alive;sleep 20" 

Vagrantfile:

Vagrant.configure(2) do |config|
 FOLDERS_TO_SYNC = {
      "." => "/folder1",
      "../folder2" => "/folder2"
  }

config.vm.provider "aws" do |aws, override|
.....
  override.vm.provision "shell", inline: "echo Sleep for a while to keep SSH alive; sleep 20"
  override.vm.synced_folder "folder1", "dest/folder1", type: "rsync", create: true
  override.vm.synced_folder "folder2", "dest/folder2", type: "rsync", create: true

  end

  config.vm.provision "chef_solo" do |chef|
...
end

Vagrant v1.8.1

2 个答案:

答案 0 :(得分:0)

我做了类似的事,在我的情况下需要10秒钟。

这是我的Vagrantfile中的一行。

config.vm.provision "shell", inline: "cp #{host_sync_folder}/Resources/settings.xml /.m2 2>/dev/null || :; sleep 10"

我在你的审判2中看到,你之间缺少一个空的空间;和睡眠命令。

请尝试一下,让我知道。

答案 1 :(得分:0)

对于Windows / PowerShell

config.vm.provision "shell", inline: "Start-Sleep -s 15"

为我工作,请参阅here