Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.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
Unix/CentOS如何解析访问日志并将任何匹配项记录到文件_Unix_Ssh_Centos_Tail_Access Log - Fatal编程技术网

Unix/CentOS如何解析访问日志并将任何匹配项记录到文件

Unix/CentOS如何解析访问日志并将任何匹配项记录到文件,unix,ssh,centos,tail,access-log,Unix,Ssh,Centos,Tail,Access Log,我在后台运行(SSH) tail-f访问日志| grep'POST/index.php'>测试& 我在存储访问日志和错误日志的/var/log/httpd中运行了这个命令 我一直在做ls-l,以查看test文件大小是否更改,但它已创建。。并且始终为0字节 我是否使用了正确的命令tail?做我想做的事 我希望能够过滤掉无用的访问日志信息,只将POST/index.php存储在不同的文件中 我知道,即使在我迭代访问日志时,它也会不断修改自己,但如果可以从上到下(head?我想)开始,那会更好。tai

我在后台运行(SSH)
tail-f访问日志| grep'POST/index.php'>测试&

我在存储
访问日志
错误日志
/var/log/httpd
中运行了这个命令

我一直在做
ls-l
,以查看
test
文件大小是否更改,但它已创建。。并且始终为0字节

我是否使用了正确的命令
tail
?做我想做的事

我希望能够过滤掉无用的访问日志信息,只将POST/index.php存储在不同的文件中


我知道,即使在我迭代访问日志时,它也会不断修改自己,但如果可以从上到下(
head
?我想)开始,那会更好。

tail-f
将有连续的输出,因此
>test
可能永远不会创建文件

艾哈迈德·马苏德的答案中的建议可能比这更好,因此请先尝试一下,但如果这对您不起作用,您可以每分钟或每小时运行一次,或者如果您不需要担心超高效的话:

grep 'POST /index.php' access_log > test
这将在每次运行时完全重新创建文件
test
,而不是以增量方式构建它。但如果你只是想要一个粗糙的工具,那就可以完成


如果这样做并且日志文件被旋转,那么在新文件上运行此操作后,您将不再拥有
test
中先前日志文件中的内容。所以一定要意识到这一点!另一方面,使用
tail-f
,如果文件旋转,您将停止获取数据,直到重新启动该过程(除非您使用
>
而不是
),否则它也将吹走您的旧数据)。

tail-f
将具有连续输出,因此
可能永远不会创建文件

艾哈迈德·马苏德的答案中的建议可能比这更好,因此请先尝试一下,但如果这对您不起作用,您可以每分钟或每小时运行一次,或者如果您不需要担心超高效的话:

grep 'POST /index.php' access_log > test
这将在每次运行时完全重新创建文件
test
,而不是以增量方式构建它。但如果你只是想要一个粗糙的工具,那就可以完成


如果这样做并且日志文件被旋转,那么在新文件上运行此操作后,您将不再拥有
test
中先前日志文件中的内容。所以一定要意识到这一点!另一方面,使用
tail-f
,如果文件旋转,您将停止获取数据,直到重新启动该进程(除非您使用
>
而不是
),否则它也将吹走您的旧数据)

tail -f access_log | while read r ; do 
      echo $r | grep 'POST[[:space:]]*/index.php' >> out
done

这应该可以解决恼人的刷新问题。

尝试在shell脚本中执行此操作

tail -f access_log | while read r ; do 
      echo $r | grep 'POST[[:space:]]*/index.php' >> out
done


这应该可以消除讨厌的刷新问题。

另一个想法:“tail-F-n+1”将跟踪日志文件的旋转并从文件顶部读取。另外,您确定您的日志中确实有POST行吗?只是问。。。最后,文件权限是否合适?

其他想法:“tail-F-n+1”将跟踪日志文件的旋转并从文件顶部读取。另外,您确定您的日志中确实有POST行吗?只是问。。。最后,文件权限是否合适?

我知道,我刚从某个地方的另一篇博文中得知。你知道我怎样才能做得更好吗?如果艾哈迈德·马苏德的方法对你有用的话,那可能是最好的方法。如果不是的话,我已经在答案中添加了一个钝锤方法。哇,
grep'POST/index.php'access\u log>test
在任何单位运行。谢谢,我明白了,我刚从某个地方的另一篇博文中得知。你知道我怎样才能做得更好吗?如果艾哈迈德·马苏德的方法对你有用的话,那可能是最好的方法。如果不是的话,我已经在答案中添加了一个钝锤方法。哇,
grep'POST/index.php'access\u log>test
在任何单位运行。谢谢,看起来有点长。。Trott的解决方案只需几秒钟就可以在800 MB的访问空间上运行,而您只是想将其grep。。。我以为你想在将来随着日志的增长而不断刷新它,所以我给出了这个解决方案。对不起,我不知道这就是它的用途,这也很好。。但我真的只是想提取所有POST IP并清除访问权限_log@SSpoke您可能需要查看logrotate(请参阅:)中的教程。这是一个非常好的软件。你必须小心的一件事是如何“清除”访问日志;如果你做得不正确,你可能不得不重新启动你的服务器或杀掉它;我只是每周做
echo>access\u log
,我不知道它会导致什么问题,但它确实有效。谢谢,似乎有点长。。Trott的解决方案只需几秒钟就可以在800 MB的访问空间上运行,而您只是想将其grep。。。我以为你想在将来随着日志的增长而不断刷新它,所以我给出了这个解决方案。对不起,我不知道这就是它的用途,这也很好。。但我真的只是想提取所有POST IP并清除访问权限_log@SSpoke您可能需要查看logrotate(请参阅:)中的教程。这是一个非常好的软件。你必须小心的一件事是如何“清除”访问日志;如果你做得不正确,你可能不得不重新启动你的服务器或杀掉它;我只是每周做
echo>access\u log
,我不知道它会导致什么问题,但它是有效的。是的,我确实收到了一大堆POST请求,我需要检查他们每个人的IP以找到罪犯,这样我就可以对他们采取行动。是的,我确实收到了一大堆POST请求,我需要检查他们每个人的IP以找到罪犯,这样我就可以对他们采取行动。