关于对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. awk sub string

    cat TFY1C.txt|awk '{print $0"\t"substr($4,1,4)}'> TFY1CRID.tx 1--从那位开始 4--多长

  2. termux搭建服务器方式

    pkg install vim apt update 安装debian系统apt install proot-distroproot-distro install debianproot-distro ...

  3. 【VUE】关于pinia代替vuex

    官方文档:https://pinia.web3doc.top/ 知乎讲解:https://zhuanlan.zhihu.com/p/533233367

  4. 在服务器建立git服务端接收push后覆盖部署记录

    1.在本地要部署的目录 git initgit clone --bare ./ my_project.git 把本地init仓库克隆到 my_project.git 2.上传my_project.gi ...

  5. c# Visual Studio|There is no editor available for ***,make sure the application for the file type(.vb) is installed问题解决方法

    这个问题出现在在使用VS编码当中,电脑意外关机,导致的文件的缺失或者损坏. 使用反编译软件(如:ILSpy)对编译后的 .EXE文件进行反编译,在翻遍的结果中将相关代码拷贝至目标路径下,替换所需文件. ...

  6. 第八次团队作业:Beta冲刺(凡事预则立)

    这个作业属于哪个课程 2018级计算机和综合实验班 这个作业要求在哪里 Beta冲刺要求 这个作业的目标 Beta冲刺 改进完善的功能 完善之前年度报告功能 尽快上线小程序 增加的新功能 小程序打卡功 ...

  7. Python中列表、元组、字典的区别

    列表: 列表是一种数据结构,每一个元素对应一个值.例如:list=['a','b','c'] 访问列表数据通过下标的方式来进行数据访问,list[下标] list.append(i)  添加数据 de ...

  8. Spring--AOP通知获取数据

    AOP通知获取数据 获取参数 用before进行举例: 用around进行举例: 需要注意的是,Around的话,还可以处理一些之前发生异常的数据,直接在这里进行修改也是支持的: 获取返回值 环绕已经 ...

  9. 开发者实践丨Agora Home AI 音视频的未来

    本文作者是本届 RTE 2021 创新编程挑战赛获奖者,来自上海交通大学的李新春.他分享了本次参赛作品的构思.系统设计和开发的心得. 01 不得忽略的背景 从国家层面上讲,十四五期间我国人工智能发展的 ...

  10. 发布新版博客备份功能:生成 sqlite 数据库文件,vscode 插件可查看

    大家好,最近我们重新开发了园子的博客备份功能,今天发布第一个预览版,欢迎大家试用. 点击博客后台侧边栏的博客备份进入新版博客备份: 点击创建备份按钮创建博客备份任务(目前每天只能创建一次备份),待备份 ...