解决linux磁盘满了以及负载过高办法

发布时间:2021-09-23

  1. 磁盘满了

  如果一台机器磁盘满了,首先我们需要确定其位置,命令为

  

  df(或者df -h)

  //显示结果

  Filesystem 512-blocks Used Available Capacity iused ifree %iused Mounted on

  /dev/disk0s2 488555536 124047536 363996000 26% 15569940 45499500 25% /

  devfs 361 361 0 100% 626 0 100% /dev

  map -hosts 0 0 0 100% 0 0 100% /net

  找到那一块盘满了以后,使用命令du一级一级的查找,确定最大文件。

  

   du -h --max-depth=1 grep G sort -n

  如果是日志文件过大需要删除时候,使用日志切割,保留最新日志。

  

  //指定分割后文件行数

  split -l 300 largelog newlog

  //指定分割后文件大小

  split -b 10m largelog newlog

  2. 负载过高

  使用uptime命令查看机器负载。

  

  uptime

  //输出

  up 1 day, 23:14, 2 users, load averages: 1.69 2.21 2.09

  平均负载表示1、5、15分钟进程队列中的平均进程数量。一般单核大于3的话负载就算高了。查看linux多少cpu与核的命令如下:

  

  #查看物理CPU个数

  cat /proc/cpuinfo grep physical id sort uniq wc -l

  #查看每个物理CPU中core的个数(即核数)

  cat /proc/cpuinfo grep cpu cores uniq

  # 查看逻辑CPU的个数

  cat /proc/cpuinfo grep processor wc -l

  然后使用top命令查看每个进程占用CPU,内存情况。top显示时候使用“M”进程会按内存使用排序,按“P”会按CPU使用排序。

  

  如果没有进程占用大量CPU,内存资源的话,可能就是某个进程阻塞了。使用ps -ef, 看到哪个进程会卡住,然后去/proc/中找到这个进程对应的文件,看是否能正常打开。

  

  找到以后杀死这个进程或者重启机器。

  

  3. can’t lock /etc/passwd;try again later

  首先查看是在/etc下否存在lock文件,

  $cd /etc

  $ls *.lock

  $ rm -f *.lock //删除文件锁

  没有的话,使用df -i看是否 inode满了,如果是 查找每个文件下的文件数目

  for i in ./*; do echo $i; find $i wc -l sort -n ; done

  找到后删除没用的小文件。 建议去/var/spool/postfix/maildrop去看看。

  

  科普一下df -i与df -h,一个是总共能创建多少文件,一个是总共能创建多大的文件。

  

注册即送1000元现金券