检查特定文件的访问日志

我试图找出一个特定的网页文件被访问了多less次。 我有根访问服务器,但不知道在哪里看。 我查看的唯一地方是/ home / FTPUSER / access-logs,这是一个到/ usr / local / apache / domlogs / perrysre的sym链接,访问日志只有一天的数据。

任何帮助将不胜感激。

如果您的访问日志仅包含一天的数据,则可能每天都在轮换。 你需要弄清楚这是如何configuration的。 如果您使用的是Linux,那么可以使用logrotate – 如果存在,请查看/etc/logrotate.d//etc/logrotate.conf 。 在FreeBSD上,日志轮转在/etc/newsyslog.confconfiguration。

Apache也可能通过rotatelogs来做到这一点 。 如果是这样的话,这将设置在服务器configuration( httpd.conf )中的CustomLog行中,该行可能位于/etc/httpd或者更可能是您的日志位置/usr/local/apache/conf

如果没有这个作品问configuration它的人!

我想,因为从你的问题我不能争辩你正在使用的系统设置,普遍的方式来查找文件使用的stream程可以做的伎俩。

尝试使用lsof -p <PID_OF_APACHE_DAEMON>

您可以通过多种方式检索PID,其中一个可以查看netstat -tlnop输出,另一个使用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。

所有的Apache日志通常存储在:

/var/log/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日志,每次john连接,都有一个'John打开会话'的行。 所以你会这样做:

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

会给你多less次约翰开了会议。 如果你想要一段时间,你也可以这样做