![为什么 tail 和 grep 的组合会在一段时间后冻结我的 ssh 会话?](https://linux22.com/image/1624716/%E4%B8%BA%E4%BB%80%E4%B9%88%20tail%20%E5%92%8C%20grep%20%E7%9A%84%E7%BB%84%E5%90%88%E4%BC%9A%E5%9C%A8%E4%B8%80%E6%AE%B5%E6%97%B6%E9%97%B4%E5%90%8E%E5%86%BB%E7%BB%93%E6%88%91%E7%9A%84%20ssh%20%E4%BC%9A%E8%AF%9D%EF%BC%9F.png)
sudo tail -f -n0 /var/log/nginx/access.log | grep -Ev '1.2.3.4'
我有一个 nginx.log,需要监控除我自己的 IP(1.2.3.4)之外的所有线路。除了来自我自己 IP 的连接外,Web 服务器没有看到太多活动,所以我想看看还发生了什么。
上述命令组合有效期为 cca。10 分钟后,命令输出就冻结了 - 我的 ssh 会话没有终止,但需要很长时间才能使用 Ctrl-Z 恢复。
有任何想法吗?
编辑1:我已经尝试了迄今为止发布的建议,但似乎都没有发挥上述命令所能达到的作用。
答案1
通常来说,在grep -v
a 中使用tail -f
正则表达式不是一个好主意。在 grep 中使用正则表达式也是一个坏主意。
你最好尝试类似这样的方法:
tail -f /var/log/nginx/access.log | perl -pe 'if (/1\.2\.3\.4/) {$_ = ""}'
-n0
如果仅需要遵循新行,请添加。
编辑:请注意将 ' 放在 $ 符号外面,以避免 shell 评估