Linux知识-不断更新2
为了自己看的更清楚,也为了不断的总结,每次更新后都会另发一篇。
工作中遇到某一文件夹磁盘空间不够,当然每次都是清理日志,最后发现还是不太行,还不能扩容,只能先想办法迁移目录,避免此问题发生,但在这之前我选择了另一种办法,把预留空间再次减少,当然这个是最直接的办法,一般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的更多相关文章
- Linux知识-不断更新
找到使用cpu最高的进程之使用cpu最高的线程的16进制号 shell命令行: ps -eo %cpu,pid | sort -n -k1 -r |head -n 1|awk '{print$2}'| ...
- Linux知识总结(更新中)
Linux知识总结(更新中) 如何查找特定的文件 find find path [options] params 作用:在指定目录下查找文件 检索文件内容 grep grep [options] pa ...
- 嵌入式Linux的OTA更新,基础知识和实现
嵌入式Linux的OTA更新,第1部分-基础知识和实现 OTA updates for Embedded Linux, Fundamentals and implementation 更新的需要 一 ...
- Dcloud课程6 php脚本如何在Linux下定时更新数据
Dcloud课程6 php脚本如何在Linux下定时更新数据 一.总结 一句话总结:linux下用crontab命令实现定时任务. 1.linux下执行php脚本用什么命令? 直接用php命令php ...
- 夯实基础系列四:Linux 知识总结
前言 前三节内容传送门: 夯实基础系列一:Java 基础总结 夯实基础系列二:网络知识总结 夯实基础系列三:数据库知识总结 现在很多公司项目部署都使用的是 Linux 服务器,互联网公司更是如此.对于 ...
- Linux知识:/root/.bashrc与/etc/profile的异同
Linux知识:/root/.bashrc与/etc/profile的异同 要搞清bashrc与profile的区别,首先要弄明白什么是交互式shell和非交互式shell,什么是login shel ...
- J2EE程序员应该要掌握的linux知识
J2EE程序员应该要掌握的linux知识 大型J2EE应用都在建构在linux环境下的.开发环境下我们可以通过samba映射成本地的网络驱动器,直接在windows环境下进行编程调试.但是最后的发布还 ...
- My way on Linux - 知识梳理计划
知识梳理计划图 近期计划把自己学习的工作中用到的Linux知识梳理下,敬请期待.
- 欢迎关注我的微信公众账号:Linux技巧(微信号:irefactoring),一起学习Linux知识~~~
最近很少写博客了,一方面是近期工作比较繁忙,第二是把精力都放在GitHub和读源码去了. 申请了一个微信公众账号:Linux技巧 微信ID:irefactoring(意思是爱重构) ========= ...
随机推荐
- bzoj4128 Matrix 矩阵 BSGS
题目传送门 https://lydsy.com/JudgeOnline/problem.php?id=4128 题解 想了十分钟没有任何思路. 然后一眼瞥见一句话"数据保证在 \(p\) 内 ...
- 伊朗Cisco路由器遭黑客攻击 全国互联网几乎瘫痪
2018年4月9日,黑客攻击了伊朗的国家信息数据中心.伊朗internet信息安全部称,此次大规模袭击影响了全球约二十万个思科Cisco路由交换器,也包括伊朗的几千个路由器.攻击也影响了互联网服务供应 ...
- Linux下git安装配置
一.Linux下git安装配置 2013-07-28 20:32:10| 分类: 默认分类 | 标签:linux git server |举报|字号 订阅 http://abomby ...
- TOJ 4105 Lines Counting (树状数组)
题意:给定N条线段,每条线段的两个端点L和R都是整数.然后给出M个询问,每次询问给定两个区间[L1,R1]和[L2,R2],问有多少条线段满足:L1≤L≤R1 , L2≤R≤R2 ? 题解,采用离线做 ...
- DataFrame.loc的区间
df.loc[dates[0:1],'E']和df.loc[dates[0]:dates[1],'E']不同. 前者不包含dates[1],后者是包含dates[1]的. 根据Python3中实际代码 ...
- Mac新手入门:mac操作技巧
面对全新的mac电脑,你是不是一脸的迷茫,一些原来windows上的基本操作在mac上都不知道从何入手了,下面小编就为大家整理了一些基本的操作.相信一定会方便你的学习和工作的. 如何压缩与解压缩 在M ...
- 华为RH2288V3服务器部署指南
一.配置好局域网 首先配置好局域网,将电脑和服务器通过网线直连,服务器默认IP192.168.2.100,因此电脑本地的IP需要设置一下改为和服务器同一网段: 二.登录导控制页面 浏览器中输入服务器的 ...
- win8安装maven
1.下载并解压maven F:\maven\apache-maven-3.5.2 2. 设置环境变量 3. Path路径中添加maven的可执行文件目录(bin目录) 4.验证maven是否安装成功: ...
- Slide Window 专题
992. Subarrays with K Different Integers 给定一个正整数数组,计算刚好有K个不同数的子数组的个数.(For example, [1,2,3,1,2] has 3 ...
- 20180705-Java基础语法
Java基础语法 一个Java程序可以认为是一系列对象的集合,而这些对象通过调用彼此的方法来协同工作.下面简要介绍下类.对象.方法和实例变量的概念. 对象:对象是类的一个实例,有状态和行为.例如,一条 ...