Linux 平台文件系统管理全面讲解和实战 | 学习笔记

简介: 快速学习Linux 平台文件系统管理全面讲解和实战

开发者学堂课程【Linux企业运维实战 - 入门及常用命令Linux 平台文件系统管理全面讲解和实战】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/550/detail/7601


Linux 平台文件系统管理全面讲解和实战


内容介绍:

一、rz 命令

二、文件系统与目录结构

三、文件系统

四、文件名规则

五、文件系统结构

六、Linux 上的应用程序的组成部分

七、Linux 下的文件类型

八、CentOS 7目录变化

九、显示当前工作目录

十、绝对和相对路径

十一、命令总结

 

一、rz 命令

从 windows 上把一些文件传到 Linux 里,刚才讲解中用到的一个命令为  rz,用 rz 命令前提先要安装软件,不安装软件输入 rz 会显示报错:-bash: rz: command not found

找到光盘下的路径  /media/CentOS_6.9_Final,输入 rpm -ivh /media/CentOS_6.9_Final/Packages/lrzsz-0.12.20-27.1.el6.x86_64.rpm进行安装,安装之后就可以进行使用。

image.png

它也可以把 Linux 中的文件传到 windows 里,现在我们要把 etc 下的 hosts 文件传到 windows 里,输入 ll  /etc/hosts

再输入 sz /etc/hosts就会默认传到电脑中的下载路径下

接下来介绍文件管理


二、文件系统与目录结构

image.png

上图为 Linux 里的文件系统和目录结构,可见根下面有一些特定目录,这些目录在 Linux 中有标准,标准是定义了在 Linux 根下面必须要按照一定的格式要求来存放相应的文件,不同的目录存放的数据不一样。

此外要根据目录的具体功能来存放。目录的官方文档从www.pathname.com/fhs 来下载,进入网址后打开 FHS 2.3 PDF 来下载。

 

下面介绍根目录下的一级目录:

image.png

bin 放基本命令库即基本的二进制程序,boot 放静态的文件和启动相关的文件包括内核,

内核如下:

image.png

dev 放设备,etc 放系统配置,lib 放共享库

API 是开发接口,很多软件在开发时需要用到相类似的功能,而这些类似的功能没有必要重新开发一套软件来提供这个功能,每个软件有一些功能类似,我们直接做出软件放到模块里,别的软件去调用这个模块就可以了,这就是库的调用,库放在 lib。现在系统是64位,所以大多数库都是 lib64。

比如想要知道某个应用程序,输入 which ls,显示 /bin/ls,那么该应用程序用到的库有哪些呢?

用命令 ldd /bin/ls来查询

image.png

如图可以看到 /lib64/libselinux.so.1等库文件,如果破坏库文件,该程序则不能运行。

这些库文件不仅是该程序用,其他程序也在用,例如再查 which hostname ,看到该命令在 bin 下,输入 ldd /b

image.png

发现两者间有共用库

media 是挂载点,图形界面一登陆默认挂载,mnt 也是挂载点,不过一般是管理员手动敲命令

opt 放一些第三方应用软件包,sbin 放管理员用的程序,比如 init,输入 which init 查路径显示 init 在 sbin 下,用户无权限

srv 放一些服务用的程序,一些数据,tmp 放临时数据,usr 表示第二个分层,里面也有自己的目录结构,usr 目录最大,var 放可变数据,比如日志 log

此外还有很多一级目录:

比如 lost+found,放置因为系统某些故障原因导致一些路径混乱的文件。

比如 misc 可以实现光盘的自动挂载,现在光盘挂在 /media/CentOS_6.9_Final,这个挂载依赖于图形,即图形界面不登陆则不会挂载在此处。现在注销开机自动登陆图形页面的功能:

输入 nano /etc/gdm/custom.conf,进入后注释掉

AutomaticLoginEnable=true  和 AutomaticLogin=root,然后重启,输入reboot,重新启动后输入 df 观察光盘是否挂上,发现没有挂上,这时需要登录,用普通用户登录或者管理员登录都可以,登陆进去后看见出现图标再来输入 lsblk 发现挂上。

但是对于普通用户则没有挂光盘的权限,此时需要进入一个目录里,输入 cd /misc

ls

ls -a

cd cd/

pwd

df

完成挂光盘

比如 proc 目录,进到 proc 目录下:

输入 cd /proc

ls 进入后发现有很多文件,继续查看 cpuinfo 文件,输入 cat cpuinfo

显示的就是 cpu 的信息:型号,内核,频率,缓存等等,再输入 ll cpuinfo 显示 -r--r--r--. 1 root root 0 Mar 28 17:21 cpuinfo 显示 cpu 大小为0,因为 proc 存的内容不占硬盘空间,放置在内存中。

