为了自己看的更清楚,也为了不断的总结,每次更新后都会另发一篇。

工作中遇到某一文件夹磁盘空间不够,当然每次都是清理日志,最后发现还是不太行,还不能扩容,只能先想办法迁移目录,避免此问题发生,但在这之前我选择了另一种办法,把预留空间再次减少,当然这个是最直接的办法,一般Linux系统默认会有5%的空间,以防止报警或者极端情况下不影响应用程序的运行。接下来是操作

先查看磁盘空间:df -h才看目录在系统的位置

CC180824S02P:~ # df -h
Filesystem                   Size  Used Avail Use% Mounted on
devtmpfs                     3.8G     0  3.8G   0% /dev
tmpfs                        3.9G   80K  3.9G   1% /dev/shm
tmpfs                        3.9G  395M  3.5G  11% /run
tmpfs                        3.9G     0  3.9G   0% /sys/fs/cgroup
/dev/mapper/system-root       11G  4.4G  5.8G  44% /
/dev/sda1                    485M  113M  347M  25% /boot
/dev/mapper/appvg-app         59G 1016M   55G   2% /app
/dev/mapper/system-usrlocal  4.8G   11M  4.6G   1% /usr/local
/dev/mapper/system-srv       4.8G   11M  4.6G   1% /srv
/dev/mapper/system-home      4.8G  1.7G  2.9G  37% /home
/dev/mapper/system-tmp       4.8G  481M  4.1G  11% /tmp
/dev/mapper/system-var       4.8G  315M  4.3G   7% /var
/dev/mapper/system-opt       4.8G  3.8G  795M  83% /opt
tmpfs                        780M   20K  780M   1% /run/user/483
tmpfs                        780M     0  780M   0% /run/user/1000
tmpfs                        780M     0  780M   0% /run/user/0
我要选择的是/opt 接下来执行

CC180824S02P:~ # tune2fs -m 2 /dev/mapper/system-opt
tune2fs 1.42.11 (09-Jul-2014)
Setting reserved blocks percentage to 2% (26214 blocks)

再次查看发现减少了,我这里预留变为2%,当然0我们是不推荐的。

CC180824S02P:~ # df -h
Filesystem                   Size  Used Avail Use% Mounted on
devtmpfs                     3.8G     0  3.8G   0% /dev
tmpfs                        3.9G   80K  3.9G   1% /dev/shm
tmpfs                        3.9G  395M  3.5G  11% /run
tmpfs                        3.9G     0  3.9G   0% /sys/fs/cgroup
/dev/mapper/system-root       11G  4.4G  5.8G  44% /
/dev/sda1                    485M  113M  347M  25% /boot
/dev/mapper/appvg-app         59G 1016M   55G   2% /app
/dev/mapper/system-usrlocal  4.8G   11M  4.6G   1% /usr/local
/dev/mapper/system-srv       4.8G   11M  4.6G   1% /srv
/dev/mapper/system-home      4.8G  1.7G  2.9G  37% /home
/dev/mapper/system-tmp       4.8G  481M  4.1G  11% /tmp
/dev/mapper/system-var       4.8G  315M  4.3G   7% /var
/dev/mapper/system-opt       4.8G  3.8G  948M  81% /opt
tmpfs                        780M   20K  780M   1% /run/user/483
tmpfs                        780M     0  780M   0% /run/user/1000
tmpfs                        780M     0  780M   0% /run/user/0

Linux磁盘空间被未知资源耗尽

在linux中,当我们使用rm在linux上删除了大文件,但是如果有进程打开了这个大文件,却没有关闭这个文件的句柄,那么linux内核还是不会释放这个文件的磁盘空间,最后造成磁盘空间占用100%,整个系统无法正常运行。这种情况下,通过df和du命令查找的磁盘空间,两者是无法匹配的,可能df显示磁盘100%,而du查找目录的磁盘容量占用却很小。

