检查特定文件的访问日志

检查特定文件的访问日志

我正在尝试找出某个特定 Web 文件被访问了多少次。我拥有服务器的 root 访问权限,但不确定在哪里查看。我查看过的唯一位置是 /home/FTPUSER/access-logs,它是指向 /usr/local/apache/domlogs/perrysre 的符号链接,并且该访问日志中只有 1 天的数据。

任何帮助将不胜感激。

答案1

如果您的访问日志仅包含一天的数据,则可能每天都会轮换。您需要弄清楚如何配置它。如果您使用的是 Linux,则可能使用logrotate-- 查看/etc/logrotate.d//etc/logrotate.conf是否存在。在 FreeBSD 上,日志轮换在 中配置/etc/newsyslog.conf

Apache 也可能通过以下方式实现此目的旋转日志CustomLog如果是这样,这将在服务器配置 ( ) 中的一行中进行设置httpd.conf,该配置可能在/etc/httpd,或者更可能考虑到您的日志位置,/usr/local/apache/conf

如果这些都不起作用,请询问配置它的人!

答案2

我认为,因为从你的问题来看,我无法争论你正在操作的系统设置,所以一种查找进程使用的文件的通用方法可以解决问题。

尝试使用lsof-p 命令<PID_OF_APACHE_DAEMON>

您可以通过多种方式检索 PID,其中一种方式是查看网络状态监测工具输出,另一个是使用lsof-i, 等等。

这是一个可以工作的 POC:

lsof -p $(lsof -i :80 | head -2 | tail -1 | awk '{print $2}') | grep log

httpd   2618 root  mem    REG  253,0           64072 /usr/lib/httpd/modules/mod_logio.so (path inode=63267)
httpd   2618 root  mem    REG  253,0           64070 /usr/lib/httpd/modules/mod_log_config.so (path inode=63265)
httpd   2618 root    2w   REG  253,2    1461  720904 /var/log/httpd/error_log
httpd   2618 root    6w   REG  253,2    1461  720904 /var/log/httpd/error_log
httpd   2618 root    7w   REG  253,2    4483  720899 /var/log/httpd/access_log

这里我假设你的 apache 守护进程正在监听标准 tcp 端口 80。

答案3

所有 Apache 日志通常存储在:

Apache (2)/access.log

错误日志:/var/log/apache(2)/error.log

/var/log/apache(2)/customs.log

我喜欢用一个很好的命令来计算一些东西:

cat /var/log/apache2/access.log | grep WORD-TO-LOOK | wc -l

然后你就会得到一个数字。假设你有一个 FTP 日志,每次约翰连接时,都会有一行“约翰打开了一个会话”。所以你会这样做:

cat /var/log/ftp.log | grep John opened a session | wc -l

将返回 John 打开会话的次数。如果您想要时间段等,也可以这样做

相关内容