在Linux下跑项目或程序有时会遇到内存和磁盘空间不足的问题,分情况一般有以下两种解决方法。

一、内存不够

1、可以使用top命令查看内存占用情况,也可以使用ps auxw|head -1;ps auxw|sort -rn -k3|head -10命令查看内存占用top10,根据需要可以kill杀掉一些进程。
2、buff/cache占用过高,则执行以下命令清缓存(需ROOT权限)。
在这里插入图片描述
echo 1 > /proc/sys/vm/drop_caches:表示清除pagecache;
在这里插入图片描述
echo 2 > /proc/sys/vm/drop_caches:表示清除回收slab分配器中的对象(包括目录项缓存和inode缓存)。slab分配器是内核中管理内存的一种机制,其中很多缓存数据实现都是用的pagecache;
在这里插入图片描述
echo 3 > /proc/sys/vm/drop_caches:表示清除pagecache和slab分配器中的缓存对象。
在这里插入图片描述

二、磁盘空间不够

这种情况可以先使用df相关命令显示目前在 Linux 系统上的文件系统磁盘使用情况统计,一般使用df -h命令它显示的信息比较好看。
在这里插入图片描述
这里最关键的指标就是使用百分比,这个值较高一般需要处理,或者明确知道自己项目或工作目录是哪个,就只要找对应的位置去处理即可。
下一步使用du相关命令显示具体目录或文件的大小。常用命令有du -h --max-depth=1
可以查看当前目录指定层级的目录或文件大小。
在这里插入图片描述
命令du -sh /* |sort -rn可以查看指定目录的目录或文件的大小并排序显示。
在这里插入图片描述
如果找到一些比较大的文件可以考虑删除,如一些日志。
另外一种方法就是可以改变自己的工作目录,下面以docker举例。
默认情况下Docker的存放位置为:/var/lib/docker,可以执行命令sudo docker info | grep “Docker Root Dir"去进行查看。
方法一、软链接
首先停掉Docker服务:
systemctl restart docker或者service docker stop
然后移动整个/var/lib/docker目录到目的路径并建立软连接:
mv /var/lib/docker /root/data/docker
ln -s /root/data/docker /var/lib/docker
这时候启动Docker时发现存储目录依旧是/var/lib/docker,但是实际上是存储在数据盘/root/data/下的,你可以在数据盘上看到容量变化。
方法二、修改镜像和容器的存放路径
指定镜像和容器存放路径的参数是–graph=/var/lib/docker,我们只需要修改配置文件指定启动参数即可。Docker 的配置文件可以设置大部分的后台进程参数,在各个操作系统中的存放位置不一致,在 Ubuntu 中的位置是:/etc/default/docker,在 CentOS 中的位置是:/etc/sysconfig/docker。
如果是 CentOS6 则添加下面这行:
OPTIONS=–graph=”/root/data/docker" --selinux-enabled -H fd://
如果是 Ubuntu 则添加下面这行(因为 Ubuntu 默认没开启 selinux):
OPTIONS=–graph=“/root/data/docker” -H fd://# 或者DOCKER_OPTS=“-g /root/data/docker”
最后重新启动,Docker 的路径就改成 /root/data/docker 了。
更加详细的可以参考连接:https://www.cnblogs.com/JasonCeng/p/15728592.html

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