遇到这种情况,基本可以断定是某些大文件被某些程序占用了,并且这些大文件已经被删除了,但是对应的文件句柄没有被某些程序关闭,造成内核无法回收这些文件占用的空间。

那么,如何查找那些文件被某些程序占用呢,命令如下

lsof -n | grep deleted
COMMAND     PID      USER   FD      TYPE             DEVICE        SIZE       NODE NAME
dd        31708      higkoo    1w      REG                8,2 5523705856     429590 /data/filetest (deleted)

命令打lsof -n | grep deleted印出所有针对已删除文件的读写操作,这类操作是无效的,也正是磁盘空间莫名消失的根本原因

之后用kill -9 pid删除进程即可释放空间

CC180824S02P:~ # lsof -n |grep deleted
nscd       1381             nscd   10u      REG               0,20   217032      17665 /run/nscd/dbjC6wwK (deleted)
nscd       1381             nscd   11r      REG               0,20   217032      17665 /run/nscd/dbjC6wwK (deleted)
nscd       1381  1392       nscd   10u      REG               0,20   217032      17665 /run/nscd/dbjC6wwK (deleted)
nscd       1381  1392       nscd   11r      REG               0,20   217032      17665 /run/nscd/dbjC6wwK (deleted)
nscd       1381  1393       nscd   10u      REG               0,20   217032      17665 /run/nscd/dbjC6wwK (deleted)
nscd       1381  1393       nscd   11r      REG               0,20   217032      17665 /run/nscd/dbjC6wwK (deleted)
nscd       1381  1394       nscd   10u      REG               0,20   217032      17665 /run/nscd/dbjC6wwK (deleted)
nscd       1381  1394       nscd   11r      REG               0,20   217032      17665 /run/nscd/dbjC6wwK (deleted)
nscd       1381  1395       nscd   10u      REG               0,20   217032      17665 /run/nscd/dbjC6wwK (deleted)
nscd       1381  1395       nscd   11r      REG               0,20   217032      17665 /run/nscd/dbjC6wwK (deleted)
nscd       1381  1396       nscd   10u      REG               0,20   217032      17665 /run/nscd/dbjC6wwK (deleted)
nscd       1381  1396       nscd   11r      REG               0,20   217032      17665 /run/nscd/dbjC6wwK (deleted)
nscd       1381  1397       nscd   10u      REG               0,20   217032      17665 /run/nscd/dbjC6wwK (deleted)
nscd       1381  1397       nscd   11r      REG               0,20   217032      17665 /run/nscd/dbjC6wwK (deleted)
nscd       1381  1398       nscd   10u      REG               0,20   217032      17665 /run/nscd/dbjC6wwK (deleted)
nscd       1381  1398       nscd   11r      REG               0,20   217032      17665 /run/nscd/dbjC6wwK (deleted)
nscd       1381  1399       nscd   10u      REG               0,20   217032      17665 /run/nscd/dbjC6wwK (deleted)
nscd       1381  1399       nscd   11r      REG               0,20   217032      17665 /run/nscd/dbjC6wwK (deleted)
nscd       1381  1400       nscd   10u      REG               0,20   217032      17665 /run/nscd/dbjC6wwK (deleted)
nscd       1381  1400       nscd   11r      REG               0,20   217032      17665 /run/nscd/dbjC6wwK (deleted)
nscd       1381  1401       nscd   10u      REG               0,20   217032      17665 /run/nscd/dbjC6wwK (deleted)
nscd       1381  1401       nscd   11r      REG               0,20   217032      17665 /run/nscd/dbjC6wwK (deleted)
CC180824S02P:~ # df -h
Filesystem                   Size  Used Avail Use% Mounted on
devtmpfs                     3.8G     0  3.8G   0% /dev
tmpfs                        3.9G   80K  3.9G   1% /dev/shm
tmpfs                        3.9G  402M  3.5G  11% /run
tmpfs                        3.9G     0  3.9G   0% /sys/fs/cgroup
/dev/mapper/system-root       11G  4.4G  5.8G  44% /
/dev/sda1                    485M  113M  347M  25% /boot
/dev/mapper/appvg-app         59G 1016M   55G   2% /app
/dev/mapper/system-usrlocal  4.8G   11M  4.6G   1% /usr/local
/dev/mapper/system-srv       4.8G   11M  4.6G   1% /srv
/dev/mapper/system-home      4.8G  1.7G  2.9G  37% /home
/dev/mapper/system-tmp       4.8G  481M  4.1G  11% /tmp
/dev/mapper/system-var       4.8G  316M  4.3G   7% /var
/dev/mapper/system-opt       4.8G  1.1G  3.7G  23% /opt
tmpfs                        780M   20K  780M   1% /run/user/483
tmpfs                        780M     0  780M   0% /run/user/1000
tmpfs                        780M     0  780M   0% /run/user/0
运维就是不断的排错,找到问题最终解决问题。