proc是虚拟目录,输入 du -sh /porc 显示大小为0个字节

比如 sys 目录,sys 目录放置硬件信息,现在想要增加一个硬盘,先输入 lsblk 可知当前只有 sda 一个硬盘。

在虚拟机设置中添加硬盘,将最大磁盘大小设置为100G,设置将虚拟磁盘存储为单个文件,添加完成后目录将多出一个带-0的文件。但是在命令中查看,输入 lsblk却看不到,要想让设置的硬盘让 linux 识别出来,需要在 sys 目录下做一些操作:

输入 echo ‘- - -’ > /sys/class/scsi_host/host2/scan,再来查看,输入 lsblk 显示出现 sdb 硬盘。在 sys 目录下,增加磁盘扫描操作,就可识别新增加的硬盘。

对比CentOS6和CentOS7从根目录角度看一级目录的不同:

image.png

首先不观察颜色上的变化,目录名来讲:lost-found是因为文件系统的原因,CentOS7用 sfs 格式化的。

net 和 misc 是由于没装 automatic的包。CentOS7新增 run 目录。

CentOS6和7都有基本应该具备的目录。

 

三、文件系统

文件和目录被组织成一个单根倒置树结构

文件系统从根目录下开始,用 “/”表示

根文件系统 (rootfs):root filesystem

文件名称区分大小写

以.开头的文件为隐藏文件

路径分割的\

文件有两类数据:

元数据:metadata

数据:data

文件系统分层结构: LSB Linux Standard Base

FHS:(Filesystem Hierarchy Standard)

http://www.pathname.com/fhs/

在有些场景下,大小写可能不区分,比如存在 u 盘,FAT 格式的文件系统就不区分。现在想要在 Linux 里使用 u 盘,先要识别 image.png

点击断开连接后,就从 windows 识别到了 Linux 识别,识别出后桌面出现图标

之后来访问,输入 df 查询 u 盘挂载情况,输入 lsblk,显示 sdb 在/run/media/root/DA50-BA50 目录下,输入

cd /run/media/root/DA50-BA50/

ls

再用 touch 命令建一个 f1,输入  touch f1

ls

ll F1 后发现可以访问,大小写不敏感。

在 Linux 里,每个文件都有相应的一些数据,数据分为两部分,一个是文件内容,另一部分是属性信息,文件的属性信息成为元数据,文件中存放的具体内容为数据。

 

四、文件名规则

文件名最长255个字节

包括路径在内文件名称最长4095个字节

不同类型文件颜色不一样 蓝色-->目录 绿色-->可执行文件 红色-->压缩文件 浅蓝色-->链接文件 灰色-->其他文件 粉色是 socket 文件,与网络通讯相关 浅黄色是管道文件

除了斜杠和 NUL,所有字符都有效.但使用特殊字符的目录名和文件不推荐使用,例如不推荐 touch “a b”,cat “a b”,有些字符需要用引号来引用它们。此外,删除文件:先输入 touch /root/-a 加上路径创建,然后输入 rm -f /root/-a进行删除

标准 Linux 文件系统(如ext4 ) ,文件名称大小写敏感。例如MAIL,Mail, mail, mAiL

 

五、文件系统结构

/boot:引导文件存放目录,内核文件 (vmlinuz)、引导加载器(bootloader,grub)都存放于此目录

/bin:供所有用户使用的基本命令﹔不能关联至独立分区,OS 启动即会用到的程序

/sbin:管理类的基本命令﹔不能关联至独立分区,OS 启动即会用到的程序

/lib:启动时程序依赖的基本共享库文件以及内核模块文件(/lib/modules)

/lib64:专用于x86_64系统上的辅助共享库文件存放位置

/etc :配置文件目录

/home/USERNAME:普通用户家目录

/root :管理员的家目录

/media:便携式移动设备挂载点

/mnt:临时文件系统挂载点

/dev:设备文件及特殊文件存储位置

b: block device,随机访问

c: character device,线性访问

/opt :第三方应用程序的安装位置

/srv:系统上运行的服务用到的数据

/tmp:临时文件存储位置

/usr: universal shared, read-only data

bin:保证系统拥有完整功能而提供的应用程序

sbin:

lib : 32位使用

lib64∶只存在64位系统

include:C程序的头文件(header files)

share :结构化独立的数据,例如 doc, man等

local :第三方应用程序的安装位置

bin, sbin, lib, lib64, etc, share

/var: variable data files

cache:应用程序缓存数据目录

lib:应用程序状态信息数据

local :专用于为 /usr/local下的应用程序存储可变数据;

lock:锁文件

log:日志目录及文件

opt:专用于为 /opt下的应用程序存储可变数据;

