linux一次inodes满了

服务器突然不好用了,查看了下状态,发现
df -i
里面的inode 100%了


然后用
find 目录名 |wc -l
来挨个目录的找
终于找到了在tmp目录下面,占用了大量的inodes


但是这个/tmp目录不能随便删呀,不然后tmp目录权限不对,登录不了系统(正确的权限为chmod 1777 /tmp)


所以只能用




==========下面是解决方法============================================


删除sess_字符的文件
rm -f *sess_*   //这个命令执行不成功,会提示Argument list too long


Argument list too long时的解决办法
例:
1、rm * -rf 改为:
find . -name "*" | xargs rm -rf '*' 就行了。


2、rm test* -rf 改为:
find . -name "test*" | xargs rm -rf "test*"


1.可以使用通配符,比如显示当前文件夹下所有的 firefox的文件 ls -d firefox* 就可以了。不加-d 会把文件夹里的文件也显示出来。


2.这个命令的意思是:输出所有的文件名(用空格分割) xargs就是将ls的输出,每10个为一组(以空格为分隔符),作为rm -rf的参数也就是说将所有文件名10个为一组,由rm -rf删除,这样就不会超过命令行的长度了.
ls | xargs -n 10 rm -fr


上面两条指令组合起来就是
ls -d /tmp/sess_* | xargs -n 10 rm -fr




遍历寻找0字节的文件,并删除
find /tmp -type f -size 0 -exec rm {} \;


=============上面是解决方法==================================================




自己写了个crontab每天早晨3点删
crontab -u //设定某个用户的cron服务,一般root用户在执行这个命令的时候需要此参数
crontab -l //列出某个用户cron服务的详细内容
crontab -r //删除没个用户的cron服务
crontab -e //编辑某个用户的cron服务
* * * * * 这5个星,代表时间
分钟 (0-59)
小時(0-23)
日期(1-31)
月份(1-12)
星期(0-6) //0代表星期天




0 3 * * * ls -d /tmp/sess_* | xargs -n 10 rm -fr






后期得用
tmpwatch工具
放在crontab里定期清理






通过inode节点找到文件删除
ls -i
find -inum XXX  |xargs -I {} rm {}




发现 sess_ 这个文件出现的非常非常多
在php.ini中的session.save_path = "/tmp"
改一下
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值