开发者学堂课程【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进行安装,安装之后就可以进行使用。
它也可以把 Linux 中的文件传到 windows 里,现在我们要把 etc 下的 hosts 文件传到 windows 里,输入 ll /etc/hosts
再输入 sz /etc/hosts就会默认传到电脑中的下载路径下
接下来介绍文件管理
二、文件系统与目录结构
上图为 Linux 里的文件系统和目录结构,可见根下面有一些特定目录,这些目录在 Linux 中有标准,标准是定义了在 Linux 根下面必须要按照一定的格式要求来存放相应的文件,不同的目录存放的数据不一样。
此外要根据目录的具体功能来存放。目录的官方文档从www.pathname.com/fhs 来下载,进入网址后打开 FHS 2.3 PDF 来下载。
下面介绍根目录下的一级目录:
bin 放基本命令库即基本的二进制程序,boot 放静态的文件和启动相关的文件包括内核,
内核如下:
dev 放设备,etc 放系统配置,lib 放共享库
API 是开发接口,很多软件在开发时需要用到相类似的功能,而这些类似的功能没有必要重新开发一套软件来提供这个功能,每个软件有一些功能类似,我们直接做出软件放到模块里,别的软件去调用这个模块就可以了,这就是库的调用,库放在 lib。现在系统是64位,所以大多数库都是 lib64。
比如想要知道某个应用程序,输入 which ls,显示 /bin/ls,那么该应用程序用到的库有哪些呢?
用命令 ldd /bin/ls来查询
如图可以看到 /lib64/libselinux.so.1等库文件,如果破坏库文件,该程序则不能运行。
这些库文件不仅是该程序用,其他程序也在用,例如再查 which hostname ,看到该命令在 bin 下,输入 ldd /b
发现两者间有共用库
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从根目录角度看一级目录的不同:
首先不观察颜色上的变化,目录名来讲:lost-found是因为文件系统的原因,CentOS7用 sfs 格式化的。
net 和 misc 是由于没装 automatic的包。CentOS7新增 run 目录。
CentOS6和7都有基本应该具备的目录。
三、文件系统
文件和目录被组织成一个单根倒置树结构
文件系统从根目录下开始,用 “/”表示
根文件系统 (rootfs):root filesystem
文件名称区分大小写
以.开头的文件为隐藏文件
路径分割的\
文件有两类数据:
元数据:metadata
数据:data
文件系统分层结构: LSB Linux Standard Base
FHS:(Filesystem Hierarchy Standard)
在有些场景下,大小写可能不区分,比如存在 u 盘,FAT 格式的文件系统就不区分。现在想要在 Linux 里使用 u 盘,先要识别
点击断开连接后,就从 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