首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >/proc kcore文件很大

/proc kcore文件很大
EN

Stack Overflow用户
提问于 2014-01-17 03:14:14
回答 4查看 100.5K关注 0票数 53

在经历了一次DDOS攻击后,不知何故/proc/kcore非常庞大,我使用一个小php类来检查当前的磁盘空间,以及已经使用了多少空间。

它显示了以下内容:

代码语言:javascript
运行
复制
Total Disk Space: 39.2 GB
Used Disk Space: 98 GB
Free Disk Space: 811.6 MB

我的问题是,删除/proc/kcore文件安全吗?或者有没有办法让它变得正常大小。

/proc/kcore文件大小为140.737.486.266.368字节

我在DigitalOcean托管了我的服务器。

如果需要了解更多信息,请询问;)

非常感谢!

编辑...

df -h返回:

代码语言:javascript
运行
复制
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda         40G   37G  755M  99% /
udev            993M   12K  993M   1% /dev
tmpfs           401M  224K  401M   1% /run
none            5.0M     0  5.0M   0% /run/lock
none           1002M     0 1002M   0% /run/shm

du -shx返回:

代码语言:javascript
运行
复制
du -shx *
8.7M    bin
27M     boot
12K     dev
6.3M    etc
4.8M    home
0       initrd.img
229M    lib
4.0K    lib64
16K     lost+found
8.0K    media
4.0K    mnt
4.0K    opt
du: cannot access `proc/3765/task/3765/fd/3': No such file or directory
du: cannot access `proc/3765/task/3765/fdinfo/3': No such file or directory
du: cannot access `proc/3765/fd/3': No such file or directory
du: cannot access `proc/3765/fdinfo/3': No such file or directory
0       proc
40K     root
224K    run
8.0M    sbin
4.0K    selinux
4.0K    srv
0       sys
4.0K    tmp
608M    usr
506M    var
0       vmlinuz

lsof | grep deleted的结果

代码语言:javascript
运行
复制
mysqld     1356      mysql    4u      REG              253,0           0    1835011 /tmp/ib4jBFkc (deleted)
    mysqld     1356      mysql    5u      REG              253,0           0    1835012 /tmp/ibcE99rr (deleted)
    mysqld     1356      mysql    6u      REG              253,0           0    1835013 /tmp/ibrxYEzG (deleted)
    mysqld     1356      mysql    7u      REG              253,0           0    1835014 /tmp/ibK95UJV (deleted)
    mysqld     1356      mysql   11u      REG              253,0           0    1835015 /tmp/iboOi8Ua (deleted)
    nginx     30057       root    2w      REG              253,0           0     789548 /var/log/nginx/error.log (deleted)
    nginx     30057       root    5w      REG              253,0 37730323404     268273 /etc/nginx/off (deleted)
    nginx     30057       root    6w      REG              253,0           0     789548 /var/log/nginx/error.log (deleted)
    nginx     30058   www-data    2w      REG              253,0           0     789548 /var/log/nginx/error.log (deleted)
    nginx     30058   www-data    5w      REG              253,0 37730323404     268273 /etc/nginx/off (deleted)
    nginx     30058   www-data    6w      REG              253,0           0     789548 /var/log/nginx/error.log (deleted)
    nginx     30059   www-data    2w      REG              253,0           0     789548 /var/log/nginx/error.log (deleted)
    nginx     30059   www-data    5w      REG              253,0 37730323404     268273 /etc/nginx/off (deleted)
    nginx     30059   www-data    6w      REG              253,0           0     789548 /var/log/nginx/error.log (deleted)
EN

Stack Overflow用户

发布于 2014-09-15 17:43:51

在回答你最初的问题时:

“删除/proc/kcore文件是否安全?或者是否有将其恢复为正常大小的解决方案。”

不,这不安全。好吧,我不想打赌如果你删除了它会发生什么!

procfs目录是/proc的挂载点(运行mount并查看输出,如下所示)

代码语言:javascript
运行
复制
proc on /proc type proc (rw)

procfs有点像黑魔法;它里面没有文件是真实的。它看起来像一个文件系统,行为像一个文件系统,而且是一个文件系统。而不是存储在磁盘(或其他地方)上的文件。

具体来说,/proc/kcore是一个文件,它直接映射到虚拟内存中的每个可用字节...我不是绝对清楚细节;128TB来自Linux分配可用于虚拟内存的64位中的47ish位。

(这里有关于128TB限制的讨论:https://unix.stackexchange.com/questions/116640/what-is-maximum-ram-supportable-by-linux )

不管怎样,抛开Linux的硬编码虚拟内存限制-我们在你的问题的上下文中理解的是:/proc/kcore是一个系统文件,由虚拟的procfs文件系统提供,而不是一个真正的文件。

不要删除;-)

更新: 2016-06-03

我在这里的回答一直在不断地被上调--所以我假设人们仍然在寻找/proc/kcore是什么的解释。

维基百科上有一篇很有帮助的文章,标题是Everything is a file,它提供了一些背景知识。如果你真的很好奇,那就看看Plan9操作系统吧。

希望我最初的回答能充分解释kcore本身。我猜测,阅读这个答案的人可能也对/proc中的其他文件感到好奇--所以这里有一些其他的“有趣”的例子。

  • /proc/sys/*是一种让用户(您)从内核(内核和相关驱动程序等)读取/写入细节的机制。r/w项目的一个很好的例子是"IP forwarding":

读取:cat /proc/sys/net/ipv4/ip_forward (0熄灭,1开启)

写法:echo 1 > /proc/sys/net/ipv4/ip_forward

kcore一样,这不是一个真正的文件。但它的行为就像一个。因此,当您向其写入数据时,实际上是在更改软件设置,而不是更改磁盘上的字节。

  • /proc/meminfo/proc/cpuinfo是只读的。您可以从您自己的应用程序中catless它们,或fopen()。它们向您显示有关硬件(内存和中央处理器)的详细信息。

  • /proc/[0-9]+实际上是在您的机器上运行的进程ID!这些都是迄今为止/proc最酷的特性。在它们里面,你会发现更多的假文件,比如cmdline,这些文件会告诉你使用了什么命令来启动进程。

最后,还有其他一些“有趣的文件系统”的例子,比如/proc。仅举两个例子,purely in-memory"user-space"。同样,这些(一般来说)不会消耗任何实际磁盘空间,尽管像dfls这样的工具可能会报告实际文件大小。

票数 76
EN
查看全部 4 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21170795

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档