有没有办法拦截 Apache(1 或 2)访问日志到 stdout没有:
- 修改配置文件
- 重启服务
目前我的 apache 配置文件指定“CustomLog /dev/null common”系统是 Debian Etch。
提前感谢 serverfault 社区!
编辑:这个想法是执行“strace -p”对进程执行的操作。我希望 apache2ctl 或其他程序具有“转储当前访问”功能 :D
答案1
如果您正在寻找特定问题的解决方案,您可能需要更详细地解释您的要求和限制。但就目前情况而言,只需:
你能截取去往 的数据吗
/dev/null
?
没有。
您能否告诉 Apache 在其他地方登录而无需修改其配置文件或重新启动服务。
没有。
更新:
我还没想过使用strace
。但事实上,你可以用它来检查write()
调用。
strace -ewrite -s1000 -p<PID>
跟踪进程时,你会遇到一些困难。我认为 strace 的 fork 检测不一定能帮到你。这意味着你将不断地四处寻找哪个进程处理了给定的请求。
至于 Apache 中的这种功能。这太糟糕了,根本不可能存在。我认为你是一个极端案例 ;)
答案2
临时更改配置文件,然后重新加载它们怎么样?您要求重新配置 Apache,很简单。如果您关心的是可用性,Apache 有一个“重新加载”功能,它将使用新配置而不丢弃活动连接。
编辑:这是我见过的最疯狂的事情:故障信息
这是一个小工具,用于重定向正在运行的进程的文件描述符,并更广泛地调整它们。它的工作原理是使用 ptrace 附加到现有进程并强制其执行某个系统调用。这样,您可以强制进程放弃特权,以将文件描述符重定向到文件或 TCP/IP 连接,使用 unix 套接字将描述符连接到另一个正在运行的进程的描述符,或将文件描述符设置为另一个正在运行的进程的描述符(使用 unix 文件描述符传递)。由于代码钩子依赖于体系结构,因此目前仅支持 linux-x86 和 linux-x86_64 体系结构。欢迎为其他体系结构提供补丁。
答案3
我不完全确定你想要实现什么,但如果你只是想在 stdout 上查看日志的更新...你可以在 Apache 访问或错误日志更新时实时查看它们,使用“follow”选项tail
例如
tail -f /var/log/apache2/access.log
答案4
伙计们,如何使用urlsnarf?