补充:

lsof `which httpd` //那个进程在使用apache的可执行文件
lsof /etc/passwd //那个进程在占用/etc/passwd
lsof /dev/hda6 //那个进程在占用hda6
lsof /dev/cdrom //那个进程在占用光驱
lsof -c sendmail //查看sendmail进程的文件使用情况
lsof -c courier -u ^zahn //显示出那些文件被以courier打头的进程打开,但是并不属于用户zahn
lsof -p //显示那些文件被pid为30297的进程打开
lsof -D /tmp 显示所有在/tmp文件夹中打开的instance和文件的进程。但是symbol文件并不在列 lsof -u1000 //查看uid是100的用户的进程的文件使用情况
lsof -utony //查看用户tony的进程的文件使用情况
lsof -u^tony //查看不是用户tony的进程的文件使用情况(^是取反的意思)
lsof -i //显示所有打开的端口
lsof -i: //显示所有打开80端口的进程
lsof -i -U //显示所有打开的端口和UNIX domain文件
lsof -i UDP@[url]www.akadia.com: //显示那些进程打开了到www.akadia.com的UDP的123(ntp)端口的链接
lsof -i tcp@ohaha.ks.edu.tw:ftp -r //不断查看目前ftp连接的情况(-r,lsof会永远不断的执行,直到收到中断信号,+r,lsof会一直执行,直到没有档案被显示,缺省是15s刷新)
lsof -i tcp@ohaha.ks.edu.tw:ftp -n //lsof -n 不将IP转换为hostname,缺省是不加上-n参数

lsof用法

之前遇到的场景是同事删除了mysql的表,但是是在shell上执行rm表的文件,而不是通过drop table之类的命令去删除表的,于是mysql会一直占用这些表文件的句柄,最后造成磁盘空间100%,这种情况下,也不用重启mysql,只要进入mysql客户端执行flush tables就行了

