我有一个小型网络空间(PHP + MySQL)。没什么特别的。
我可以使用 PHP 读取 /proc/uptime 并且它返回:
51967189.77 1731371689.58
因此正常运行时间为 601 天 (51967189 / 60 / 60 / 24)。
我还列出了文件夹中的文件/dev
。左侧是创建时间(dmY)。
17.03.2023 .
17.03.2023 ..
17.03.2023 full
28.07.2021 log
17.03.2023 null
17.03.2023 random
17.03.2023 tty
17.03.2023 urandom
17.03.2023 zero
其他文件夹/bin
/sbin
/var
/lib64
也具有类似17.03.2023
的创建时间。
因为这些文件和文件夹是在启动时创建的,所以意味着正常运行时间只有 5 天。
因此我有 601 天而不是 5 天。
它怎么会/proc/uptime
与文件的创建时间不匹配呢/dev/null
?
答案1
请注意你的 /dev 实际上有多少个设备。
您的网站空间处于容器– 它有自己的专用 /dev(以及自己的 /bin 等),总体上是文件系统的独立视图,但仍与该系统上的所有其他 Web 空间共享实际的“操作系统”(正在运行的内核)。各种客户的容器来来去去,每个容器都会获得一个全新的 /dev,但主机操作系统仍持续运行,这就是通过 /proc 报告的正常运行时间。
(它与 Docker 或 LXC 中的“容器”类型相同。)
/dev/log 比较奇怪,因为它是一个从外部挂载的套接字(即从主机操作系统的 /dev/log),以便所有容器的日志都由同一个 syslog 守护进程收集。
此外,“ctime”不是创建时间——它是 inode改变时间,每当任何元数据发生变化时更新。实际的创建时间字段是“btime”(出生时间),这是 Linux 的一个相对较新的附加功能(PHP 的 stat() 尚不支持它)。