Linux 面试知识点

前言

为了便于理解,本文从常用操作和概念开始讲起。虽然已经尽量做到简化,但是涉及到的内容还是有点多。在面试中,Linux 知识点相对于网络和操作系统等知识点而言不是那么重要,只需要重点掌握一些原理和命令即可。为了方便大家准备面试,在此先将一些比较重要的知识点列出来:

  • 能简单使用 cat,grep,cut 等命令进行一些操作;
  • 文件系统相关的原理,inode 和 block 等概念,数据恢复;
  • 硬链接与软链接;
  • 进程管理相关,僵尸进程与孤儿进程,SIGCHLD 。

一、常用操作以及概念

快捷键

  • Tab:命令和文件名补全;
  • Ctrl+C:中断正在运行的程序;
  • Ctrl+D:结束键盘输入(End Of File,EOF)

求助

1. --help

指令的基本用法与选项介绍。

2. man

man 是 manual 的缩写,将指令的具体信息显示出来。

当执行 man date 时,有 DATE(1) 出现,其中的数字代表指令的类型,常用的数字及其类型如下:

代号 类型
1 用户在 shell 环境中可以操作的指令或者可执行文件
5 配置文件
8 系统管理员可以使用的管理指令

3. info

info 与 man 类似,但是 info 将文档分成一个个页面,每个页面可以跳转。

4. doc

/usr/share/doc 存放着软件的一整套说明文件。

关机

1. who

在关机前需要先使用 who 命令查看有没有其它用户在线。

2. sync

为了加快对磁盘文件的读写速度,位于内存中的文件数据不会立即同步到磁盘,因此关机之前需要先进行 sync 同步操作。

3. shutdown

# shutdown [-krhc] 时间 [信息]
-k : 不会关机,只是发送警告信息,通知所有在线的用户
-r : 将系统的服务停掉后就重新启动
-h : 将系统的服务停掉后就立即关机
-c : 取消已经在进行的 shutdown

PATH

可以在环境变量 PATH 中声明可执行文件的路径,路径之间用 : 分隔。

/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/dmtsai/.local/bin:/home/dmtsai/bin

sudo

sudo 允许一般用户使用 root 可执行的命令,不过只有在 /etc/sudoers 配置文件中添加的用户才能使用该指令。

包管理工具

RPM 和 DPKG 为最常见的两类软件包管理工具:

  • RPM 全称为 Redhat Package Manager,最早由 Red Hat 公司制定实施,随后被 GNU 开源操作系统接受并成为许多 Linux 系统的既定软件标准。YUM 基于 RPM,具有依赖管理和软件升级功能。
  • 与 RPM 竞争的是基于 Debian 操作系统的 DEB 软件包管理工具 DPKG,全称为 Debian Package,功能方面与 RPM 相似。

发行版

Linux 发行版是 Linux 内核及各种应用软件的集成版本。

基于的包管理工具 商业发行版 社区发行版
RPM Red Hat Fedora / CentOS
DPKG Ubuntu Debian

VIM 三个模式


  • 一般指令模式(Command mode):VIM 的默认模式,可以用于移动游标查看内容;
  • 编辑模式(Insert mode):按下 “i” 等按键之后进入,可以对文本进行编辑;
  • 指令列模式(Bottom-line mode):按下 “:” 按键之后进入,用于保存退出等操作。

在指令列模式下,有以下命令用于离开或者保存文件。

命令 作用
:w 写入磁盘
:w! 当文件为只读时,强制写入磁盘。到底能不能写入,与用户对该文件的权限有关
:q 离开
:q! 强制离开不保存
:wq 写入磁盘后离开
:wq! 强制写入磁盘后离开

GNU

GNU 计划,译为革奴计划,它的目标是创建一套完全自由的操作系统,称为 GNU,其内容软件完全以 GPL 方式发布。其中 GPL 全称为 GNU 通用公共许可协议(GNU General Public License),包含了以下内容:

  • 以任何目的运行此程序的自由;
  • 再复制的自由;
  • 改进此程序,并公开发布改进的自由。

开源协议

二、磁盘

磁盘接口

1. IDE

IDE(ATA)全称 Advanced Technology Attachment,接口速度最大为 133MB/s,因为并口线的抗干扰性太差,且排线占用空间较大,不利电脑内部散热,已逐渐被 SATA 所取代。


2. SATA

SATA 全称 Serial ATA,也就是使用串口的 ATA 接口,抗干扰性强,且对数据线的长度要求比 ATA 低很多,支持热插拔等功能。SATA-II 的接口速度为 300MiB/s,而 SATA-III 标准可达到 600MiB/s 的传输速度。SATA 的数据线也比 ATA 的细得多,有利于机箱内的空气流通,整理线材也比较方便。


3. SCSI

SCSI 全称是 Small Computer System Interface(小型机系统接口),SCSI 硬盘广为工作站以及个人电脑以及服务器所使用,因此会使用较为先进的技术,如碟片转速 15000rpm 的高转速,且传输时 CPU 占用率较低,但是单价也比相同容量的 ATA 及 SATA 硬盘更加昂贵。


4. SAS

SAS(Serial Attached SCSI)是新一代的 SCSI 技术,和 SATA 硬盘相同,都是采取序列式技术以获得更高的传输速度,可达到 6Gb/s。此外也通过缩小连接线改善系统内部空间等。


磁盘的文件名

Linux 中每个硬件都被当做一个文件,包括磁盘。磁盘以磁盘接口类型进行命名,常见磁盘的文件名如下:

  • IDE 磁盘:/dev/hd[a-d]
  • SATA/SCSI/SAS 磁盘:/dev/sd[a-p]

其中文件名后面的序号的确定与系统检测到磁盘的顺序有关,而与磁盘所插入的插槽位置无关。

