我正在尝试找出某个特定 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 打开会话的次数。如果您想要时间段等,也可以这样做