linux 之内存与磁盘

Posted Codsing-代码演奏者

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux 之内存与磁盘相关的知识,希望对你有一定的参考价值。

  记录工作中常用操作

 

1. 新建和增加SWAP分区(都必须用root权限,操作过程应该小心谨慎。)

  1)新建分区

1.以root身份进入控制台(登录系统),输入
swapoff -a #停止所有的swap分区

2. 用fdisk命令(例:# fdisk /dev/sdb)对磁盘进行分区,添加swap分区,新建分区,在fdisk中用“t”命令将新添的分区id改为82(Linux swap类型),最后用w将操作实际写入硬盘(没用w之前的操作是无效的)。

3.  mkswap /dev/sdb2 #格式化swap分区,这里的sdb2要看您加完后p命令显示的实际分区设备名

4. # swapon /dev/sdb2 #启动新的swap分区

5. 为了让系统启动时能自动启用这个交换分区,可以编辑/etc/fstab,加入下面一行
/dev/sdb2 swap swap defaults 0 0

  2)新增分区

1.创建要作为swap分区的文件:增加1GB大小的交换分区,则命令写法如下,其中的count等于想要的块的数量(bs*count=文件大小)。
# dd if=/dev/zero of=/root/swapfile bs=1M count=1024

2.格式化为交换分区文件:
# mkswap /root/swapfile #建立swap的文件系统

3.启用交换分区文件:
# swapon /root/swapfile #启用swap文件

4.使系统开机时自启用,在文件/etc/fstab中添加一行:
/root/swapfile swap swap defaults 0 0

 

2.调整swap空间使用的优先级

  如果内存够大,应当告诉 linux 不必太多的使用 SWAP 分区, 可以通过修改 swappiness 的数值。

  swappiness=0 的时候表示最大限度使用物理内存,然后才是 swap空间,swappiness=100的时候表示积极的使用swap分区,并且把内存上的数据及时的搬运到swap空间里面。

  各个操作系统的优先级可能都不一样,如果不调整,你会发现添加的虚拟内存几乎没有用到

  

查看当前swappiness值

  # cat /proc/sys/vm/swappiness

  修改swappiness值为60(临时修改,重启后即还原为默认值)

  # sudo sysctl vm.swappiness=60

 

  永久修改swappiness默认值(重启生效)

  # vim /etc/sysctl.conf

  找到vm.swappiness ,如果没有则需要手动添加一行 vm.swappiness = 60 保存即可

 

3. 四种方法在 Linux 系统中查找最大的前 10 个文件

  

# find / -type f -print0 | xargs -0 du -h | sort -rh | head -n 10
  
1.4G /swapfile
1.1G /home/magi/ubuntu-17.04-desktop-amd64.iso
564M /home/magi/.gdfuse/magi/cache/0B5nso_FPaZFqTFU0XzkzUlJUZzA
378M /home/magi/.gdfuse/magi/cache/0B5nso_FPaZFqeldzUmhPeC03Zm8
377M /home/magi/.gdfuse/magi/cache/0B5nso_FPaZFqRGd4V0VrOXM4YVU
100M /usr/lib/x86_64-linux-gnu/libOxideQtCore.so.0
93M /usr/lib/firefox/libxul.so
84M /var/lib/snapd/snaps/core_3604.snap
84M /var/lib/snapd/snaps/core_3440.snap
84M /var/lib/snapd/snaps/core_3247.snap

详解:

    • find:在目录结构中搜索文件的命令
    • /:在整个系统(从根目录开始)中查找
    • -type:指定文件类型
      f:普通文件
    • -print0:在标准输出显示完整的文件名,其后跟一个空字符(null)
    • |:控制操作符,将一条命令的输出传递给下一个命令以供进一步处理
    • xargs:将标准输入转换成命令行参数的命令
    • -0:以空字符(null)而不是空白字符(LCTT 译者注:即空格、制表符和换行)来分割记录
    • du -h:以可读格式计算磁盘空间使用情况的命令
    • sort:对文本文件进行排序的命令
    • -r:反转结果
    • -h:用可读格式打印输出
    • head:输出文件开头部分的命令
    • n -10:打印前 10 个文件

 

  2)

# find / -type f -exec du -Sh {} + | sort -rh | head -n 10
  
1.4G /swapfile
1.1G /home/magi/ubuntu-17.04-desktop-amd64.iso
564M /home/magi/.gdfuse/magi/cache/0B5nso_FPaZFqTFU0XzkzUlJUZzA
378M /home/magi/.gdfuse/magi/cache/0B5nso_FPaZFqeldzUmhPeC03Zm8
377M /home/magi/.gdfuse/magi/cache/0B5nso_FPaZFqRGd4V0VrOXM4YVU
100M /usr/lib/x86_64-linux-gnu/libOxideQtCore.so.0
93M /usr/lib/firefox/libxul.so
84M /var/lib/snapd/snaps/core_3604.snap
84M /var/lib/snapd/snaps/core_3440.snap
84M /var/lib/snapd/snaps/core_3247.snap

