我是否可以知道我的服务器上的 php 文件是否正在被用户访问?
是否有一个命令可以通过 ssh 使用,列出每个 IP 地址以及它们正在请求的页面?
我的最终目标是,如果还没有任何用户访问某个特定的 php 文件,则运行一个 cron 作业来执行该文件。
答案1
您可以检查 apache 访问日志文件。它显示以下字段:日期/时间、IP 地址、包括参数的 URL 等。
查看文件;
$ less /var/log/apache/access.log
要搜索文件:
$ grep keyword /var/log/apache/access.log
请注意,在 apache 日志中看到 PHP 文件名并不能保证它在执行脚本时仍在运行。
编辑:如果您想在建立 HTTP 连接时查看它们,您可以像这样使用 tcpdump:
$ sudo tcpdump -XX -vv -n -w /tmp/http_trace.pcap port 80
我对过滤器语法“端口 80”不是 100% 确定,但这只会捕获发往端口 80 的 HTTP 流量。此外,您可以使用此命令查看已建立的连接:
$ netstat -an | grep ESTABLISHED
要连续监视该命令,可以使用 watch 命令:
$ watch -n1 netstat -an
-n1 表示每秒运行一次命令。
答案2
为此,您需要确保 php 在用户模式下运行,而不是以 apache 用户模式运行。
ps aux | grep php
这样就好了...
答案3
为了获得有关 apache 统计数据的更多详细信息,你可以使用以下方法从 access.log 文件中获取报告 请求日志分析器(https://github.com/wvanbergen/request-log-analyzer/wiki)
报告样本: https://github.com/wvanbergen/request-log-analyzer/wiki/Sample-output