*linux启动流程 *linu相关的指令 *软件管理相关指令 *文件系统 *Linux里的文件系统 *目录操作的常见指令 *文件和目录的创建删除 *查看文件
linux启动流程
- 加载BIOS(Basic Input Output System):BIOS是系统启动时加载的第一个软件。
- 启动上电自检POST(Power-On-Self-Test),负责完成对CPU、主板、内存、软硬盘子系统、显示子系统(包括显示缓存)、串并行接口、键盘、CD-ROM光驱等的检测,主要检查硬件的好坏。
- 对外部设备进行初始化,读取BIOS参数,并和实际的硬件进行比较,如果不符合,会影响系统启动。
- 查找MBR(Master Boot Record,主引导分区)。如果未找到,会提示找不到硬盘。
- 读取主引导分区(MBR):拷贝启动引导代码BootLoader
- 启动引导代码(bootloader):当我们的硬盘上有多个操作系统时,可以用来选择进入到哪个操作系统。
- 加载内核,进入操作系统:运行第一个程序 : /sbin/init
- sbin/init 会读取相关的配置文件,来确定系统的运行级别。
- 0: 关机
- 1 : 单用户模式
- 2 : 无网络支持的多用户模式
- 3 : 有网络支持的多用户模式
- 4 : 保留,未使用
- 5 : 有网络支持,且有图形化界面的多用户模式
- 6 : 重启
- 切换运行级别: init 级别
- 根据对应的运行级别,查找对应的脚本文件。例如,运行5级别,查找 /etc/rc5.d目录,启动该目录下的相关服务。
- 这些文件夹下的init脚本都有一些特别的名字,命名都以S(start)、K(kill)或D(disable)开头,后面跟一个数字。当init进入一个运行等级的时候,它会按照数字顺序运行所有以K开头的脚本并传入stop参数,除非对应的init脚本在前一个运行等级中没有启动。然后init按照数字顺序运行所有以S开头的脚本并传入start参数。任何以D开头的init脚本都会被忽略—这让你可以在指定的运行等级禁止一个脚本,或者你也可以仅仅移除全部符号链接。
- 解析用户自定义的启动脚本:/etc/rc.local(如果存在的话)
- 进入用户界面。
- sbin/init 会读取相关的配置文件,来确定系统的运行级别。
linu相关的指令
在Linux中,很多功能需要使用命令行来实现,我们甚至可以不使用桌面,只使用终端命令在Linux里实现绝大多数功能。
指令的基本格式:
代码语言:javascript复制命令 [选项] [参数]
Copy
例如:
代码语言:javascript复制ls -a / # 表示列出根目录下所有的文件及文件夹
Copy
####
软件管理相关指令
简单来说,Linux系统可以分为Debian和RedHat两大分支。基于Debian平台比较流行的操作系统是Ubuntu,基于RedHat平台比较流行的操作系统是fedora.两种不同的分支,它们所使用的软件管理命令也是不一样的。
基于Debian平台的操作系统,使用dpkg和apt指令管理软件,基于RedHat平台的操作系统,使用rpm和yum指令来管理软件。它们的命名方式不同,但是命令的执行效果大致相同,我们主要学习基于Debian平台Ubuntu系统下的dpkg和apt指令。
dpkg
dpkg是“Debian Package”的简写,为 “Debian” 专门开发的套件管理系统,方便软件的安装、更新及移除。所有源自“Debian”的“Linux ”发行版都使用 “dpkg”,例如 “Ubuntu”、“Knoppix ”等。
命令行 | 作用 | 示例 |
---|---|---|
dpkg -i <.deb file name> | 安装.deb后缀名的软件 | dpkg -i google-chrome-stable_current_amd64.deb |
dpkg --info <.deb file name> dpkg -s | 检测打包好的文件 | dpkg --info google-chrome-stable_current_amd64.deb dpkg -s google-chrome-stable |
dpkg -L | 列出与该资源包有关的文件 | dpkg -L google-chrome-stable |
dpkg -l | 列出所有已安装的包 | dpgk -l |
dpkg -r | 删除指定的软件,并保留配置 | dpkg -r google-chrome-stable |
dpkg -P | 删除指定的软件,不保留配置 | dpkg -P google-chrome-stable |
apt
dpkg本身是一个偏底层的工具,一般情况下不经常使用,我们更多的使用apt. apt全称Advanced Packaging Tool(apt),是Linux下的一款安装包管理工具。使用这个命令可以快速的实现在线、升级以及卸载软件。
命令行 | 作用 | 示例 |
---|---|---|
apt-cache search | 查找指定的包 | apt-cache search google |
apt-get install | 安装指定的包 | apt-get install vim |
apt-get -f install | 安装依赖包 | apt-get -f install |
apt-get reinstall | 重现安装指定的包 | apt-get reinstall vim |
apt-get remove | 删除指定的包 | apt-get remove vim |
apt-get remove --purge | 删除指定的包,包括配置文件 | apt-get remove --purge vim |
apt-get update | 会更新/etc/apt/sources.list软件资源包列表 | aput-get update |
apt-get upgrade | 更新已安装的包 | apt-get upgrade |
apt-get dist-upgrade | 更新系统 | apt-get dist-upgrade |
文件系统
操作系统中,用来管理和存储文件信息的软件机构称为文件管理系统,简称文件系统。具体来说,这部分系统就是负责为用户建立、读取、修改和转储文件,控制文件的存取,当用户不再使用时撤销文件等。
常见的文件系统介绍:
- FAT16 MS-DOS6.X及以下版本使用。每个磁盘的分区最大只能达到2G,并且会浪费很多空间。在FAT16里有簇的概念,就相当于是图书馆里一格一格的书架,每个要存到磁盘的文件都必须配置足够数量的簇,才能存放到磁盘中,每个文件,无论大小,都至少要使用一个簇在保存。 FAT16各分区与簇大小的关系如下表: 分区大小FAT16簇大小16MB-127MB2KB128MB-255MB4KB256MB-511MB8KB512MB-1023MB16KB1024MB-2047MB32KB思考:如果一个1KB的文件,被保存到了一个1000M的分区,这个文件实际占用的空间是多少?
- FAT32 Windows95以后的系统都支持。 FAT32具有一个最大的优点:在一个不超过8GB 的分区中,FAT32分区格式的每个簇容量都固定为4KB,与FAT16相比,可以大大地减少磁盘的浪费,提高磁盘利用率。 突破了FAT16对每一个分区的容量只有2GB的限制,可以将一整个大硬盘定义成一个分区而不必分为几个分区使用,方便了对磁盘的管理。但是,FAT32里,无法存放大于4GB的单个文件,而且容易产生磁盘碎片,性能不佳。 另外,FAT不支持长文件名,只能支持8个字符,而且后缀名最多只支持3个字符。
- NTFS WindowsNT系列设计,用来取代FAT系统。每个簇的空间更小,磁盘的利用率更高,并且可以共享资源、文件夹以及对文件设置访问许可权限。
- RAW
RAW文件系统是一种磁盘未经处理或者未格式化产生的文件系统。一般来说有这几种可能造成正常文件系统变成RAW文件系统:
- 没有格式化
- 格式化中途取消
- 硬盘出现坏道
- 硬盘出现不可预知的错误
- EXT EXT是扩展文件系统,目前最新的版本是5.0.
- HFS( ) 苹果电脑上的文件系统。
#####
Linux里的文件系统
不同于Windows系统有盘符的概念(C盘、D盘等),Linux里只有一个盘符,是从 " / " 开始的,只有它是没有上级目录的。如果把整个应用目录系统看成一个树形结构," / " 表示相当于这个树形结构的根,我们可以将 " / " 称之为根目录。
在根目录里,有以下几个一级文件夹或文件,需要大家有所了解。
目录 | 说明 |
---|---|
/ | 系统的根目录 |
/bin | 包含了一些二进制文件,即可执行文件。我们在命令行里执行的指令,例如 ls,rm,cp,mv等,其实都是执行的这个目录里的二进制文件。 |
/boot | 系统启动相关时所需的文件。(勿动) |
/cdroom | 挂载光盘 |
/dev | 设备文件,其中许多都是在启动时或运行时生成的。例如,如果你将新的网络摄像头连接到机器中,会自动弹出一个新的设备条目 |
/etc | 用来存放所有的系统管理所需要的配置文件和子目录。(会经常使用) |
/home | 用户的主目录,每一个用户都有自己的目录,所有的用户都存放在home目录下。 |
/lib(64) | 用来存放系统最基本的动态连接共享库,几乎所有的应用程序都需要用到这些共享库。 |
/lost found | 这个目录一般情况下是空的,当系统非法关机后,这里会存放一些没来得及保存的文件。 |
/media | Linux系统自动识别的一些设备,比如U盘、光驱等,当识别后,linux会把识别的设备挂载到这个目录下。 |
/mnt | 系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光盘挂载在/mnt/上,然后进入到该目录就可以查看光驱里的内容了。 mount /dev/cdrom /mnt/ umount /mnt/ |
/opt | 给额外安装软件所摆放的目录。比如你安装一个ORACLE数据库就可以把它放到这个目录下 |
/proc | 虚拟目录,它是系统内存的映射,可以通过直接访问这个目录来获取系统信息。 /proc/sys/net/ipv4/icmp_echo_ignore_all |
/root | 超级用户目录 |
/run | 是一个临时文件,存储系统启动以来的信息,当系统重启时,这个目录下的文件会被删除。 |
/sbin | 超级用户使用的命令存放目录(系统启动时所需要的重要的系统二进制文件) |
/snap | Ubuntu自己的软件管理工具 |
/srv | 存放一些服务启动之后需要提取的数据 |
/sys | 映射内核设备 |
/tmp | 存放临时文件 |
/usr | 非常重要的目录,用来存放用户安装的应用程序和用户文件。 |
/var | 经常修改的数据,比如程序运行的日志文件 |
- 以 " . " 开头的文件是隐藏文件。
- " ./ " 表示的是当前目录; “ …/ ” 表示的上级目录
- “ ~ ” 表示的当前用户的家目录
目录操作的常见指令
- pwd:查看当前工作目录
- cd:切换工作目录
符号 | 说明 |
---|---|
. | 当前目录 |
… | 上一级目录 |
~ | 当前用户的家目录 |
- | 表示上次切换之前的目录 |
/ | 表示根目录 |
1.使用cd时,不指定目标地址,会切换到家目录 2.凡是以/开头的目录都是绝对目录 3.凡是以.或…开头的目录都是相当目录
- l:查看指定目录的内容,不指定目录时查看当前工作目录
选项 | 说明 |
---|---|
-a | 显示所有文件,包括隐藏文件 |
-l | 列表显示,详细信息 |
-h | 人性化的显示大小,如:K/M/G |
-l选项显示的结果:类型及权限 | 连接数 | 用户 | 用户组 | 大小 | 月 | 日| 年/时间 | 名称
文件类型:(-l显示结果中的第一部分的第一列)
连接数:如果是文件,表示这个文件有多少个名字(硬链接);如果是目录,表示这个目录里有多少个子目录。
符号 | 类型 |
---|---|
- | 普通文件。包括纯文本文件(ASCII);二进制文件(binary);数据格式的文件(data);各种压缩文件等。 |
d | 目录文件。 |
l | 链接文件。类似于Windows里的快捷方式。 |
c | 字符设备文件。即串行端口的接口设备,例如键盘、鼠标等等。 |
b | 块设备文件。就是存储数据以供系统存取的接口设备,简单而言就是硬盘 |
s | 套接字文件。这类文件通常用在网络数据连接,最常在 /var/run目录中看到这种文件类型。 |
p | 管道文件。它主要的目的是,解决多个程序同时存取一个文件所造成的错误。 |
alias:给命令起别名。
代码语言:javascript复制alias md=mkdir
Copy
相当于给mkdir命令起了一个别名,以后使用md即可创建一个文件夹。
代码语言:javascript复制alias # 不添加任何参数,表示列出所有的别名
Copy
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CCX3KPOb-1595169381692)(imgs/alias指令.png)]
代码语言:javascript复制unalias md # 删除别名
Copy
文件和目录的创建删除
命令 | 说明 |
---|---|
touch | 新建文件,可以是多个 |
rm | 删除文件或目录(删除目录时要传递’-r’选项) |
cp | 拷贝文件或目录(拷贝目录是要传递’-r’选项) |
mv | 移动文件或目录 |
mkdir | 创建目录,可以是多个 |
rmdir | 删除空目录 |
选项说明
-r:删除或拷贝目录时需要添加,表示递归操作。
-f:表示强制操作,没有提示信息。
*:表示模糊匹配,如:rm* .py
,表示删除所有的py文件。
-p:创建目录时若需要创建中间目录,可以添加此选项。
代码语言:javascript复制mkdir -p a/b/c
Copy
查看文件
- 相关命令
命令 | 说明 |
---|---|
cat | 从上到下,显示文件全部内容 |
tac | 从下到上,显示文件全部内容 |
head | 查看开头指定行数的内容,不指定时默认10行,如:head -20 filename |
tail | 查看文件末尾指定行数的内容,不指定时默认10行,如:tail -5 filename |
nl | 功能与cat相同,但是多显示了行号 |
wc | 统计显示,内容:行数 单词数 字符数 文件名 |
more | 一点一点查看内容 |
less | 一点一点查看内容 |
- more/less使用说明
- 显示一屏就停止
- q退出查看
- enter下翻一行
- 空格下翻一屏
- more查看完毕会自动退出,less不会
- less可以使用上下按钮上下翻看,more不可以
- 经常结合管道使用:ls /etc | more Linux系统提供了wc命令来统计文件的行数
统计当前目录下的所有文件行数: wc -l * ls -l|wc -l 用来统计当前目录下的文件数 当前目录以及子目录的所有文件行数: find . * | xargs wc -l
可以把改成所要匹配的文件,例如Java文件,.java这样就只统计java源码了。
关于wc命令的更多介绍,可以在终端输入wc --help查看
列出BKK目录下 后缀名是webp 且前缀名不是以大写X结尾的文件的 文件数 ls BKK | egrep [^X].webp | wc
wc命令的功能为统计指定文件中的字节数、字数、行数, 并将统计结果显示输出。 语法:wc [选项] 文件… 说明:该命令统计给定文件中的字节数、字数、行数。如果没有给出文件名,则从标准输入读取。wc同时也给出所有指定文件的总统计数。字是由空格字符区分开的最大字符串。 该命令各选项含义如下:
- c 统计字节数。
- l 统计行数。
- w 统计字数。 如果命令行中没有文件名,则输出中不出现文件名。 例如: $ wc - lcw file1 file2 4 33 file1 7 52 file2 11 11 85 total 省略任选项-lcw,wc命令的执行结果与上面一样 示例: wc命令用来计算一个文件或者指定的多个文件中的行数,单词数和字符数。如: wc filename 第一列显示行数,第二列显示单词数,第三列显示字符数。 wc 有四个参数可选,分别是l,c,m,w wc -l filename 报告行数 wc -c filename 报告字节数 wc -m filename 报告字符数 wc -w filename 报告单词数