Jekyll--监视命令在使用Virtual box Ubuntu来宾计算机的共享文件夹(nfs)Mac主机中不起作用
我有一个运行Ubuntu的虚拟机。我已经配置了一个nsf共享(当我说我时,有人帮了我,所以我对NFS共享不是很了解),这样我就可以在我的Mac主机上工作,并使用它的工具,如Sublime Text 但是,当我运行以下命令时:Jekyll--监视命令在使用Virtual box Ubuntu来宾计算机的共享文件夹(nfs)Mac主机中不起作用,ubuntu,virtualbox,jekyll,nfs,watch,Ubuntu,Virtualbox,Jekyll,Nfs,Watch,我有一个运行Ubuntu的虚拟机。我已经配置了一个nsf共享(当我说我时,有人帮了我,所以我对NFS共享不是很了解),这样我就可以在我的Mac主机上工作,并使用它的工具,如Sublime Text 但是,当我运行以下命令时:jekyllserve--watch 当我更改代码时,站点不会自动重新生成。因此,目前我必须停止服务器并再次运行该命令 编辑: 此外,如果我在nfs共享之外创建一个jekyll站点,它也可以正常工作。只是来宾计算机上的标准普通文件夹。更新至最新版本的Jekyll,或至少更新至
jekyllserve--watch
当我更改代码时,站点不会自动重新生成。因此,目前我必须停止服务器并再次运行该命令
编辑:
此外,如果我在nfs共享之外创建一个jekyll站点,它也可以正常工作。只是来宾计算机上的标准普通文件夹。更新至最新版本的Jekyll,或至少更新至Jekyll v 1.2.1然后卸载Jekyll v 1.4.2并安装Jekyll v 1.2.1 要执行此操作,请运行这些命令
gem uninstall jekyll
y
gem install jekyll -v 1.2.1
无需安装较旧版本的jekyll-您需要使用
--force_polling
。解释如下:
VirtualBox不会向来宾发送共享文件夹的inotify
事件。这是有意的:
inotify
events,这样效果更好。虽然这会中断对共享文件夹的侦听,但在使用构建或服务时,可以使用--force_polling
选项和--watch
强制执行旧行为:
jekyll serve --watch --force_polling
我从杰基尔回购协议的相关问题中发现了这一点:
更新:我自己也开始通过VirtualBox使用jekyll,发现jekyll通过共享文件夹查看文件时有时会出现一个小问题:它读取文件修改错误,结果是,应该不经修改地复制到生成站点的文件与其以前的版本相同,只是末尾有垃圾回车(是的,即使文件格式设置为unix行结尾)。要解决此问题,您可以使用rsync
将文件复制到虚拟硬盘,并让jekyll监视该目录:
rsync -a --recursive --delete /source/directory/ /target/directory/inside/vm/
要使其自动化,您可以将上述内容转换为脚本(或不转换),并使用watch
:
watch -n1 /path/to/rsync/script.sh
然后让jekyll监视目标目录,它就可以正常工作了。如果您这样做,--force_polling
应该没有必要,除非您的虚拟化操作系统没有使用inotify
事件。我保持原样,没有出现任何问题,尽管显然,inotify
事件是处理问题的一种更优雅的方式。您运行的是什么版本的jekyll?运行jekyll-v
查看。我发现了这一点,四处摸索:-似乎在jekyll 1.2.1
之后,您只需要对VirtualBox使用强制轮询(添加--force_polling
),因为inotify
事件不会像预期的那样发送给共享文件夹,因此jekyll
必须手动轮询文件。显然,jekyll
用于强制轮询,默认值为1.2.1,后来更改。我目前使用的是1.4.2它的强制轮询非强制-polling@Emad你说得对,更正了。在我开始使用jekyll之前写了这篇文章:P