table {
border-collapse: collapse;
width: 100%;
margin-bottom: 1rem;
}
th, td {
border: 1px solid #ddd;
padding: 8px;
text-align: left;
}
th {
background-color: #f2f2f2;
}
tr:nth-child(even) {
background-color: #f9f9f9;
}
pre {
background-color: #f8f8f8;
padding: 15px;
border-radius: 4px;
overflow-x: auto;
}
1、“Linux真理”对Linux用户和管理员意味着什么?
“Linux真理”指操作系统必须信任用户,只有给予用户充分信任,用户才能发挥操作系统的全部能力。对于 Linux 用户和管理员来说,这意味着他们能获得操作系统的开放权限,即使犯错也能较容易恢复,不过要完全发挥 Linux 的潜力,需要了解其底层哲学、结构和技术。
2、就开源软件而言,“自由”意味着什么?
自由意味着:
我们不必担心软件许可监管人员找上门来,要求支付巨额费用以达到合规标准;
也不必输入一长串“密钥”来解锁购买或下载的软件。
此外,开源软件的源代码可供任何想要的人免费获取,可被阅读、修改和共享。这种“言论自由”的软件使用方式促进了:
个人和组织在全球范围内参与高质量代码的创建和测试;
代码可由所有人免费共享。
3、如果Linux主机上没有安装GUI桌面,你如何访问Linux命令行?
若在物理主机上,可按
Ctrl - Alt - F2
访问虚拟控制台2以登录命令行;
若在虚拟机上,需通过 VM 窗口菜单栏的
“文件➤首选项”
菜单,选择
“输入”
来更改主机键和其他键组合,再进行相应操作登录命令行。
4、操作系统的主要功能是什么?
操作系统的主要功能
操作系统的主要功能是管理计算机资源,具体包括以下几个方面:
1. 管理计算机和运行在计算机上的应用软件的操作
2. 管理对计算机硬件设备的访问
3. 管理系统服务
内存分配
数据从存储设备移动到内存
通过网络与其他计算机和设备通信
在显示器上以文本或图形格式显示数据
打印等
4. 为其他程序提供API以访问内核功能
5. 管理对CPU作为计算资源的访问
操作系统的核心功能
内存管理
管理多任务
管理多用户
进程管理
进程间通信
设备管理
错误处理
日志记录
5、列出操作系统的至少四项额外功能。
内存管理
多任务管理
多用户管理
进程管理
进程间通信(IPC)
设备管理
错误处理和日志记录
此外,操作系统还管理系统服务,如:
内存分配
数据从存储设备移动到内存
通过网络与其他计算机和设备通信
在显示器上以文本或图形格式显示数据
打印等
6、描述Linux核心实用工具作为一个整体的用途。
这两组核心实用工具(GNU核心实用工具和
util-linux
)共同提供管理基本Linux系统所需的基本实用工具,可用于完成日常任务,包括管理和操作文本文件、目录、数据流、各类存储介质、进程控制、文件系统等,是Linux系统管理员执行管理Linux计算机基本任务不可或缺的工具。
7、为什么林纳斯·托瓦兹选择为 Linux 使用 GNU 核心实用程序,而不是自己编写?
当林纳斯·托瓦兹首次编写并编译 Linux 内核时,他需要一套非常基本的系统实用程序才能开始进行稍有价值的工作。
但内核本身并不提供这些命令,甚至不提供任何类型的命令 shell,且内核本身无法独立发挥作用。
而 GNU 核心实用程序是免费可用的,所以他选择使用并为 Linux 重新编译了它们。
8、为什么你认为面向系统管理员的Linux哲学很重要?
作者有超过25年使用Unix和Linux的经验,发现Linux哲学极大提高了其作为系统管理员的效率和效力。严格遵循Linux哲学,无论面临何种压力,从长远来看都会有回报。
此外,不了解Linux的结构和哲学就难以学习众多Linux命令和实用程序,在命令行上工作需要此类知识,同时也能促进对其的掌握。
9、哪些命令可用于发现计算机系统硬件组件的信息?
以下是调整为 Markdown 格式的文本内容:
可使用
lshw
、
dmidecode
、
lsusb
、
lspci
、
lscpu
命令来发现计算机系统硬件组件的信息。其中:
lshw
用于列出主板、CPU 和其他安装硬件的数据;
dmidecode
可获取 SMBIOS 收集的数据,用于确定主板内存容量、内存类型等信息;
lsusb
和
lspci
分别用于列出 USB 和 PCI 设备信息,它们使用 Linux 启动时生成的
/proc
和
/sys
特殊文件系统的数据;
lscpu
可用于获取 CPU 相关信息。
10、在安装过程中,Anaconda 安装程序创建的卷组名称可以更改吗?
可以。配置卷组对话框允许更改卷组名称,虽然通常默认名称
fedora_studentvm1
在本课程中没问题,但也可以将卷组名称更改为像
vg-01
这样简单的名称。
11、安装总共使用了多少空间?
258M
12、当应用于Xfce桌面时,“轻量级”一词是什么意思?
Xfce桌面是轻量级的,与 KDE 和 GNOME 等其他一些桌面相比,它的内存占用和 CPU 使用率非常小。组成 Xfce 桌面的程序仅占用少量内存,CPU 使用率也很低。这种轻量级设计能节省内存和 CPU 周期,适合资源较少的旧主机和资源受限的虚拟机。
13、在默认应用程序配置对话框中,终端模拟器有多少个选项?
在默认应用程序配置对话框中,终端模拟器只有一个选项,即Xfce终端。
14、使用多个桌面有什么用途?
使用多个桌面可以将不同项目的窗口放置在不同桌面上,有助于整理工作,使工作更有条理。例如可以将邮件、浏览器窗口、终端会话等分别放在不同的工作区,方便管理和操作。
15、Xfce桌面的默认文件管理器叫什么名字?这个文件管理器与其他常见文件管理器相比如何?
Xfce桌面的默认文件管理器是Thunar。与Konqueror、Krusader或Dolphin等文件管理器相比,Thunar功能没有那么全面,但它简单、易于使用和配置、易于学习,非常实用且速度快。
它虽不能在窗口中创建多个窗格,但提供了标签功能,可同时打开多个目录。
此外,它还有一个不错的侧边栏,能显示完整的文件系统目录树和任何连接的USB存储设备的图标。
可进行设备挂载、卸载以及弹出可移动媒体等操作。
还能借助辅助应用程序打开存档文件。
16、如何以root用户身份获得终端登录?
在终端会话中,可使用以下命令切换到root用户:
[student@studentvm1 ~]$ su -
然后输入root密码。
也可以在虚拟控制台(如使用HostKey – F3切换到虚拟控制台会话3(vc3))以root身份登录,登录后出现
#
提示符即表示是root登录。
17、如果你已经有了喜欢的终端模拟器,它与Xfce终端模拟器相比如何,你分别更喜欢它们的哪些功能?
作者最喜欢的终端模拟器是
xfce4-terminal
、
Konsole
和
Tilix
。
Xfce4
和
Konsole
通过多标签实现单个窗口有多个终端会话,可在标签间切换;
Tilix
能在窗口会话中平铺多个模拟器会话,也可提供多个会话。
作者目前首选
Xfce4-terminal
,因其功能良好、轻量级且占用系统资源少。
Xfce4-terminal
的标签可展示连接的主机名,能拖动标签改变顺序,或将标签拖出窗口到桌面形成新窗口,并添加更多标签;而其他终端模拟器在标签展示信息和操作灵活性上不如它。
18、任何终端模拟器的功能是什么?
任何终端模拟器的功能是在图形用户界面(GUI)桌面上提供一个窗口,让我们能够访问Linux命令行,从而无限制地使用Linux的全部功能。
19、如果你不想再次输入之前的命令,想重复执行它,该怎么做?
可以使用向上箭头键滚动历史记录,找到想要重复的命令后按回车键再次执行该命令;也可以使用
history
命令查看历史记录,选择要执行的命令编号,输入
!XXX
(XXX为命令编号)后按回车键执行。
20、如何列出在命令行中之前输入的所有命令?
可以使用
history
命令来列出命令行中之前输入的所有命令,例如:
[student@studentvm1 ~]$ history
21、这两组核心实用工具的总体目的是什么?
这两组实用工具共同构成了Linux系统管理员工具箱中的许多最基本工具,用于处理包括:
文本文件管理与操作
目录管理
数据流处理
各类存储介质管理
进程控制
文件系统管理
等日常任务,使系统管理员能够执行管理Linux计算机所需的许多基本任务,没有它们就无法在Unix或Linux计算机上完成任何有用的工作。
22、为什么GNU核心实用工具对林纳斯·托瓦兹很重要?
当林纳斯·托瓦兹首次编写和编译Linux内核时,他需要一套非常基本的系统实用工具才能开始进行有一定价值的工作。内核本身不提供这些命令,甚至没有像
bash
这样的命令 shell。因此,他使用了免费的 GNU 核心实用工具并为 Linux 重新编译,从而得到了一个完整的操作系统,尽管它相当基础。
23、你的虚拟机中CPU的型号名称是什么?
Intel(R) Core(TM) i9 – 7960X CPU @ 2.80GHz
24、大于符号(>)在重定向操作中的作用是什么?
大于符号(
>
)是重定向的语法符号,用于将程序的标准输出(STDOUT)数据流重定向到文件而非默认的显示设备。若指定文件不存在则会创建该文件;若文件已存在,其内容会被命令的数据流覆盖。
25、是否可以将数据流的内容追加到现有文件中?
可以。可以使用双大于符号(
>>
)将新的数据流追加到文件中的任何现有内容之后,如命令
[student@studentvm1 test]$ df -h >> diskusage.txt
所示。
26、设计一个简短的命令行程序,仅显示包含CPU型号名称的行。
可以使用以下命令:grep ‘model name’ /proc/cpuinfo
27、在 /test 目录下创建一个包含十行随机数据的文件。
首先确保当前工作目录(PWD)为
/test
,若不是则切换到该目录。可使用以下命令创建十行每行 75 个字符的随机数据并存储到文件中:
pwgen 75 10 > random.txt
其中
random.txt
是创建的文件名,可按需修改。
28、假设你已经知道行号,如何将光标导航到特定的行号?
可以指定行号并使用
G
键“转到”指定的行号。例如要转到第 256 行,输入
256G
,该行将显示在终端顶部。
29、使用nano在学生用户的主目录中创建一个名为fruit.txt的文件,该文件包含至少十种水果的列表,每种水果占一行。保存该文件,然后使用cat工具显示文件内容。
打开终端,确保当前用户为
student
,若当前工作目录不是主目录,使用
cd
命令切换到主目录:
bash
cd
启动
nano
并创建
fruit.txt
文件:
bash
nano fruit.txt
在
nano
中输入至少十种水果,每种水果占一行;
按
Ctrl + S
保存文件;
按
Ctrl + X
退出
nano
;
使用
cat
命令显示文件内容:
bash
cat fruit.txt
30、使用 vim 编辑 fruit.txt 文件,将水果名称按字母顺序排序。保存文件,然后再次使用 cat 实用程序显示文件内容。
打开文件:在终端输入
vim fruit.txt
打开文件。
排序内容:在 vim 命令模式下输入
:%!sort
对文件内容进行排序。
保存文件:输入
:wq
保存并退出 vim。
显示内容:在终端输入
cat fruit.txt
显示文件内容。
31、root账户的功能是什么?
以下是调整为 Markdown 格式的文本内容:
`root` 用户可以在 Linux 计算机上执行任何操作和任务,无论文件、目录或进程归哪个用户所有。root 可以删除不可删除的文件、添加和删除用户、更改任何正在运行程序的优先级、终止或暂停任何正在运行程序的执行,还可以探索文件系统目录树的所有角落以及文件系统本身的结构。
32、为什么系统管理员在自己的工作中应该使用su – 命令?
当执行需要多次使用
root
权限的管理任务(多个命令)时,推荐使用
su -
命令;而
sudo
命令被系统管理员使用的方式并非其设计初衷,
sudo
被用作系统管理员的拐杖,所以系统管理员应使用
su -
命令。
33、系统管理员使用sudo为非特权用户提供对一个或几个程序的管理访问权限,有什么好处?
当系统管理员不在时,非特权用户可利用
sudo
获得对他们可能需要的一个或极少数命令的有限访问权限,完成特定需要 root 权限的任务。
34、在一次操作中,移除了utils包,同时mc(Midnight Commander)包也被移除了。请详细解释为什么DNF也移除了mc。
DNF在移除软件包时会同时移除与该软件包一同安装的依赖项。通过
rpm -qR utils-1.0.0-1.noarch.rpm
命令可知,
utils
包的依赖项包含
mc
,所以当使用
dnf remove utils
命令移除
utils
包时,
mc
包作为其依赖项也会被移除。
35、请解释三个负载平均值数字所代表的不同含义
负载平均值的意义与应用
负载平均值可视为对CPU需求的一种度量,代表
等待CPU时间的平均指令数
。
在
单处理器系统
中:
负载平均值为
1
:表示CPU完全被利用,利用率完美;
小于
1
:表示CPU未充分利用;
大于
1
:表示CPU过度利用,存在未满足的需求。
在
多处理器系统
中(如四CPU系统):
负载平均值为
4
:表示CPU利用率完美;
若为
3.24
:表示三个处理器完全被利用,第四个处理器约
76%未被利用
。
理想状态
理想服务器环境
中,负载平均值的最佳状态是
等于系统中CPU的总数
,即每个CPU都被充分利用且无指令需等待。
趋势分析
长期负载平均值
能够反映系统的
整体利用率趋势
。
36、使用top命令,StudentVM1虚拟主机上有多少内存和交换空间是空闲的?
内存空闲15065.5MiB,交换空间空闲8192.0MiB。
37、以下工具中,哪个能提供网络 I/O 信息?
atop 工具可以提供网络 I/O 信息
38、使用htop时,你会按哪一列进行排序来确定哪些进程累积的总CPU时间最多?
TIME+
39、使用 SAR 查看当天的网络统计信息。
[student@studentvm1 ~]$ sar -n ALL | less
40、查看截至本次阅读时昨天记录的所有系统活动,前提是当时你的虚拟机正在运行。如果没有运行,则从 SAR 数据收集中选择另一天的数据查看。
可通过指定所需的日志文件来查看之前几天收集的数据。假设要查看本月第二天的数据,可使用以下命令显示该天收集的所有数据:
每个文件名的最后两位数字表示收集数据的日期。
示例命令如下:
[student@studentvm1 ~]$ sar -A -f /var/log/sa/sa02 | less
需要列出
/var/log/sa
目录的内容,并为你的主机选择该目录中存在的文件。
41、你的虚拟机中安装了哪种类型的 CPU?制造商:
_
__ 型号:
_
_
_ 速度:
_
_GHz
制造商:Intel 型号:Core(TM) i9 – 7960X 速度:2.80GHz
42、为什么终端模拟器有这么多选择?
如同 Linux 的其他方面一样,对于用户和系统管理员而言,在终端模拟器方面有众多选择。不同的终端模拟器具备不同的功能,能满足不同项目在不同时间的需求,而且人们喜欢尝试新事物,不断探索新的终端模拟器,所以会有很多选择。
43、你是否已经对某一特定的终端模拟器有偏好?如果有,是哪一个?为什么?
有偏好。当前首选的终端模拟器是
Xfce4
,主要是因为它提供了良好的功能集,和其他终端一样出色,而且非常轻量级,占用的系统资源少得多。
44、环境变量$PATH的作用是什么?
它定义了一个以冒号分隔的目录列表,系统和shell在该列表中的目录里查找可执行文件。当输入非内部命令时,shell会在
$PATH
列出的每个目录中查找可执行文件。
45、为什么你可能想使用外部命令,而不是执行相同功能且名称相同的 shell 内部命令?
因为某些命令的内部和外部版本同时存在时,即使名称相同,它们的工作方式可能略有不同。为了使用能提供预期结果的命令,可能需要使用外部命令。
46、描述Linux启动过程。
启动和开机过程
完整的启动和开机过程分为以下三个部分:
硬件启动,初始化系统硬件
当计算机或虚拟机首次通电时,会运行加电自检(POST),这是 BIOS 或较新的统一可扩展固件接口(UEFI)的一部分。BIOS 用于初始化硬件组件,而 POST 是 BIOS 中执行硬件自检的部分。
Linux启动,GRUB2引导加载程序从存储驱动器加载Linux内核和systemd
Linux开机,systemd使主机准备好进行生产性工作
47、GRUB 有什么作用?
GRUB 的主要功能
GRUB 的主要功能是将 Linux 内核加载到内存并使其运行。它能让计算机找到操作系统内核并将其加载到内存,且兼容多引导规范,可引导多个版本的 Linux 和其他免费操作系统。此外,GRUB 还能链式加载 Windows 等专有操作系统的引导记录,让用户从多个不同内核中选择进行引导。
48、GRUB的第1阶段在硬盘上的什么位置?
GRUB阶段1位于硬盘的主引导记录(MBR)的第一个512字节扇区,经典通用MBR中实际引导代码分配的总空间为446字节。在UEFI系统中,分区表已从MBR移到MBR之后的空间。
49、systemd在启动过程中的功能是什么?
systemd是所有进程之母,负责将Linux主机提升到可进行生产性工作的状态。其功能包括:
- 根据 `/etc/fstab` 文件挂载文件系统,包括交换文件或分区;
- 使用配置链接 `/etc/systemd/system/default.target` 确定主机应启动到的状态或目标;
- 启动目标配置文件中列出的依赖项,这些依赖项是使Linux主机在特定功能级别运行所需的服务;
- 查看传统SystemV init目录,若存在启动文件,则将其用作配置文件来启动相关服务;
- `sysinit.target` 和 `basic.target` 可视为启动过程中的检查点,`sysinit.target` 完成挂载文件系统、设置交换文件等任务后,系统可移动到 `basic.target`,`basic.target` 通过启动后续目标所需的单元提供额外功能。
50、systemd启动目标文件和链接位于哪里?
目标文件位于
/lib/systemd/system/
目录,链接位于
/etc/systemd/system/
目录。
51、描述显示管理器的功能。
显示管理器
显示管理器是一个程序,其功能是为 Linux 提供图形用户界面(GUI)登录屏幕。
登录到 GUI 桌面后,显示管理器将控制权交给窗口管理器。当用户从桌面注销时,显示管理器重新获得控制权,显示登录屏幕并等待下一次登录。
52、列出并描述用户登录虚拟控制台到注销期间涉及的 Linux 组件以及事件发生的顺序。
Linux 登录过程涉及的组件及事件顺序
涉及的 Linux 组件有:
systemd
、
systemd-getty-generator
、
agetty
、
shell
。
事件发生顺序如下:
systemd
启动
systemd-getty-generator
守护进程。
systemd-getty-generator
使用
serial-getty@.service
在每个虚拟控制台上生成一个
agetty
。
agetty
等待虚拟控制台连接,即用户切换到某个虚拟控制台。
agetty
在显示器上显示文本模式登录屏幕。
用户登录。
启动
/etc/passwd
中指定的
shell
。
运行
shell
配置脚本。
用户在
shell
会话中工作。
用户注销。
53、启动非登录式bash shell时,哪个配置文件最先运行?
~/.bashrc
54、非特权用户能否设置或更改自己的 shell 变量?
可以。用户可以在 shell 中创建环境变量,这些变量成为该 shell 环境的一部分,并且可以对用户 shell 变量进行更改或创建新的变量,只是若要让创建和导出新变量后派生的子进程看到更改,必须显式“导出”。
55、添加一个别名,以不同的配色方案启动 vim,并且该别名仅供学生用户使用。配色方案和说明性的 README.txt 文件位于 /usr/share/vim/vim81/colors 目录中。尝试几种不同的配色方案,并通过打开一个 bash 配置文件来测试它们。
可以在学生用户的
~/.bashrc
文件中添加别名。例如,若要使用
/usr/share/vim/vim81/colors
目录下的某个配色方案(假设为
solarized.vim
),可以在
~/.bashrc
中添加如下内容:
alias vim='vim -c "colorscheme solarized"'
添加后保存文件,然后执行:
source ~/.bashrc
使配置生效。之后可以通过打开一个 bash 配置文件(如
~/.bashrc
)来测试该配色方案。可以尝试不同的配色方案,只需修改
colorscheme
后面的配色方案名称,重复上述步骤进行测试。
56、如果属于ops组的student用户将/tmp或其他共享目录中的file09文件权限设置为066,并将组所有权设置为ops,谁对该文件有何种类型的访问权限,谁没有?请详细解释其逻辑。
文件权限
066
表示:
User
和
Group
具有读写权限
Other
没有任何权限
由于文件的
Group 所有权
设置为
ops
,所以:
属于
ops
组的用户(包括
student
用户)具有读写权限
不属于
ops
组的其他用户没有任何访问权限
57、如果开发组使用共享目录 /home/dev 来共享文件,需要对 dev 目录设置什么特定权限,以确保在该目录中创建的文件无需额外操作即可被整个组访问?
需要将 dev 目录的权限设置为 2770(rwxrws—)。
58、在实验1中,对于文件file09,学生用户如何重新获得对该文件的访问权限?
可通过添加u+rw来更改权限以重新获得访问权限。
59、为什么要将共享目录的权限设置为770?
设置共享目录权限为770(rwxrwx—),是为了防止非dev组成员的用户访问该目录。
60、如果root在/home/dev目录下创建一个新文件,该文件属于哪个组?
dev组
因为
/home/dev
目录的组所有权已被设置为
dev
组,在该目录下创建的文件默认会继承目录的组所有权。
61、假设目录 ~/test 的所有者是 student.student,文件权限设置为 –xrwxrwx (177),那么学生用户可以执行以下哪些任务:列出目录内容、在目录中创建和删除文件、将该目录设为当前工作目录?
学生用户可以列出目录内容、在目录中创建和删除文件以及将该目录设为当前工作目录。
因为权限
--xrwxrwx (177)
中:
x 权限
允许用户进入目录,进而可将其设为当前工作目录;
r 权限
允许用户读取目录内容,可列出目录内容;
w 权限
允许用户对目录进行写操作,即能在目录中创建和删除文件。
62、在诸如 /tmp 这样的公共可访问目录中创建一个文件,并设置权限,使得除了 dev 组的用户之外,所有用户都可以对该文件进行读写操作。dev 组的用户应完全没有访问权限。
可以使用以下命令实现:
首先以合适的用户身份在
/tmp
目录创建文件,如:
bash
echo 'test content' > /tmp/testfile
然后设置权限为除
dev
组外所有用户可读写:
bash
chmod 660 /tmp/testfile
此命令先设置文件为所有者和组用户可读写,其他用户无权限。
再使用以下命令将文件所属组设置为
dev
组:
bash
chgrp dev /tmp/testfile
这样就满足了除
dev
组用户外其他用户可读写,
dev
组用户无访问权限的要求。