我写了一个帮助程序来debugging清漆安装,并在生产和开发服务器上使用它。 奇怪的是,即使设置几乎相同(硬件除外),我遇到了不同的行为。
该命令是:
varnishlog > /var/log/v1.log & curl -I $URL; kill $!
在我们的生产服务器上,它按预期工作: varnishlog
作为后台进程启动,并将其输出redirect到/var/log/v1.log
– 然后执行curl
,当varnishlog
被终止时(尽pipe我没有看到'terminate'消息,直到下一个命令被执行)。
在我们的开发服务器上,命令执行并在crul
输出后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
varnishlog | tee /var/log/v1.log
(后者不会将产品输出到控制台)。 其他命令(例如echo 'test' > /var/log/v1.log
)按预期工作。 两台机器的清漆版本完全相同( varnish-3.0.5 revision 1a89b1f
)。