服务器Ubantu磁盘爆满 Error: ENOSPC: no space left on device...

2,160 阅读2分钟

egg+mysql+redis 项目挂载云服务器

Error: ENOSPC: no space left on device, write

检查服务器上的后台项目端口正常运行,重启项目,出现无限Wait,原因未知(tab快速补充剩余文件名失效)


项目在本地运行 npm run dev 可以运行,服务器上也同步运行一次,则出现

image.png

提示错误信息:Error: ENOSPC: no space left on device, write 磁盘已满

linux命令 df -h 查看内存情况

image.png

因为有用pm2挂载所以输入命令 pm2 flush 清空所有日志文件

再次查看内存情况,发现已清理十几G内存

image.png

再次运行项目 npm run dev

image.png

错误信息:redis 连接不上

重启redis:sudo /etc/init.d/redis-server restart

restart/stop/start:重启/停止/开启

默认配置文件在 /etc/redis.conf

image.png

一直卡住不动,得不到报错信息

查看发现redis的运行状态 ps -ef | grep redis

无截图:当时是有redis在运行,应该是进入假死状态了,重启/停止皆无效

解决方法:

1.尝试杀死进程后再重启:


ps -ef | grep redis | awk '{print $2}' | xargs kill -9

管道符“|”用来隔开两个命令,管道符左边命令的输出会作为管道符右边命令的输入。

ps -ef  # 显示全部进程

ps -ef | grep redis  # 查看包含redis的进程

ps -ef | grep redis | grep -v grep  # 查看包含redis的进程,并排除带有grep的进程

awk '{print $2}' # 一行一行的读取指定的文件, 以空格作为分隔符,打印第二个字段

xargs 命令是用来把前面命令的输出结果(PID)作为"kill -9"命令的参数,并执行该命令。"kill -9"会强行杀掉指定进程。

2.重启服务器

扩展查询内存命令:

du -sh * # 对当前目录下每一个目录和文件的大小分别进行汇总

du -sh bin* # 对指定的目录的大小进行汇总

du -sh * | grep M # 对当前目录下所有的目录和文件分别进行汇总,并使用"grep [M]"筛选出所有大小为M(兆)级别的目录和文件

du -sh * | grep [MG] | sort -nt # 筛选出大小为MB和GB级别的目录和文件,sort -nt降序