我编写了一个助手来调试 varnish 安装,并在生产和开发服务器上都使用了它。奇怪的是,尽管设置几乎相同(硬件除外),但我遇到了不同的行为。
命令是:
varnishlog > /var/log/v1.log & curl -I $URL; kill $!
在我们的生产服务器上,它按预期工作:varnishlog
作为后台进程启动并将其输出重定向到/var/log/v1.log
- 然后curl
执行,完成后被varnishlog
终止(尽管直到执行下一个命令我才看到“终止”消息)。
在我们的开发服务器上,命令执行后,在crul
输出后立即出现“终止”消息。但是,/var/log/v1.log
为空。
两台服务器uname -srvmo
均已返回Linux 2.6.32-358.18.1.el6.x86_64 #1 SMP Wed Aug 28 17:19:38 UTC 2013 x86_64 GNU/Linux
并且正在运行CentOS release 6.4 (Final)
。
编辑:似乎varnishlog > /var/log/v1.log
不起作用。 或varnishlog > /var/log/v1.log 2>&1
也不起作用varnishlog | tee /var/log/v1.log
(后者也不会将输出输出到控制台)。 其他命令(例如echo 'test' > /var/log/v1.log
)按预期工作。 两台机器上的 Varnish 版本完全相同(varnish-3.0.5 revision 1a89b1f
)。