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;
}
141、用户在 shell 中输入以下内容:$ PATH=~/scripts $ ls ,命令 ‘ls’ 报错:ls: 未找到命令,原因是 ‘/bin’ 未包含在 PATH 环境变量中。那么什么命令可以将 PATH 的当前值与新目录 ~/scripts 合并?
PATH=$PATH:~/scripts
142、考虑以下脚本。注意它使用 elif 来检查第二个条件: #!/bin/bash fruit1 = Apples fruit2 = Oranges if [ $1 -lt $# ] then echo “This is like comparing $fruit1 and $fruit2!” elif [ $1 -gt $2 ] then echo ‘$fruit1 win!’ else echo “Fruit2 win!” done 。脚本中存在错误,请修复这些错误。
#!/bin/bash
fruit1=Apples
fruit2=Oranges
if [ $1 -lt $# ]; then
echo "This is like comparing $fruit1 and $fruit2!"
elif [ $1 -gt $2 ]; then
echo "$fruit1 win!"
else
echo "$fruit2 win!"
fi
143、编写一个简单的脚本,检查是否恰好传入了两个参数。如果是,则以相反的顺序打印这些参数。
#!/bin/bash
if [ $# -ne 2 ]; then
echo "Error"
else
echo "$2 $1"
fi
144、在编程中,代码里使用 == 与使用 -eq 有何不同?
使用
==
会进行字符串比较,即如果两个变量的字符完全匹配,则条件为真;而
-eq
用于数字比较,判断两个数值是否相等。
字符串比较在测试数字时可能会导致意外结果,例如:
1+1 == 2 为 false
因为它是按字符串比较的。
145、编写一个简短的脚本,该脚本接受一个参数。如果传入了参数,检查该参数是否与当前目录的名称匹配。如果匹配,打印yes;否则,打印no。
#!/bin/bash
if [ "$1" == "$(basename $PWD)" ]; then
echo "yes"
else
echo "no"
fi
146、编写一个简单的脚本,检查是否恰好传入了两个参数。如果是,则按逆序打印这些参数。
#!/bin/bash
if [ $# -ne 2 ]; then
echo "Error"
else
echo "$2 $1"
fi
147、用户在 shell 中输入以下内容:$ PATH=~/scripts $ ls ,随后系统提示 ‘ls: 未找到命令’ ,该命令 ‘ls’ 通常存于 ‘/bin/ls’ 。请问用户做了什么导致出现此提示?
用户用目录
~/scripts
覆盖了
PATH
的内容。由于
ls
命令不在
PATH
中,所以无法找到该命令。
注意
:此更改仅影响当前会话,注销并重新登录将恢复更改。
148、用户在 shell 中输入以下内容:$ PATH=~/scripts $ ls ,命令 ‘ls’ 位于 ‘/bin/ls’,由于 ‘/bin’ 未包含在 PATH 环境变量中,无法找到该命令,出现 ‘ls: 未找到命令’ 的提示。什么命令可以将 PATH 的当前值与新目录 ~/scripts 合并?
PATH=$PATH:~/scripts
149、考虑以下脚本。该脚本使用 elif 来检查第二个条件:#!/bin/bash
fruit1 = Apples
fruit2 = Oranges
if [ $1 -lt $# ]
then
echo “This is like comparing $fruit1 and $fruit2!”
elif [$1 -gt $2 ]
then
echo ‘$fruit1 win!’
else
echo “Fruit2 win!”
done
标记为包含错误的行需要修复,请修正该脚本。
以下是修正后的脚本:
#!/bin/bash
fruit1=Apples
fruit2=Oranges
if [ $1 -lt $# ]; then
echo "This is like comparing $fruit1 and $fruit2!"
elif [ $1 -gt $2 ]; then
echo "$fruit1 win!"
else
echo "$fruit2 win!"
fi
主要修改点:
变量赋值时去掉等号两边的空格;
elif
后条件判断的方括号左右要有空格;
结束使用
fi
而非
done
;
单引号会使变量无法替换,将单引号改为双引号。
150、阅读以下 script1.sh 的内容:#!/bin/bash
if [ $# -lt 1 ]
then
echo “This script requires at least 1 argument.”
exit 1
fi
echo $1 | grep “^[A-Z]
$” > /dev/null
if [ $? -ne 0 ]
then
echo “no cake for you!”
exit 2
fiecho “here’s your cake!”
exit 0
以下命令的输出是什么?
◦./script1.sh
◦echo $?
◦./script1.sh cake
◦echo $?
◦./script1.sh CAKE
◦echo $?
–
命令
:
./script1.sh
输出
*:
This script requires at least 1 argument.
命令
:
echo $?
输出
:
1
命令
:
./script1.sh cake
输出
:
no cake for you!
命令
:
echo $?
输出
:
2
命令
:
./script1.sh CAKE
输出
:
here's your cake!
命令
:
echo $?
输出
:
0
151、读取文件 script2.sh 的内容:for filename in $1/*.txt; do cp $filename $filename.bak; done 请描述你所理解的此脚本的用途。
该脚本会为第一个参数所指定的子目录中所有以 .txt 结尾的文件创建备份副本。
152、创建一个脚本,该脚本可以接受用户输入的任意数量的参数,并仅打印出那些大于 10 的数字参数。
#!/bin/bash
for i in $@
do
echo $i | grep "^[0-9]*$" > /dev/null
if [ $? -eq 0 ]
then
if [ $i -gt 10 ]
then
echo -n "$i "
fi
fi
done
echo ""
153、阅读以下 script1.sh 的内容:#!/bin/bash
if [ $# -lt 1 ]
then
echo “This script requires at least 1 argument.”
exit 1
fi
echo $1 | grep “^[A-Z]*$” > /dev/null
if [ $? -ne 0 ]
then
echo “no cake for you!”
exit 2
fi
echo “here’s your cake!”
exit 0
分别执行以下命令,输出结果是什么?
1. ./script1.sh
2. echo $?
3. ./script1.sh cake
4. echo $?
5. ./script1.sh CAKE
6. echo $?
1. 命令:
./script1.sh
,输出:
This script requires at least 1 argument.
2. 命令:
echo $?
,输出:
1
3. 命令:
./script1.sh cake
,输出:
no cake for you!
4. 命令:
echo $?
,输出:
2
5. 命令:
./script1.sh CAKE
,输出:
here's your cake!
6. 命令:
echo $?
,输出:
0
154、创建一个脚本,该脚本可以接受用户输入的任意数量的参数,并仅打印那些大于 10 的数字参数。
#!/bin/bash
for i in $@
do
echo $i | grep "^[0-9]*$" > /dev/null
if [ $? -eq 0 ]
then
if [ $i -gt 10 ]
then
echo -n "$i "
fi
fi
done
echo ""
155、哪个项目构成了所有 Linux 发行版的共同组件?选项有:CentOS、Red Hat、Ubuntu、Linux 内核、CoreOS
Linux 内核
156、苹果公司的 macOS 系统底层使用的是哪个操作系统?选项有 OS X、OSX、Darwin、MacOS
Darwin
157、Linux发行版与Linux内核有何不同?
内核是发行版的一部分,发行版有应用程序围绕内核,使其更实用
158、操作系统的哪个组件允许访问硬件?驱动程序、shell、服务、应用程序
驱动程序
159、如果你可以访问命令行,请检索你的 Linux 系统当前的内核版本。
使用命令 uname -r ,示例输出为 4.15.0 – 47 – generic
160、使用搜索引擎,找出可供使用的公共云服务提供商(例如亚马逊云服务(AWS)、谷歌云、Rackspace 等)。选择其中一个,查看有哪些操作系统可供部署。
以 AWS 为例,可部署许多 Linux 发行版,如 Debian、Red Hat、SUSE 或 Ubuntu,以及 Windows。
161、苹果公司的 OS X 底层使用的是哪种操作系统?选项有 OS X、OSX、Darwin、MacOS
Darwin
162、Linux发行版与Linux内核有何不同?
内核是发行版的一部分,发行版包含围绕内核的应用程序,使内核变得可用。
163、描述以下术语:处理器(Processor)、中央处理器(CPU)、图形处理器(GPU)
处理器相关术语解释
处理器(Processor)
:一个通用术语,适用于任何类型的处理器,常被错误地用作CPU的同义词。
中央处理器(CPU)
:即Central Processing Unit,是为通用计算任务提供支持的处理单元。
图形处理器(GPU)
:即Graphical Processing Unit,是为支持与图形呈现相关的活动而优化的处理单元。
164、如果你主要运行视频编辑应用程序(一项计算密集型活动),你认为哪些组件和特性对系统可用性影响最大:CPU核心数、CPU速度、可用系统内存、存储系统、GPU、视频显示器、以上都不是
CPU核心数、CPU速度、可用系统内存、存储系统
165、系统中第三个SATA驱动器的第三个分区在/dev中的设备文件名应该是什么:sd3p3、sdcp3、sdc3、以上都不是
sdc3
166、运行 lsblk -f 命令后得到如下输出:名称 文件系统类型 标签 UUID 挂载点 mmcblk0 +-mmcblk0p1 vfat boot 9304 – D9FD /boot +-mmcblk0p2 ext4 rootfs 29075e46 – f0d4 – 44e2 – a9e7 – 55ac02d6e6cc / 。请识别以下参数:◦设备类型及数量 ◦每个设备的分区结构 ◦每个分区的文件系统类型和挂载点
设备信息概述
设备类型及数量
有一个设备:
mmcblk0
,按照惯例,
mmcblk
代表 SD 存储卡。
分区结构
该设备有两个分区:
mmcblk0p1
mmcblk0p2
分区详细信息
分区 1 (
mmcblk0p1
)
mmcblk0p1
文件系统类型
:
vfat
用途
:用于启动系统
挂载点
:
/boot
分区 2 (
mmcblk0p2
)
mmcblk0p2
文件系统类型
:
ext4
用途
:作为主文件系统
挂载点
:
/
167、在系统上运行lsblk命令,识别设备类型及数量。
有一个设备:mmcblk0。按照惯例,mmcblk是SD存储卡。
168、运行 lsblk 命令,识别每个设备的分区结构。若系统无法立即使用,可参考树莓派系统的 lsblk -f 列表来确定。
有两个分区:mmcblk0p1 和 mmcblk0p2。
169、在系统上运行 lsblk 命令,识别每个分区的文件系统类型和挂载点。如果系统无法立即使用,可参考树莓派系统的 lsblk -f 列表。
分区 1 使用
vfat
文件系统,用于启动系统,挂载点为
/boot
;
分区 2 使用
ext4
文件系统,作为主文件系统,挂载点为
/
。
170、如果你主要运行视频编辑应用程序(一项计算密集型活动),你认为哪些组件和特性对系统可用性影响最大:CPU核心数、CPU速度、可用系统内存、存储系统、GPU、视频显示器、以上都不是
CPU核心数、CPU速度、可用系统内存、存储系统
171、在系统上运行 lsblk 命令,识别以下参数:设备类型及数量、每个设备的分区结构、每个分区的文件系统类型和挂载点
## 设备信息
- **设备类型及数量**:有一个设备 `mmcblk0`,按惯例它是一个 SD 存储卡。
- **分区结构**:
- 有两个分区,分别为:
- `mmcblk0p1`
- `mmcblk0p2`
## 分区详情
- **分区 1** (`mmcblk0p1`):
- 文件系统类型:`vfat`
- 挂载点:`/boot`
- 用途:用于启动系统
- **分区 2** (`mmcblk0p2`):
- 文件系统类型:`ext4`
- 挂载点:`/`
- 用途:作为主文件系统
172、在系统上运行lsblk命令,识别以下参数:设备的类型和数量;每个设备的分区结构;每个分区的文件系统类型和挂载点。
## 设备信息
- **设备的类型和数量**:有一个设备 `mmcblk0`,`mmcblk` 是 SD 存储卡。
- **每个设备的分区结构**:
- 有两个分区:`mmcblk0p1` 和 `mmcblk0p2`。
- **每个分区的文件系统类型和挂载点**:
- 分区 1 使用 `vfat` 文件系统,用于启动系统,挂载点为 `/boot`。
- 分区 2 使用 `ext4` 文件系统,作为主文件系统,挂载点为 `/`。
173、使用 which 命令找出以下程序的位置并完成表格:程序、which 命令、可执行文件路径(输出)、用户是否需要 root 权限,涉及程序有 swapon、kill、cut、usermod、cron、ps。
程序 | which 命令 | 可执行文件路径(输出) | 用户是否需要 root 权限 |
---|---|---|---|
swapon | which swapon | /sbin/swapon | 是 |
kill | which kill | /bin/kill | 否 |
cut | which cut | /usr/bin/cut | 否 |
usermod | which usermod | /usr/sbin/usermod | 是 |
cron | which cron | /usr/sbin/cron | 是 |
ps | which ps | /bin/ps | 否 |
174、以下文件在哪里可以找到?文件:/etc、~、.bashrc、bash.bashrc、passwd、.profile、resolv.conf、sysctl.conf
/etc
:是系统配置文件目录
~
:代表用户主目录
.bashrc
:通常在用户主目录
bash.bashrc
:在系统范围,一般在
/etc
目录
passwd
:在
/etc
目录
.profile
:通常在用户主目录
resolv.conf
:在
/etc
目录
sysctl.conf
:在
/etc
目录
175、解释在 /boot 中找到的内核文件 vmlinuz – 4.15.0 – 50 – generic 的数字元素 4、15、0、50 的含义。
4:内核版本;15:主修订号;0:次修订号;50:补丁号
176、硬盘的设备文件是根据它们使用的控制器来表示的 —— 我们看到使用 SCSI(小型计算机系统接口)和 SATA(串行高级技术附件)的驱动器用 /dev/sd* 表示,那么旧的 IDE(集成驱动器电子设备)驱动器和现代的 NVMe(非易失性内存快速传输)驱动器分别是如何表示的?
旧的 IDE 驱动器用
/dev/hd*
表示,现代的 NVMe 驱动器用
/dev/nvme*
表示。
177、查看文件 /proc/meminfo。将此文件的内容与 free 命令的输出进行比较,并确定 /proc/meminfo 中的哪些键对应 free 输出中的以下字段:free 输出 /proc/meminfo 字段 总计 空闲 共享 缓冲/缓存 可用
总计:
MemTotal / SwapTotal
空闲:
MemFree / SwapFree
共享:
Shmem
缓冲/缓存:
Buffers
、
Cached
和
SReclaimable
可用:
MemAvailable
178、旧的 IDE(集成驱动电子设备)驱动器是如何表示的?
/dev/hd*
179、现代NVMe(非易失性内存快速传输)驱动器是如何表示的?
/dev/nvme*
180、查看文件 /proc/meminfo。将此文件的内容与 free 命令的输出进行比较,并确定 /proc/meminfo 中的哪些键对应 free 输出中的以下字段:total、free、shared、buff/cache、available
total
对应
MemTotal
/
SwapTotal
free
对应
MemFree
/
SwapFree
shared
对应
Shmem
buff/cache
对应
Buffers
、
Cached
和
SReclaimable
available
对应
MemAvailable
181、使用 which 命令找出以下程序的位置并完成表格:程序、which 命令、二进制文件路径(输出)、用户是否需要 root 权限?程序包括 swapon、kill、cut、usermod、cron、ps
程序 |
命令 |
二进制文件路径(输出) | 用户是否需要 root 权限? |
---|---|---|---|
swapon |
|
|
是 |
kill |
|
|
否 |
cut |
|
|
否 |
usermod |
|
|
是 |
cron |
|
|
是 |
ps |
|
|
否 |
182、以下文件在哪里可以找到?这些文件是 .bashrc、bash.bashrc、passwd、.profile、resolv.conf、sysctl.conf
- `.bashrc`:用户主目录
- `bash.bashrc`:`/etc`
- `passwd`:`/etc`
- `.profile`:用户主目录
- `resolv.conf`:`/etc`
- `sysctl.conf`:`/etc`
183、解释在 /boot 中找到的内核文件 vmlinuz – 4.15.0 – 50 – generic 的数字元素 4、15、0、50 的含义。
4:内核版本;15:主修订号;0:次修订号;50:补丁号
184、现代的NVMe(非易失性内存快速通道)驱动器在Linux系统中的设备名是什么?
/dev/nvme*
185、查看文件 /proc/meminfo。将此文件的内容与 free 命令的输出进行比较,并确定 /proc/meminfo 中的哪些键对应 free 输出中的以下字段:total、free、shared、buff/cache、available
total
对应
MemTotal
/
SwapTotal
free
对应
MemFree
/
SwapFree
shared
对应
Shmem
buff/cache
对应
Buffers
、
Cached
和
SReclaimable
available
对应
MemAvailable
186、现代的NVMe(非易失性内存快速传输)驱动器在Linux系统中的设备名一般是什么?
/dev/nvme*
187、查看文件 /proc/meminfo。将此文件的内容与 free 命令的输出进行比较,并确定 /proc/meminfo 中的哪些键对应 free 输出中的以下字段:total、free、shared、buff/cache、available
- **total**:MemTotal / SwapTotal
- **free**:MemFree / SwapFree
- **shared**:Shmem
- **buff/cache**:Buffers、Cached 和 SReclaimable
- **available**:MemAvailable
188、哪些进程是由用户carol启动的?
只有一个:top。
189、哪个进程最先运行?你如何判断?
systemd。因为它的进程ID(PID)是1。
190、完成表格,指明以下信息在top命令输出中对应的区域(摘要区域或任务区域):内存、交换空间、进程ID(PID)、CPU时间、命令
信息 | 摘要区域 | 任务区域 |
---|---|---|
内存 | 是 | 是 |
交换空间 | 是 | 否 |
PID | 否 | 是 |
CPU时间 | 否 | 是 |
命令 | 否 | 是 |
191、读取以下二进制日志应使用什么命令?/var/log/wtmp /var/log/btmp /run/log/journal/2a7d9730cd3142f4b15e20d6be631836/system.journal
/var/log/wtmp
使用
last
命令
/var/log/btmp
使用
lastb
命令
/run/log/journal/2a7d9730cd3142f4b15e20d6be631836/system.journal
使用
journalctl
命令
192、结合grep命令,你会使用哪些命令来获取关于你的Linux系统的以下信息?系统最后一次重启的时间(wtmp)、安装了哪些硬盘(kern.log)、最后一次登录的时间(auth.log)
以下是调整为 Markdown 格式的内容:
# 系统最后一次重启的时间(wtmp):
grep 'reboot' /var/log/wtmp | tail -1
# 安装了哪些硬盘(kern.log):
grep 'SCSI device' /var/log/kern.log
# 最后一次登录的时间(auth.log):
grep 'Accepted' /var/log/auth.log | tail -1
193、要显示内核环形缓冲区,你会使用哪两个命令?
dmesg
;
dmesg
与
grep
或
less
结合使用(如
dmesg | grep boot
、
dmesg | less
)
194、指出以下日志消息所属位置:Jul 10 13:37:39 debian dbus[303]: [system] Successfully activated service ‘org.freedesktop.nm_dispatcher’ ,可能位置有 /var/log/auth.log /var/log/kern.log /var/log/syslog /var/log/messages
日志消息通常属于
/var/log/syslog
。因为该日志记录系统的各种系统消息,而激活服务的消息符合其记录范畴;
/var/log/auth.log
主要记录认证相关信息;
/var/log/kern.log
主要记录内核相关信息;
/var/log/messages
在现代系统中使用较少,功能类似
syslog
但现在很多系统已不依赖它。所以答案是
/var/log/syslog
。