Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jekyll--监视命令在使用Virtual box Ubuntu来宾计算机的共享文件夹(nfs)Mac主机中不起作用_Ubuntu_Virtualbox_Jekyll_Nfs_Watch - Fatal编程技术网

Jekyll--监视命令在使用Virtual box Ubuntu来宾计算机的共享文件夹(nfs)Mac主机中不起作用

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,或至少更新至

我有一个运行Ubuntu的虚拟机。我已经配置了一个nsf共享(当我说我时,有人帮了我,所以我对NFS共享不是很了解),这样我就可以在我的Mac主机上工作,并使用它的工具,如Sublime Text

但是,当我运行以下命令时:
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
事件。这是有意的:

默认情况下,1.2.1版之前的jekyll会轮询目录中的更改,但此后它改变了侦听修改的方式,显然是使用
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