run:运行中的进程相关数据,通常用于存储进程 pid 文件

spool:应用程序数据池

tmp:保存系统两次重启之间产生的临时数据

/proc:用于输出内核与进程信息相关的虚拟文件系统

/sys :用于输出当前系统上硬件设备相关信息虚拟文件系统

/selinux: security enhanced Linux,selinux 相关的安全策略等信息的存储位置

 

六、Linux上的应用程序的组成部分

二进制程序:/bin, /sbin,/usr/bin,

/usr/sbin,/usr/local/bin,/usr/local/sbin

库文件:/lib, /lib64,/usr/lib,

/usr/lib64,/usr/local/lib,/usr/local/lib64

配置文件:/etc,/etc/DIRECTORY,/usr/local/etc

帮助文件:/usr/share/man,/usr/share/doc,

/usr/local/share/man,

/usr/local/share/doc

 

七、Linux下的文件类型

- :普通文件

d:目录文件

b:块设备

c:字符设备

I:符号链接文件

p:管道文件pipe

s:套接字文件socket


输入 ll /dev/sda 显示结果 b 开头,这叫块设备,所有的硬盘、分区都叫块设备。实际上我们使用的 lsblk 就是 list block列出块设备。

字符设备 zero:输入 ll /dev/zero,结果以 c 开头,是字符设备,逻辑存在不是真实存在,zero 可以在磁盘上创建生成大文件,或者填充。

输入 dd if=/dev/zero of=/data/bigfile bs=1M count=1024,用 zero 来填充,凑出一个 G,of 是输出文件,输出到 bigfile 中,bs是 blocksize 块大小,此时在硬盘上生成1个 G 的文件,同时会显示生成磁盘速度是多少,再输入 ll /data/bigfile -h 查看磁盘生成,当然里面内容为0,输入 hexdump -C  /data/bigfile 可以查看里面二进制内容。

Hexdump 可查看二进制内容或者文本。

 

八、CentOS 7目录变化

/bin和/usr/bin

/sbin和/usr/sbin

/lib 和/usr/lib

/lib64和/usr/lib64

在CentOS7上输入 ll -d /bin/usr/bin,看到 bin ->usr/bin,即两者属于同一目录,在CentOS6上输入后看到两者在不同目录并且属性不同。

在CentOS7上输入 ll -d /lib64/ /usr/lib64看到属性完全一样,而CentOS6上属性大小都不同

 

九、显示当前工作目录

每个 shell 和系统进程都有一个当前的工作目录

CWD:current work directory

显示当前shell CWD 的绝对路径

pwd: printing working directory

-P显示真实物理路径

-L显示链接路径(默认)

此外,若在CentOS7上输入 cd /bin,再输入 pwd,即使 /bin是个快捷方式的目录不是真实目录也会显示出,可以输入 pwd -P显示/usr/bin 显示真实路径。

pwd 是内部命令,其中也存在外部命令


十、绝对和相对路径

绝对路径

以正斜杠开始

完整的文件的位置路径

可用于任何想指定一个文件名的时候

相对路径名

不以斜线开始

指定相对于当前工作目录或某目录的位置

可以作为一个简短的形式指定一个文件名

基名:basename

目录名:dirname

现在要用相对路径来表示 /etc/motd,先回到父目录,输入cat ../etc/motd。如果本身已经在 etc 下,不需要再写绝对路径,写相对路径更方便,输入 cat ./motd 或者 cat motd

再比如现在在目录 sysconfig/network-scripts/ 下,输入 cd sysconfig/network-scripts/

pwd 显示 etc/sysconfig/network-scripts,要想访问 etc,输入cat ../../motd

推荐写脚本程序用相对路径,不会因为写绝对路径换一个位置拷一个新的文件而不能用。

basename 取的就是文件对应的文件名称,并去掉路径,比如现在有一个完整的文件想要取出文件名,输入

/etc/sysconfig/network

ll /etc/sysconfig/network

basename /etc/sysconfig/network

显示 network

如果本身就是一个文件夹,那么取的就是最后内容比如 sysconfig。dirname 只要目录不要文件名,输入 dirname /etc/sysconfig 显示 /etc

输入 dirname /etc/sysconfig/network显示/etc/sysconfig

 

十一、命令总结

alias   对应有 unalias 取消别名,别名要想存入盘,必须写入文件里 .bashrc

basename

bc   计算器

clock   日历

cd   切换文件夹

chvt   切换终端

command   alias 后面加上别名就会优先使用原始命令而不用别名

cat /etc/centos-release    查看发行版本

cat /proc/meminfo    内存大小

clear 相当于 ctrl+l

data

dd

df

dirname

