Shell脚本与Linux系统管理问答

内容分享8小时前发布
0 0 0

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

)


文件系统类型


vfat


用途

:用于启动系统


挂载点


/boot

分区 2 (

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

程序

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

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

© 版权声明

相关文章

2025 年的 AIGC 浪潮,你赶上了吗?AIGC 技术正以摧枯拉朽之势,重塑各行各业的格局,从内容创作到电商营销,从影视娱乐到智能教育,到处都有它的身影。据权威数据预测,2025 年 AIGC 市场规模将突破万亿,可人才缺口却高达 200 万 +,这意味着什么?这意味着机遇,一个让你逆袭的绝佳机遇!而拿下 AIGC 应用工程师证书,就是抓住这个机遇的关键。【权威认证,行业硬通货】我们考的这个 AIGC 应用工程师证书,由工信部教育与考试中心颁发。工信部的权威性不言而喻,这张证书就是你踏入 AIGC 行业的 “金字招牌”。它是企业招聘 AIGC 岗位的重要筛选标准,在腾讯、字节跳动等大厂,以及众多中小科技企业中,都有着极高的认可度。有了它,你在求职时就能脱颖而出,获得优先录用的机会。【薪资诱人,职业发展无忧】薪资方面,AIGC 应用工程师简直不要太香。初级工程师月薪轻松 1.5 万 – 3 万,随着经验积累和技能提升,资深专家年薪 60 万 – 150 万都不在话下,甚至大模型训练工程师年薪超 200 万。而且职业发展路径十分清晰,从初级工程师起步,逐步晋升为 AIGC 产品经理、技术总监,或者转型成为自由职业者,承接高收益项目,未来晋升空间巨大。【报考条件亲民,零基础可学】很多宝子担心自己基础不够,不敢报考。别慌!中级证书报考条件超宽松,大专学历有 1 年工作经验,或者本科应届生,专业不限都能报考;高级证书要求本科学历 + 2 年 AIGC 相关经验,或者硕士学历。就算你是零基础小白,只要对 AIGC 感兴趣,愿意学习,都有机会拿下这张证书,开启高薪职业之路。【学习内容丰富,紧跟行业前沿】学习内容涵盖了当下最热门、最实用的 AIGC 技术。你将系统学习大模型原理,掌握 Stable Diffusion、Midjourney、GPT – 5 等主流工具链的使用技巧,学会进行大模型微调(LoRA、P – Tuning)、提示词工程优化,了解多模态生成技术以及 AI 版权合规审查等重要知识。这些技能都是企业急需的,学完就能直接应用到工作中。【报考流程简单,拿证快人一步】报考流程也很简单。首先,通过工x部教考中心官网核验,选择正规的授权机构提交报名材料,包括身份证、学历证明、2 寸蓝底照等。然后,开通线上课程,开启系统学习之旅,完成培训并取得合格证明。每年 3 月、6 月、9 月、12 月参加机考,考试时间 120 分钟,线上或线下形式都有。考后 15 天就能查成绩,60 分合格,45 天左右就能拿到官网可查的证书,快人一步踏入 AIGC 高薪赛道。不管你是技术转型者,想从传统编程领域转向 AIGC 工程化方向;还是创意从业者,如设计师、文案策划,希望借助 AI 提升创作效率;亦或是企业管理者,想布局 AIGC 战略,为企业赋能;甚至是大学生,想在毕业时增加就业竞争力,这个证书都非常适合你。别再犹豫了,抓住这波 AIGC 的风口,考下 AIGC 应用工程师证书,让自己的职业发展更上一层楼。#AIGC #考证 #高

暂无评论

none
暂无评论...