后台程序实现不当导致磁盘满的问题

本文探讨了后台程序可能导致磁盘满的问题,包括如何找到占用空间的程序、处理被删除但仍有进程占用的文件,以及 daemon 实现的潜在问题。通过学习如何重定向标准输入输出,理解进程文件描述符,可以有效防止类似问题的发生。
摘要由CSDN通过智能技术生成

 

之前在《如何让程序真正地后台运行》一文中提到了程序后台运行的写法,但是里面的示例程序在某些场景下是会有问题的,这里先不说什么问题,我们先看看这个磁盘满的问题是怎么产生的,通过这篇文章你将会学习到大量linux命令的实操使用。

找到导致磁盘满的程序

当发现磁盘占用比较多的时候,可以通过下面的命令,查看各个挂载路径的占用情况:

$ df -h
udev            3.9G     0  3.9G    0% /dev
tmpfs           784M  2.0M  782M    1% /run
/dev/sda11       19G  6.5G   12G   37% /
tmpfs           3.9G   91M  3.8G    3% /dev/shm
tmpfs           5.0M  4.0K  5.0M    1% /run/lock
tmpfs           3.9G     0  3.9G    0% /sys/fs/cgroup
/dev/sda12      9.4G   37M  8.8G    1% /tmp
/dev/sda14      6.4G  168M  5.9G    3% /boot
/dev/sda10       57G  2.0G   52G    4% /home
/dev/sda1       256M   33M  224M   13% /boot/efi
tmpfs           784M   16K  784M    1% /run/user/121
tmpfs           784M   44K  784M    1% /run/user/1000

当然我这里并没有哪个挂载路径的磁盘占用率比较高,这里假设home占用比较高,然后可以通过:

$ cd /home
$ du -h --max-depth=1
1.9G    ./shouwang
16K    ./lost+found
1.9G    .

这样可以逐层知道哪些目录有了不该有的大文件。

当然你也可以使用find直接找出大文件,比如查找当前目录下大于800M的文件:

$ find . -type f -size +800M

find的用法可以参考《find命令高级用法》。

如果找到了该文件,并且确认是无用文件,那么就可以删除了。

但是如果仍然有程序打开了该文件,那么即便你删除了文件,其占用的磁盘空间也并不会释放,因为仍然它的"文件引用"不是0,文件并不会被删除。
在《rm删除文件空间就释放了吗?》一文中,有更加详细的解释。

所以你需要看一下,是否还有程序打开该文件,举个例子:

$ lsof config.json
COMMAND  PID     USER   FD   TYPE DEVICE SIZE/OFF    NODE NA
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值