du -sh /*   显示根目录下哪些文件最大

echo

enable   启用禁用内部命令

fdisk

gedit   图形工具

history

hash

hostname

help 内部命令

hexdump  显示十六进制

info

Id

init   切换

ifconfig   查看IP

ll  是个别名

ls /dev/sda*

lsblk   块设备的情况

ltrace   查看 library

ldd   查看命令引用了哪些空

logout 相当于 exit  或ctrl+d

man

makewhatis

mandb

nano

Ntpdata IP

poweroff

passwd

pwd

rz   把 windows 文件传到 linux 中

runlevel

reboot

rpm -qa  |wc -l

touch

tty   显示在第几个终端

type

tzselect   Centos6

timedatectl   Centos7

startx

sz   把 linux 文件传到 windows 中

sosreport

source .

shutdown

strace   查看system call

Screen

uname -r   查看内核

wall

who  who am i

whatis

whereis

which

w

whoami

相关文章
|
3月前
|
Shell Linux
Linux shell编程学习笔记30:打造彩色的选项菜单
Linux shell编程学习笔记30:打造彩色的选项菜单
|
21天前
|
安全 Linux 数据安全/隐私保护
深入Linux操作系统:文件系统和权限管理
在数字世界的海洋中,操作系统是连接用户与硬件的桥梁,而Linux作为其中的佼佼者,其文件系统和权限管理则是这座桥梁上不可或缺的结构。本文将带你探索Linux的文件系统结构,理解文件权限的重要性,并通过实际案例揭示如何有效地管理和控制这些权限。我们将一起航行在Linux的命令行海洋中,解锁文件系统的奥秘,并学习如何保护你的数据免受不必要的访问。
|
1月前
|
存储 运维 监控
深入Linux基础:文件系统与进程管理详解
深入Linux基础:文件系统与进程管理详解
85 8
|
1月前
|
存储 Linux 文件存储
Linux文件系统
Linux文件系统 一切皆文件 在Linux中,“一切皆文件”的概念意味着系统中的所有资源,包括硬件设备、目录及进程等,均被视为文件。这种设计简化了操作和管理,具体包括: 普通文件:存储数据的常规文件。 目录文件:包含其他文件和子目录的文件。 进程文件:在/proc目录下代表系统中运行的进程。 设备文件:位于/dev目录,代表硬件设备。 网络字节流套接字文件:用于网络通信的数据流。 链接文件:指向另一个文件的符号链接或硬链接。 管道文件:用于进程间通信的文件。
54 7
|
1月前
|
监控 Oracle 关系型数据库
Linux平台Oracle开机自启动设置
【11月更文挑战第8天】在 Linux 平台设置 Oracle 开机自启动有多种方法,本文以 CentOS 为例,介绍了两种常见方法:使用 `rc.local` 文件(较简单但不推荐用于生产环境)和使用 `systemd` 服务(推荐)。具体步骤包括编写启动脚本、赋予执行权限、配置 `rc.local` 或创建 `systemd` 服务单元文件,并设置开机自启动。通过 `systemd` 方式可以更好地与系统启动过程集成,更规范和可靠。
117 2
|
1月前
|
Oracle Ubuntu 关系型数据库
Linux平台Oracle开机自启动设置
【11月更文挑战第7天】本文介绍了 Linux 系统中服务管理机制,并详细说明了如何在使用 systemd 和 System V 的系统上设置 Oracle 数据库的开机自启动。包括创建服务单元文件、编辑启动脚本、设置开机自启动和启动服务的具体步骤。最后建议重启系统验证设置是否成功。
|
2月前
|
NoSQL Ubuntu Linux
Linux平台安装MongoDB
10月更文挑战第11天
78 5
|
2月前
|
Linux API 开发工具
FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
ijkplayer是由B站研发的移动端播放器,基于FFmpeg 3.4,支持Android和iOS。其源码托管于GitHub,截至2024年9月15日,获得了3.24万星标和0.81万分支,尽管已停止更新6年。本文档介绍了如何在Linux环境下编译ijkplayer的so库,以便在较新的开发环境中使用。首先需安装编译工具并调整/tmp分区大小,接着下载并安装Android SDK和NDK,最后下载ijkplayer源码并编译。详细步骤包括环境准备、工具安装及库编译等。更多FFmpeg开发知识可参考相关书籍。
116 0
FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
|
2月前
|
并行计算 Ubuntu Linux
Ubuntu学习笔记(三):Linux下操作指令大全
Ubuntu学习笔记,介绍了Linux操作系统中常用的命令和操作,如文件管理、系统信息查看、软件安装等。
48 3
|
3月前
|
Shell Linux
Linux shell编程学习笔记82:w命令——一览无余
Linux shell编程学习笔记82:w命令——一览无余