关于对Linux系统的内存和磁盘的操作

内存和磁盘使用率

查看内存使用率: free、top

查看磁盘使用率: fdisk、df、du

free

以KB为单位:

$ free
total used free shared buff/cache available
Mem: 16248492 2179340 8456660 440648 5612492 13299528
Swap: 2097148 0 2097148

以MB为单位:

$ free -m
total used free shared buff/cache available
Mem: 15867 2134 8239 430 5494 12981
Swap: 2047 0 2047

以GB为单位:

$ free -g
total used free shared buff/cache available
Mem: 15 2 8 0 5 12
Swap: 1 0 1

buff/cache是buffers和cache的和,buffer是内核使用的缓冲区,cache是页缓存

Swap是交换分区,程序的内存是虚拟内存,当实际的内存不够用时,会使用换页,如果不使用swap,那么当内存不够时,系统会随机kill掉占用较大的进程

top

top命令可以动态查看内存使用情况,不作赘述

...
MiB Mem : 15867.7 total, 7515.7 free, 2437.6 used, 5914.4 buff/cache
MiB Swap: 2048.0 total, 2048.0 free, 0.0 used. 12714.6 avail Mem
...

fdisk

查看磁盘分区

$ sudo fdisk -l
Disk /dev/loop0: 4 KiB, 4096 bytes, 8 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes Disk /dev/loop1: 133.24 MiB, 139706368 bytes, 272864 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
...
Device Boot Start End Sectors Size Id Type
/dev/nvme1n1p1 * 2048 1050623 1048576 512M 83 Linux
/dev/nvme1n1p2 1050624 926812159 925761536 441.4G 5 Extended
/dev/nvme1n1p3 926812160 966658047 39845888 19G 83 Linux
/dev/nvme1n1p4 966658048 1000212479 33554432 16G 82 Linux swap / Solari
/dev/nvme1n1p5 1052672 463931391 462878720 220.7G 83 Linux
/dev/nvme1n1p6 463933440 926812159 462878720 220.7G 83 Linux
....

Linux中将磁盘当作文件来对待

df

查看分区使用和挂载点

$ df -h
Filesystem Size Used Avail Use% Mounted on
udev 7.8G 0 7.8G 0% /dev
tmpfs 1.6G 2.5M 1.6G 1% /run
/dev/nvme0n1p5 916G 74G 796G 9% /
tmpfs 7.8G 75M 7.7G 1% /dev/shm
tmpfs 5.0M 4.0K 5.0M 1% /run/lock
tmpfs 7.8G 0 7.8G 0% /sys/fs/cgroup
/dev/loop0 128K 128K 0 100% /snap/bare/5
/dev/loop1 134M 134M 0 100% /snap/chromium/2020
/dev/loop2 531M 531M 0 100% /snap/datagrip/144
...

du

查看磁盘占用空间

使用dd创造出一个空洞文件

$ dd if=/dev/zero bs=4M count=10 seek=20 of=afile
10+0 records in
10+0 records out
41943040 bytes (42 MB, 40 MiB) copied, 0.0187228 s, 2.2 GB/s

使用du和ls -l命令查看到的文件大小不一样,因为ls -l显示的文件实际大小,并非在磁盘中的占用空间

常见文件系统

常见文件系统: ext4、xfs、NTFS(需要额外的软件)

一般可以发现windows的文件系统是NTFS,CentOS7是XFS,CentOS6是EXT4

EXT4文件系统

基本结构较为复杂

超级块

超级块记录有关封闭文件系统的各种信息,例如块计数,inode计数,支持的功能,维护信息等,df查看到的信息就是超级块中的信息

i节点

i节点即index node索引节点,可以把i节点看作是一个指向磁盘上该文件存储区的地址,用于存储属性信息

$ ls -l
total 41040
-rw-rw-r-- 1 hwx hwx 125829120 7月 14 14:47 afile
drwxrwxr-x 4 hwx hwx 4096 7月 11 08:51 CLionProjects
drwxrwxr-x 3 hwx hwx 4096 7月 12 13:21 DataGripProjects
drwxr-xr-x 2 hwx hwx 4096 7月 9 15:19 Desktop
drwxr-xr-x 8 hwx hwx 4096 7月 13 13:48 Documents
drwxr-xr-x 4 hwx hwx 4096 7月 13 13:42 Downloads
...

ls -l输出的这些权限信息都被记录到i节点中,输入ls -i显示文件对应的i节点

57675187  CLionProjects     57147482  Public
58590896 DataGripProjects 57803301 PycharmProjects
57147479 Desktop 57280593 sdk
57147483 Documents 58590235 sensors
57147480 Downloads 57147872 snap
...

