在遇到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)
答案 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_forward
(0
已关闭,1
已开启)
写: echo 1 > /proc/sys/net/ipv4/ip_forward
与kcore
一样,这不是真正的文件。但它就像一个人。因此,当您写入时,您实际上正在更改软件设置而不是磁盘上的字节。
/proc/meminfo
和/proc/cpuinfo
是只读的。您可以从自己的应用中cat
或less
或fopen()
。它们向您显示有关硬件(内存和CPU)的详细信息。
/proc/[0-9]+
实际上是在您的计算机上运行的进程ID !这些是(恕我直言)迄今为止/proc
最酷的特征。在它们内部,你会发现更多假文件,如cmdline
,它们告诉你用什么命令来启动这个过程。
最后还有其他一些"有趣的文件系统",例如/proc
。 purely in-memory和"user-space"只有两个。虽然df
和ls
等工具可能会报告实际文件大小,但这些(一般来说)不会占用任何实际磁盘空间。
答案 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