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

相关文章
|
13天前
|
安全 Linux iOS开发
Binary Ninja 5.1.8104 (macOS, Linux, Windows) - 反编译器、反汇编器、调试器和二进制分析平台
Binary Ninja 5.1.8104 (macOS, Linux, Windows) - 反编译器、反汇编器、调试器和二进制分析平台
158 53
Binary Ninja 5.1.8104 (macOS, Linux, Windows) - 反编译器、反汇编器、调试器和二进制分析平台
|
13天前
|
Linux API iOS开发
Binary Ninja 4.2.6455 (macOS, Linux, Windows) - 反编译器、反汇编器、调试器和二进制分析平台
Binary Ninja 4.2.6455 (macOS, Linux, Windows) - 反编译器、反汇编器、调试器和二进制分析平台
109 14
Binary Ninja 4.2.6455 (macOS, Linux, Windows) - 反编译器、反汇编器、调试器和二进制分析平台
|
23天前
|
SQL Linux 调度
Timeplus Enterprise 3.0 (Linux, macOS) - 流处理平台
Timeplus Enterprise 3.0 (Linux, macOS) - 流处理平台
57 2
Timeplus Enterprise 3.0 (Linux, macOS) - 流处理平台
|
1月前
|
安全 Linux API
JEB Pro v5.31 (macOS, Linux, Windows) - 逆向工程平台
JEB Pro v5.31 (macOS, Linux, Windows) - 逆向工程平台
117 0
|
Unix Linux iOS开发
Splunk Enterprise 10.0.0 (macOS, Linux, Windows) - 搜索、分析和可视化,数据全面洞察平台
Splunk Enterprise 10.0.0 (macOS, Linux, Windows) - 搜索、分析和可视化,数据全面洞察平台
60 0
|
4月前
|
Ubuntu Linux Shell
Linux环境下VSCode快速安装终极指南:debian/ubuntu/linux平台通用
以上就是在Linux环境下安装VSCode的终极指南,抛开繁复的专业词汇,以平易近人的文字、形象生动的比喻让你轻松学会这一过程。别忘了,你的小伙伴VSCode已经在应用菜单里等你了!
1076 23
|
5月前
|
Java 关系型数据库 MySQL
在Linux平台上进行JDK、Tomcat、MySQL的安装并部署后端项目
现在,你可以通过访问http://Your_IP:Tomcat_Port/Your_Project访问你的项目了。如果一切顺利,你将看到那绚烂的胜利之光照耀在你的项目之上!
328 41
|
5月前
|
安全 前端开发 Linux
Immunity CANVAS Professional 7.27 (macOS, Linux, Windows) - 渗透测试和漏洞利用平台
Immunity CANVAS Professional 7.27 (macOS, Linux, Windows) - 渗透测试和漏洞利用平台
179 3
Immunity CANVAS Professional 7.27 (macOS, Linux, Windows) - 渗透测试和漏洞利用平台
|
4月前
|
Dart Linux iOS开发
JEB Pro v5.30 (macOS, Linux, Windows) - 逆向工程平台
JEB Pro v5.30 (macOS, Linux, Windows) - 逆向工程平台
267 0
JEB Pro v5.30 (macOS, Linux, Windows) - 逆向工程平台