数据块

数据块记录了数据,i节点下会对应有数据块

基本操作命令

对i节点和数据块的操作

touch

创建文件

$ touch afile

向文件写入内容,并查看大小:

$ echo 123 > afile
$ du -h afile
4.0K afile

显示大小为4K,因为ext4中一个块大小最小为4K

cp

复制文件

$ cp afile afile2
$ ls -li afile*
57182948 -rw-r--r-- 1 root root 4 7月 14 21:11 afile
57185789 -rw-r--r-- 1 root root 4 7月 14 21:11 afile2

复制后虽然是同样的文件,但是i节点发生了变化

mv

移动文件

$ mv afile2 afile3
$ ls -li afile*
57182948 -rw-r--r-- 1 root root 4 7月 14 21:11 afile
57185789 -rw-r--r-- 1 root root 4 7月 14 21:11 afile3

可以看到虽然文件名改变了,但i节点并未发生变化

ln

链接文件

$ ln afile bfile

查看i节点可知,i节点相同,因此改变bfile的内容也会改变afile

$ ls -li bfile afile
57182948 -rw-r--r-- 2 root root 4 7月 14 21:11 afile
57182948 -rw-r--r-- 2 root root 4 7月 14 21:11 bfile

这样的链接不能跨越分区,要想跨越分区的话要使用软链接,又称符号链接:

$ ln -s afile aafile
$ ls -li afile aafile
57183495 lrwxrwxrwx 1 root root 5 7月 14 21:30 aafile -> afile
57182948 -rw-r--r-- 2 root root 4 7月 14 21:11 afile

facl

文件访问权限控制列表

使用getfacl可以查看该列表,标记了文件所有者和组

$ getfacl afile
# file: afile
# owner: root
# group: root
user::rw-
group::r--
other::r--

使用setfacl 赋予权限

$ setfacl -m u:hwx:r afile
$ ls -l afile
-rw-r--r--+ 2 root root 4 7月 14 21:11 afile

如上为hwx这个用户赋予只读权限

权限描述符尾部的+号,号表示该文件或目录开启了Access Control Lists功能, 是对rwx权限的扩充

将u改为g,就能对组进行操作

磁盘分区与挂载

常用命令: mount、mkfs、parted

使用fdisk/gdisk可以对硬盘进行分区

mount

参数 作用
-a 挂载所有在/etc/fstab中定义的文件系统
-t 指定文件系统的类型

例如要将设备/dev/sdb2挂载到/backup目录,只要在mount命令中填写设备与挂载目录参数即可,系统会自动去判断挂载文件的类型,因此只要执行下述命令:

mount /dev/sdb2 /backup

将挂载信息按照指定的填写格式设备文件 挂载目录 格式类型 权限选项 自检 优先级写入到/etc/fstab文件中,该文件中包含着挂载所需的诸多信息项目,一旦配置好之后就能永久生效

字段 意义
设备文件 一般为设备的路径+设备名称,可写成唯一识别码(UUID)
挂载目录 指定要挂载到的目录,在挂载前创建好
格式类型 指定文件系统格式
权限选项 权限
自检 为1则开机进行磁盘自检,为0则不检验
优先级 若自检,则可对多块磁盘进行自检优先级设置

umount

与mount相反,作用是撤销挂载

卸载设备文件: umount/dev/sdb2