三、分区

分区表

磁盘分区表主要有两种格式,一种是限制较多的 MBR 分区表,一种是较新且限制较少的 GPT 分区表。

1. MBR

MBR 中,第一个扇区最重要,里面有主要开机记录(Master boot record, MBR)及分区表(partition table),其中主要开机记录占 446 bytes,分区表占 64 bytes。

分区表只有 64 bytes,最多只能存储 4 个分区,这 4 个分区为主分区(Primary)和扩展分区(Extended)。其中扩展分区只有一个,它使用其它扇区来记录额外的分区表,因此通过扩展分区可以分出更多分区,这些分区称为逻辑分区。

Linux 也把分区当成文件,分区文件的命名方式为:磁盘文件名 + 编号,例如 /dev/sda1。注意,逻辑分区的编号从 5 开始。

2. GPT

扇区是磁盘的最小存储单位,旧磁盘的扇区大小通常为 512 bytes,而最新的磁盘支持 4 k。GPT 为了兼容所有磁盘,在定义扇区上使用逻辑区块地址(Logical Block Address, LBA),LBA 默认大小为 512 bytes。

GPT 第 1 个区块记录了主要开机记录(MBR),紧接着是 33 个区块记录分区信息,并把最后的 33 个区块用于对分区信息进行备份。这 33 个区块第一个为 GPT 表头纪录,这个部份纪录了分区表本身的位置与大小和备份分区的位置,同时放置了分区表的校验码 (CRC32),操作系统可以根据这个校验码来判断 GPT 是否正确。若有错误,可以使用备份分区进行恢复。

GPT 没有扩展分区概念,都是主分区,每个 LBA 可以分 4 个分区,因此总共可以分 4 * 32 = 128 个分区。

MBR 不支持 2.2 TB 以上的硬盘,GPT 则最多支持到 233 TB = 8 ZB。


开机检测程序

1. BIOS

BIOS(Basic Input/Output System,基本输入输出系统),它是一个固件(嵌入在硬件中的软件),BIOS 程序存放在断电后内容不会丢失的只读内存中。


BIOS 是开机的时候计算机执行的第一个程序,这个程序知道可以开

### Linux 面试常见问题和知识点总结 #### 一、grep命令 `grep` 是一个强大的文本搜索工具,可以使用正则表达式进行全局查找并打印匹配的行。以下是常用的选项及其功能: - `-c`:统计匹配的行数[^1]。 - `-i`:忽略大小写进行匹配[^1]。 - `-n`:显示匹配行的行号[^1]。 - `-v`:反向选择,显示不匹配的行。 示例命令: ```bash grep -n "the" filename ``` #### 二、Shell脚本基础 以下是关于 Shell 脚本的一些重要知识点: 1. **特殊变量**: - `$0`:表示当前脚本的名称[^2]。 - `$n`(如 `$1`, `$2` 等):表示传递给脚本的参数,按顺序编号。 - `$#`:表示传递给脚本的参数个数。 - `$?`:表示上一个命令的退出状态码[^2]。 - `$*` 和 `$@`:分别表示所有参数作为一个整体或单独处理。 - `$$`:表示当前 Shell 进程的 PID[^2]。 2. **脚本编写注意事项**: - 编写 Shell 脚本之前必须赋予该脚本可执行权限,例如 `chmod +x script.sh`。 - Shell 脚本的第一行通常为 `#!/bin/bash` 或其他解释器路径,用于指定脚本运行的环境。 3. **注释符**: - Shell 脚本中的注释符为 `#`,从 `#` 开始直到行尾的内容都被视为注释[^2]。 4. **命令示例**: - 命令 `sed -i s/\r/ /g test.txt` 的作用是将文件 `test.txt` 中的所有回车符 `\r` 替换为空格。 #### 三、Shell 特殊符号含义 在 Shell 中,以下符号具有特定的含义: - `$0`:脚本名称[^2]。 - `$n`:脚本参数(按顺序编号)[^2]。 - `$#`:脚本参数个数。 - `$*`:所有参数作为一个字符串[^2]。 - `$@`:所有参数作为独立的字符串。 - `$$`:当前 Shell 的进程 ID[^2]。 #### 四、Linux 系统操作 1. **统计文件个数**: 统计 `/var/log` 目录下文件的个数可以通过以下命令实现: ```bash find /var/log -type f | wc -l ``` 2. **重定向输出**: 将命令 `F1` 的运行结果输出到文件 `F2.txt` 中,可以使用以下命令: ```bash F1 > F2.txt ``` 3. **网络扫描脚本**: 编写一个脚本,判断 `192.168.1.0/24` 网络中哪些 IP 地址在线: ```bash #!/bin/bash for ip in $(seq 1 254); do ping -c 1 -W 1 192.168.1.$ip > /dev/null && echo "192.168.1.$ip is up" done ``` #### 五、用户配置文件 以下是 Linux 用户登录时加载的不同配置文件及其作用: - `/etc/profile`:为系统中的每个用户设置环境信息,当用户第一次登录时被执行,并从 `/etc/profile.d` 目录的配置文件中搜集 shell 设置[^3]。 - `/etc/bashrc`:为每个运行 Bash Shell 的用户执行此文件,仅在打开新的 Bash Shell 时读取,而不是在用户登录时自动执行[^3]。 - `~/.bash_profile`:每个用户可以在此文件中输入专用于自己的 Shell 信息,当用户登录时只执行一次[^3]。 - `~/.bashrc`:包含专用于用户的 Bash Shell 信息,当用户登录以及每次打开新的 Shell 时被读取[^3]。 - `~/.bash_logout`:每次退出系统(退出 Bash Shell)时执行该文件。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值