有没有办法实时看到我的服务器和通过哪些域的连接?
不必检查access.log文件,我想在shell中运行监视器。
Ubuntu 10 Webserver:lighttpd
谢谢
来自access.log的示例行
::ffff:000.00.00.000 www.domain.com - [10/Nov/2010:12:42:49 +0100] "GET / HTTP/1.1" 200 295 "-" "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2.10) Gecko/20100914 Firefox/3.6.10"
有一个名为iptraf的软件包,可以显示你的服务器的连接。
你可以通过安装sudo apt-get install iptraf
您也可以使用以下命令从access.log中提取信息
tail -f access.log | awk '{print $1 "\t" $2}'
在我的例子中,列出了UA提供的远程IP和HTTP 1.1主机名。
所以让我们简单看一下上面显示的命令:
其实这两个命令叫做tail和awk 。 tail通常会输出文件的最后10行,但使用-f参数时,我们会要求它继续查看文件并在写入文件时打印新行。
Pipe( | )是一个众所周知的特性,因为它使用程序的输出(即tail )作为另一个程序input(即awk )。
最后,第二个命令awk '{print $1 "\t" $2}'从tail获取input,并将输出限制到我们需要的列。 (在我的例子中,这些是第一个列,所以我用$1和$2如果你的access.log使用另一个列顺序,你可能要相应地改变数字。
这将生成一个类似于此的实时列表:
92.17.166.190--pacey.me 92.17.166.191--pacey.me 92.17.166.192--anotherdomain.com 92.17.166.193--anotherdomain.com
我试图用下面的命令重现你遇到的错误。
echo ::ffff:000.00.00.000 www.domain.com - [10/Nov/2010:12:42:49 +0100] "GET / HTTP/1.1" 200 295 "-" "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2.10) Gecko/20100914 Firefox/3.6.10" | awk '{print $1 "\t" $2}'
但是,即使是对我而言:
::ffff:000.00.00.000 www.domain.com
尝试topvhost
由于日志格式与Apache相同, apachetop可能适用于您。
它在Ubuntu软件包仓库中可用,所以sudo apt-get install apachetop应该立即安装它。
用法: apachetop -f /path/to/your/access.log