详解:

    • find:在目录结构中搜索文件的命令
    • /:在整个系统(从根目录开始)中查找
    • -type:指定文件类型
      f:普通文件
    • -exec:在所选文件上运行指定命令
    • du:计算文件占用的磁盘空间的命令
    • -S:不包含子目录的大小
    • -h:以可读格式打印
    • {}:递归地查找目录,统计每个文件占用的磁盘空间
    • |:控制操作符,将一条命令的输出传递给下一个命令以供进一步处理
    • sort:对文本文件进行按行排序的命令
    • -r:反转结果
    • -h:用可读格式打印输出
    • head:输出文件开头部分的命令
    • n -10:打印前 10 个文件

 

  3)

# find / -type f -print0 | xargs -0 du | sort -n | tail -10 | cut -f2 | xargs -I{} du -sh {}
  
84M /var/lib/snapd/snaps/core_3247.snap
84M /var/lib/snapd/snaps/core_3440.snap
84M /var/lib/snapd/snaps/core_3604.snap
93M /usr/lib/firefox/libxul.so
100M /usr/lib/x86_64-linux-gnu/libOxideQtCore.so.0
377M /home/magi/.gdfuse/magi/cache/0B5nso_FPaZFqRGd4V0VrOXM4YVU
378M /home/magi/.gdfuse/magi/cache/0B5nso_FPaZFqeldzUmhPeC03Zm8
564M /home/magi/.gdfuse/magi/cache/0B5nso_FPaZFqTFU0XzkzUlJUZzA
1.1G /home/magi/ubuntu-17.04-desktop-amd64.iso
1.4G /swapfile

详解:

    • find:在目录结构中搜索文件的命令
    • /:在整个系统(从根目录开始)中查找
    • -type:指定文件类型
      f:普通文件
    • -print0:输出完整的文件名,其后跟一个空字符(null)
    • |:控制操作符,将一条命令的输出传递给下一个命令以供进一步处理
    • xargs:将标准输入转换成命令行参数的命令
    • -0:以空字符(null)而不是空白字符来分割记录
    • du:计算文件占用的磁盘空间的命令
    • sort:对文本文件进行按行排序的命令
    • -n:根据数字大小进行比较
    • tail -10:输出文件结尾部分的命令(最后 10 个文件)
    • cut:从每行删除特定部分的命令
    • -f2:只选择特定字段值
    • -I{}:将初始参数中出现的每个替换字符串都替换为从标准输入读取的名称
    • -s:仅显示每个参数的总和
    • -h:用可读格式打印输出
    • {}:递归地查找目录,统计每个文件占用的磁盘空间

 

  4)

# find / -type f -ls | sort -k 7 -r -n | head -10 | column -t | awk {print $7,$11}
  
1494845440 /swapfile
1085984380 /home/magi/ubuntu-17.04-desktop-amd64.iso
591003648 /home/magi/.gdfuse/magi/cache/0B5nso_FPaZFqTFU0XzkzUlJUZzA
395770383 /home/magi/.gdfuse/magi/cache/0B5nso_FPaZFqeldzUmhPeC03Zm8
394891761 /home/magi/.gdfuse/magi/cache/0B5nso_FPaZFqRGd4V0VrOXM4YVU
103999072 /usr/lib/x86_64-linux-gnu/libOxideQtCore.so.0
97356256 /usr/lib/firefox/libxul.so
87896064 /var/lib/snapd/snaps/core_3604.snap
87793664 /var/lib/snapd/snaps/core_3440.snap
87089152 /var/lib/snapd/snaps/core_3247.snap

详解:

    • find:在目录结构中搜索文件的命令
    • /:在整个系统(从根目录开始)中查找
    • -type:指定文件类型
      f:普通文件
    • -ls:在标准输出中以 ls -dils 的格式列出当前文件
    • |:控制操作符,将一条命令的输出传递给下一个命令以供进一步处理
    • sort:对文本文件进行按行排序的命令
    • -k:按指定列进行排序
    • -r:反转结果
    • -n:根据数字大小进行比较
    • head:输出文件开头部分的命令
    • -10:打印前 10 个文件
    • column:将其输入格式化为多列的命令
    • -t:确定输入包含的列数并创建一个表
    • awk:模式扫描和处理语言
    • ‘{print $7,$11}‘:只打印指定的列

 

以上是关于linux 之内存与磁盘的主要内容,如果未能解决你的问题,请参考以下文章

linux之关机重启指令

Linux编程之共享内存

linux系统CPU内存磁盘监控发送邮件脚本之二

Linux学习-内存与磁盘管理

linux进程间通信之Posix 信号量用法详解代码举例

磁盘与文件系统管理之五