header-bg.jpg
Linux 根文件系统及基础命令
发表于 2019-06-13 10:00
|
分类于 Linux
|
评论次数 0
|
阅读次数 355

文件系统相关知识

在了解文件系统知识前,先来了解几个预备知识。

关于 Linux 的 glibc

众所周知,程序编译的方式有两种:

动态链接(如 phppython

静态编译(如 cc++

进程的类型

终端:硬件设备,关联一个用户接口。

所以进程可以分为以下两类:

与终端相关:通过终端启动

与终端无关:操作系统引导启动过程中自动启动

操作系统的组成

从静态的角度可以看成由 kernelapplication 组成。

从文件系统的角度,可以看成由层级结构组成。

FHS

文件系统层次结构标准(英语:Filesystem Hierarchy Standard,FHS)定义了 Linux 操作系统中的主要目录及目录内容。FHS 由 Linux 基金会维护,当前版本为 3.0 版,于 2015 年发布。

/bin

Essential user command binaries (for use by all users)

存放所有用户可用的基本命令程序文件。

/sbin

存放供系统管理员使用的命令程序文件。

/boot

存放引导加载器必须用到的各类静态文件,例如:kernelinitramfs(initrd)、gurb 等。

/dev

存放特殊文件或设备文件,设备有两种类型:

字符设备(线性设备),例如:键盘、屏幕等。

块设备(随机设备),例如:硬盘、内存条等。

/etc

存放系统程序的配置文件,只能为静态文件。

/home(可选)

普通用户家目录的集中位置。一般每个普通用户的家目录默认为此目录下与用户名相同的子目录,/home/USERNAME

/root(可选)

管理员的家目录。

/lib

为系统启动或根文件系统上的应用程序(/bin,/sbin等)提供共享库,以及为内核提供内核模块

libc.so.*:动态链接的 C 库。

ld*:运行时链接器/加载器。

modules:用于储存内核模块的目录。

/lib64

64 位系统特有的存放 64 位共享库的目录。

/media

便携式设备挂载点(如:USB,移动硬盘),cdromfloppy

/mnt

其它文件系统的临时挂载点。

/opt(可选路径)

附加应用程序的安装位置。(早期的程序一般都安装在这个位置,例如 Oracal)

/srv

存放当前主机为服务提供的数据。

/tmp

为那些会产生临时文件的程序提供用于存储临时文件的目录。(此目录可供所有用户执行写入操作,有特殊权限。)

/usr

全局共享的只读数据目录,并且此目录也有层级结构。(此目录是除了根目录以外最重要的目录)

/usr/bin:和 /bin 一样存放所有用户可用的基本命令程序文件,但并不是系统启动就需要用到。

/usr/sbin:和 /sbin 一样存放管理员可用的基本命令程序文件,但并不是系统启动就需要用到。

/usr/lib:存放 /usr/bin/usr/sbin 目录下的程序需要用到的 C 库文件。

/usr/lib64:存放 /usr/bin/usr/sbin 目录下的程序需要用到的 64 位系统 C 库文件。

/usr/include:存放 C 程序头文件。

/usr/share:存放架构特有的文件,例如 CentOS 一般存放:命令手册页,命令自带文档

/usr/local:也是一个层级结构,下文会专门讲解。

/usr/X11R6:存放 X-Window 程序。

/usr/src:存放程序源码文件。

/usr/local

让系统管理员安装本地应用程序的目录,也通常用于安装第三方程序。

此目录也是一个层级结构,因此可以独立安装一个文件系统(挂载一个设备)。

它的目录包括 binetcgameincludelibmansbinsharesrc,层级结构和 /usr 相似,因此不再详细介绍每个目录的作用。

/var

用来存放经常变化的数据的目录。

/var/cache:存放应用程序的缓存数据

/var/lib:存放变量状态信息

/var/local:存放 /usr/local 中的程序的变量数据

/var/lock:存放锁定文件

/var/log:存放日志文件和目录

/var/opt:存放 /opt 的程序的变量数据

/var/run:存放与运行进程相关的数据,例如 pid 文件

/var/spool:存放应用程序假脱机数据

/var/tmp:存放系统重新启动之后仍需要保留的临时文件

/proc

基于内存的虚拟文件系统,用于为内核及进程存储其相关信息,它们多为内核参数,例如 net.ipv4.ip_forward,虚拟为 net/ipv4/ip_forward,存储于 /proc/sys/,因此其完整路径为 /proc/sys/net/ipv4/ip_forward

/sys

sysfs 虚拟文件系统提供了一种比 proc 更为理想的访问内核数据的途径,其主要作用在于为管理 Linux 设备提供一种统一模型的接口。

sys 参考文档

文件类型

在使用 ls -l 命令后会输出如下格式的数据:

drwxr-xr-x. 13 root root 4096 Jan 9 2018 usr

其中第一个字符 d 就代表文件的类型,Linux 中的各字符代表各种文件类型如下:

-

常规文件,即 f

d

目录文件(directory)。

b

块设备文件(block device),支持以 block 为单位进行随机访问。

c

字符设备文件(character device),支持以 character 为单位进行访问。

在使用 ls -l /dev 命令后,会输出如下数据:

crw-r--r-- 1 root root 10, 235 Aug 12 2018 autofs
crw------- 1 root root 10, 234 Aug 12 2018 btrfs-control

其中 10, 23510, 234 分别代表了 major number(主设备号)和 minor number(次设备号)

major number 用于标识设备类型,进而确定要加载的驱动程序
minor number 用于标识同一类型中不同的设备,范围一般是 0-255(8 位二进制)。

l

符号链接文件(symbolic link)。

p

命名管道(pipe)。

s

套接字文件(socket),主要用于服务提供。

基础命令

命令类型

Linux 的命令类型分为 shell 内建命令外部命令

区分内建命令外部命令的方式是使用 type 命令进行查看。

运行 type cd 后,会在屏幕中输出 cd is a shell builtin,所以这是一个内建命令。

运行 type whereis 后,会在屏幕中输出 whereis is /usr/bin/whereis,所以这是一个外部命令。

需要注意的是,命令还可以有别名,若别名与原名相同,则原名就会被隐藏,如果依然需要运行原命令,而不使用别名,则使用 \COMMAND 即可。

例如:运行 type ls 后,会在屏幕中输出 ls is aliased to 'ls --color=auto'

分别运行 ls\ls 后的效果:

ls.png

命令别名

注意:定义的别名仅对当前 shell 进程有效,也就是说重新登录后会失效,其他会话也无法使用当前会话定义的别名。

which 命令

shows the full path of (shell) commands.

该命令用来显示 shell 命令的完整路径。

格式: which [options] [--] programname [...],例如:which whichwhich ls

options:

–skip-alias:which 默认会显示命令的别名,使用该选项可以忽略显示命令的别名

whereis 命令

locate the binary, source, and manual page files for a command.

whereiswhich 更强大,不仅能显示二进制程序的路径,还能显示 sourcemanual 文件的路径。

格式: whereis [options] [-BMS directory... -f] name...,例如:whereis lswhereis whichwhereis whereis

options:

-b:只查找二进制程序路径。

-m:只查找使用手册文件路径。

who 命令

显示当前系统中所有登录者的信息(show who is logged on)。

格式: who [OPTION]... [ FILE | ARG1 ARG2 ]

options:

-b:显示系统此次启动的时间。

-d:显示系统中死亡的进程。

-u:显示系统中死亡的进程。

-r:显示运行级别。

w 命令

Show who is logged on and what they are doing.

可以认为此命令是一个增强版的 who 命令。

格式: w [options] user [...]

mkdir 命令

创建目录(make directories)。

格式:mkdir [OPTION]... DIRECTORY...

options:

-p:自动按需创建父目录。

-v:verbose,显示详细过程。

-m MODE:创建时直接给定权限。

注意:路径基名方为命令的作用对象,基名之前的路径必须得存在。

rmdir 命令

删除空目录(remove empty directories)。

格式:rmdir [OPTION]... DIRECTORY...

options:

-p:自动按需创建父目录。

-v:verbose,显示详细过程。

发布评论
还没有评论,快来抢沙发吧!