No space left on device

 

在实现“马踏棋盘”问题时,因为程序出错不停循环写文件耗尽硬盘空间。

#df

/dev/sdc1             20799540  19751436         0 100% /home/sluo

无论怎么删除文件,剩余空间都为0,并没有增加。
网上很多人遇到的是硬盘还有空间,但是也报错:No space left on device. 显然他们的问题是因为inode耗尽了。
Linux上创建文件需要对应的inode如果inode 耗尽也无法写入文件,inode可以通过df -i查看。通常由于<2K的小文件过多,而每个小文件又占用一个inode,这样就会出现硬盘空间还有,却无法继续写入。
我遇到的问题恰好相反。正常情况下,这是正确的,硬盘没空间了,但inode还有剩余。不过我的问题是,删除文件,磁盘空间没有增加。
以前,我也遇到过这个问题,不知道怎么就解决的。今天没这么好运气,所以只能试着去找到真正的原因。
其实,答案很简单: 在Linux中,如果一个进程打开文件读写,只要这个进程不退出,即便删掉了这个文件,文件也不会真正被删除。
我就是通过lsof -s 看到我之前那个程序写的文件还在(虽然有注解(deleted)),所以通过,ps -aux|grep mage找到了那个进程将其kill了。这时,硬盘的空间才一点一点增加,说明进程退出,正释放硬盘空间。
多亏了这个贴,关键是第一个greeblesnort的回复

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值