Linux知识-不断更新2的更多相关文章

  1. Linux知识-不断更新

    找到使用cpu最高的进程之使用cpu最高的线程的16进制号 shell命令行: ps -eo %cpu,pid | sort -n -k1 -r |head -n 1|awk '{print$2}'| ...

  2. Linux知识总结(更新中)

    Linux知识总结(更新中) 如何查找特定的文件 find find path [options] params 作用:在指定目录下查找文件 检索文件内容 grep grep [options] pa ...

  3. 嵌入式Linux的OTA更新,基础知识和实现

    嵌入式Linux的OTA更新,第1部分-基础知识和实现 OTA updates for Embedded Linux,  Fundamentals and implementation 更新的需要 一 ...

  4. Dcloud课程6 php脚本如何在Linux下定时更新数据

    Dcloud课程6 php脚本如何在Linux下定时更新数据 一.总结 一句话总结:linux下用crontab命令实现定时任务. 1.linux下执行php脚本用什么命令? 直接用php命令php ...

  5. 夯实基础系列四:Linux 知识总结

    前言 前三节内容传送门: 夯实基础系列一:Java 基础总结 夯实基础系列二:网络知识总结 夯实基础系列三:数据库知识总结 现在很多公司项目部署都使用的是 Linux 服务器,互联网公司更是如此.对于 ...

  6. Linux知识:/root/.bashrc与/etc/profile的异同

    Linux知识:/root/.bashrc与/etc/profile的异同 要搞清bashrc与profile的区别,首先要弄明白什么是交互式shell和非交互式shell,什么是login shel ...

  7. J2EE程序员应该要掌握的linux知识

    J2EE程序员应该要掌握的linux知识 大型J2EE应用都在建构在linux环境下的.开发环境下我们可以通过samba映射成本地的网络驱动器,直接在windows环境下进行编程调试.但是最后的发布还 ...

  8. My way on Linux - 知识梳理计划

    知识梳理计划图 近期计划把自己学习的工作中用到的Linux知识梳理下,敬请期待.

  9. 欢迎关注我的微信公众账号:Linux技巧(微信号:irefactoring),一起学习Linux知识~~~

    最近很少写博客了,一方面是近期工作比较繁忙,第二是把精力都放在GitHub和读源码去了. 申请了一个微信公众账号:Linux技巧 微信ID:irefactoring(意思是爱重构) ========= ...

随机推荐

  1. ubuntu idea 安装

    一.下载 1.进入官网 下载对应安装包 https://www.jetbrains.com/idea/download/#section=linux sudo wget https://downloa ...

  2. hdu 1693 : Eat the Trees 【插头dp 入门】

    题目链接 题意: 给出一个n*m大小的01矩阵,在其中画线连成封闭图形,其中对每一个值为1的方格,线要恰好穿入穿出共两次,对每一个值为0的方格,所画线不能经过. 参考资料: <基于连通性状态压缩 ...

  3. 对排序(Sort)的研究

    这一篇主要是介绍一些数据排序的基本算法和高级算法并利用JavaScript来逐一实现, 算法的说明: 稳定:如果a原本在b前面,当a=b时,排序之后a仍然在b的前面 不稳定:如果a原本在b的前面,当a ...

  4. 【Java】commons-lang3中DateUtils类方法介绍

    添加commons-lang3的Maven依赖 <dependency> <groupId>org.apache.commons</groupId> <art ...

  5. [Ctsc2015]misc

    https://lydsy.com/JudgeOnline/problem.php?id=4055 题解 观察题目要我们求的东西: \[ ans[k]=\sum_{i}\sum_j \frac{a_i ...

  6. 提高Service优先级

    在onStartCommand()方法中开启一个通知,提高进程的优先级.注意:从Android 8.0(API级别26)开始,所有通知必须要分配一个渠道,对于每个渠道,可以单独设置视觉和听觉行为.然后 ...

  7. linux(centos6) 下安装 postgresql-9.3.1.tar.gz

    目录 一. 环境 二.准备工作 三.先安装 make, gcc ,gcc-c++,readline-devel ,zlib-devel .如果已安装,可以忽略 四.开始安装 4.1 解压 tar -z ...

  8. Getting Started Tutorial from msdn

    Getting Started Tutorial The topics contained in this section are intended to give you quick exposur ...

  9. CentOS 7.3 安装MySQL 5.7并修改初始密码

    在CentOS 7.3 下安装MySQL 5.7并修改初始密码,Windows下安装MySQL 5.7 见 http://www.linuxidc.com/Linux/2017-11/148521.h ...

  10. Linux 文件和目录的权限设置 - umask(默认权限),chmod(改变权限)

    1. chmod 改变已有目录或文件的权限 chmod 设置已有目录或文件的权限.可以为指定范围的用户添加或删除权限. 权限范围的表示法如下: u:User,即文件或目录的拥有者: g:Group,即 ...