Linux内存和磁盘管理(入门)的更多相关文章

  1. Linux系统的磁盘管理

    Linux系统的磁盘管理有三个命令:df.du.fdisk. df:列出Linux中所有文件系统的整体磁盘使用量: du:对文件和目录所占用磁盘空间的查看: fdisk:用于磁盘分区时列出所有的磁盘. ...

  2. Linux文件系统与磁盘管理

    Linux文件系统与磁盘管理 有哪些文件系统: FAT:微软在Dos/Windows系列操作系统中共使用的一种文件系统的总称.       exFAT(Extended File Allocation ...

  3. linux基础之磁盘管理与文件系统

    上面一篇文章(https://www.cnblogs.com/ckh2014/p/7224851.html)介绍了硬盘的基本结构,那么一块磁盘如何应用取存储数据呢? 它的步骤是这样的: 识别硬盘 -- ...

  4. Linux进阶之磁盘管理及LVM逻辑卷

    本节内容 磁盘管理 LVM 一.磁盘管理 1.硬盘接口 种类及其应用: IDE接口硬盘多用于家用产品,部分应用于服务器 SATA SCSI接口硬盘主要应用于服务器 SAS只在高端服务器上,价格昂贵 2 ...

  5. linux 操作系统之磁盘管理

    磁盘管理 存储设备:硬盘 , U盘 , 移动硬盘 , 光盘 , 软件. 组装一台电脑 无法被修改 df -h #查看磁盘分区的情况 , 可用的. 查看磁盘或者目录的内容 df “df” 常用的 “-i ...

  6. Linux浅谈磁盘管理及案例

    磁盘管理 MBR原理图 从该图可理解到为什么主分区只能是四个. 可以不分区,但为了统一管理,提高访问效率 设备不同,生成设备名称不同 管理分区命令: lsblk查看块设备 fdisk创建MBR分区 f ...

  7. linux基本命令之磁盘管理命令(ls,cd,pwd,mkdir,rmdir,clear, touch)

    linux磁盘管理命令 1.ls(list)命令:列出目录内容. 格式:ls [参数][文件或目录] ls -a或-all表示列出所有文件和目录,以点开始的是影藏文件,例如,.bash_history ...

  8. centos7/linux 磁盘管理入门

    添加新磁盘并挂载: 设置虚拟机系统里添加磁盘,重启虚拟机后,虚拟机目录/dev下会增加一个sdb设备. 使用fdisk /dev/sdb 管理磁盘分区,首先p 查看磁盘分区信息,然后n增加一个主分区, ...

  9. Linux命令_磁盘管理_查看磁盘或目录的容量

    软件环境:虚拟机VM12,Linux版本 CentOS 7.3 命令 df (disk filesystem) 用于查看已挂载磁盘的总容量.使用容量.剩余容量等,可以不加任何参数,默认以KB为单位显示 ...

  10. Linux内存:物理内存管理概述

    内存中的物理内存管理 概述 一般来说,linux内核一般将处理器的虚拟地址空间划分为2部分.底部比较大的部分用于用户进程,顶部则专用于内核. 在IA-32系统上,地址空间在用户进程和内核之间划分的典型 ...

随机推荐

  1. K8S中Pod概念

    一.资源限制 Pod 是 kubernetes 中最小的资源管理组件,Pod 也是最小化运行容器化应用的资源对象.一个 Pod 代表着集群中运行的一个进程.kubernetes 中其他大多数组件都是围 ...

  2. [Leetcode 111]二叉树的最短深度 BFS/DFS

    题目 给定二叉树,求最短路径包含的节点个数 https://leetcode.com/problems/minimum-depth-of-binary-tree/ Given a binary tre ...

  3. Java数据类型基础

    Java 数据类型基础 数据类型 强类型语言 要求变量的使用要严格符合规定,所有变量必须先定义后使用 Java数据分为两大类 基本类型(primitive type) 数值类型 整数类型 byte(1 ...

  4. Bad Request - Invalid Hostname HTTP Error 400. The request hostname is invalid.

    VS 调试 显示 如下错误 解决办法: 1 打开调试运行中的 IIS Express 2 点击其中一条记录 3  点击配置 4 找到对应项目站点 .添加 <binding protocol=&q ...

  5. CSS选择艺术以及CSS文本样式

    CSS选择的艺术1.css规则由两部分构成:选择器,声明(声明由属性和值构成且末尾跟一个分号)2.css注释:/*--*/3.CSS样式的引用(1)行内样式(内联样式)例如:<p style=& ...

  6. Pytorch Cross Entropy

    Entropy Uncetainly measure of surprise higher entropy = less info \[Entropy = -\sum_i P(i)\log P(i) ...

  7. python中创建列表、元组、字符串、字典

    >>> a = ["aaa","bbb","ccc"] ## 列表,中括号,逗号 >>> type(a) ...

  8. You need to run build with JDK or have tools.jar on the classpath.If this occures during eclipse build make sure you run eclipse under JDK as well 错误

    我打开项目报错是这样的  pom.xml jdk配置什么的都是好的    但是还是报错 解决错误 : 1.打开你eclipse的根目录,找到eclipse.ini  这个文件夹打开 2.打开是这个样子 ...

  9. Glist 按钮属性

    grayed 变灰与否不影响点击等事件 touchable 为false,不会变灰,但会无法点击, enabled为false自动变灰,且无法点击

  10. [rk3568][buildroot] 移除RK3568 iodomain check

    1. 问题背景 RK3568 基线代码默认会起一个服务监控RK3568 iodomain,该服务间隔性输出log信息: 由于该功能非必要,故选择移除该部分逻辑 2.解决方案 查看源码编译脚本,如下图所 ...