/ proc kcore文件很大

时间:2014-01-16 19:14:14

标签: proc

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

它显示以下内容:

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返回:

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返回:

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的结果:

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)

4 个答案:

答案 0 :(得分:49)

回答原来的问题:

  

"是否保存删除/proc/kcore文件?或者有解决方案   使它达到正常大小。"

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

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

proc on /proc type proc (rw)
procfs是一个黑魔法;其中没有文件是真实的。它看起来像一个文件系统,就像一个文件系统,是一个文件系统。但不是存储在磁盘上(或其他地方)的。

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

(这里有关于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/*是用户(您)从Linux核心(内核和相关驱动程序等)读取/写入详细信息的机制。一个可爱的r / w项目的例子是" IP forwarding":

    阅读: cat /proc/sys/net/ipv4/ip_forward0已关闭,1已开启)

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

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

  • /proc/meminfo/proc/cpuinfo是只读的。您可以从自己的应用中catlessfopen()。它们向您显示有关硬件(内存和CPU)的详细信息。

  • /proc/[0-9]+实际上是在您的计算机上运行的进程ID !这些是(恕我直言)迄今为止/proc最酷的特征。在它们内部,你会发现更多假文件,如cmdline,它们告诉你用什么命令来启动这个过程。

最后还有其他一些"有趣的文件系统",例如/procpurely in-memory"user-space"只有两个。虽然dfls等工具可能会报告实际文件大小,但这些(一般来说)不会占用任何实际磁盘空间。

答案 1 :(得分:5)

运行命令sudo rm /proc/kcore是完全安全的。它只会说rm: cannot remove '/proc/kcore': Operation not permitted

/proc中的所有文件实际上并不存在于您的硬盘上,因此无法将其删除。这些文件代表有关系统的信息。例如,当您执行ls /proc时,您要求内核提供系统上的进程列表。如果运行ls -l /proc/22/exe,则要求内核提供进程号22的可执行文件的文件路径。依此类推。

答案 2 :(得分:2)

看起来您需要清理已删除但保留的文件磁盘。你可以使用' tune2fs'命令如下:

tune2fs -m 1 /dev/<drive>

这应释放保留的块空间,并允许您访问特权进程保留的磁盘空间。请注意,1是之后将分配给特权进程的百分比,仅当您有足够的磁盘空间用于关键进程(如syslog或ssh)时才执行此操作。

注意:通过从&#39; / proc&#39;中删除文件,您永远不会获得磁盘空间。这是一个虚拟文件系统,与硬盘空间无关。

答案 3 :(得分:0)

请检查您的日志文件空间。我删除了所有错误日志和访问日志文件,并且我的网站正在运行。

使用此命令,哪个文件夹占用更多空间。

cd /
sudo du -sh * 2>/dev/null | sort -h