Linux学习之旅4

实践部分:

文章目录

介绍

恭喜!你刚刚被 Google 公司聘为初级系统管理员,这是一家快速发展的科技初创公司。这是你第一天上班,你的主管指派你负责公司迄今为止最雄心勃勃的项目:"凤凰计划"------一款革命性的应用程序,它将彻底改变企业管理数字化工作流程的方式。

你的首要任务是了解凤凰计划的开发服务器的"地形"。这需要进行必要的侦察,以了解系统的身份、用户以及当前的运行状态。

在本次挑战中,你将使用基本的 Linux 命令来收集有关新环境的关键信息。你将识别你的用户帐户,检查系统详细信息,查看其他登录用户,检查用户和群组信息,监控实时性能,并将你的发现汇编成一份综合报告。

此次初步评估将作为凤凰计划未来所有工作的基础。您今天的细致工作将确保项目明天的成功。

Day1:地形

首次登录和环境检查

在新系统上,你的第一步是验证你的身份和操作系统的基本特性。这可以确认你的身份和你正在使用的是正确的设备。

任务

找出当前用户的用户名。

显示操作系统的内核名称。

要求

所有命令都必须在终端中执行。

使用whoami命令来识别当前用户。

使用该uname命令显示内核名称。

示例

完成此步骤后,您应该看到类似以下内容的输出:

bash 复制代码
# Command output showing current user
labex

# Command output showing kernel name
Linux

这些结果确认了您作为labexLinux 系统用户的身份,这对于建立您的工作环境至关重要。

检查系统信息和正常运行时间

确认自身身份后,了解完整的系统环境以及运行时间非常重要。这些信息对于系统监控和维护规划至关重要。

任务

显示全面的系统信息,包括操作系统详细信息、内核版本和硬件架构。

检查系统运行的时间以及当前系统负载。

要求

使用该uname -a命令显示所有系统信息。

使用该uptime命令显示系统正常运行时间和平均负载。

示例

运行所需的命令后,您应该看到类似以下内容的输出:

bash 复制代码
# Comprehensive system information
Linux labex-virtual-machine 5.15.0-76-generic #83-Ubuntu SMP Thu Jun 15 19:16:32 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux

# System uptime and load information
14:51:52 up 183 days, 2:55, 0 users, load average: 6.02, 1.80, 0.94

第一个输出显示了详细的系统信息,包括内核版本、主机名和体系结构。第二个输出表明系统已运行 183 天,当前平均负载显示了不同时间段的系统性能。

提示

该uname -a命令在一行中显示所有可用的系统信息。

该uptime命令显示系统运行了多长时间、用户数量以及系统平均负载。

系统负载平均值表示 1、5 和 15 分钟内的平均系统负载。

收集用户和组详细信息

了解用户的权限至关重要。您需要知道您的用户 ID (UID)、主组 ID (GID) 以及您所属的任何其他组,因为这些决定了您在系统上的访问权限。

任务

显示当前用户帐户的详细用户和组信息。

要求

使用id命令检索您的用户和组标识符。

示例

当您运行所需的命令时,您应该看到类似以下内容的输出:

bash 复制代码
uid=5000(labex) gid=5000(labex) groups=5000(labex),27(sudo),121(ssl-cert),5002(public)

此输出显示:

uid=5000(labex):您的用户 ID 为 5000,用户名为"labex"

gid=5000(labex):您的主组 ID 为 5000,组名为"labex"

groups=...:您属于多个组,包括"sudo"(管理权限)、"ssl-cert"(SSL 证书访问)和"public"(共享资源)

了解这些权限对于了解您可以访问和修改哪些系统资源至关重要。

提示

当不带任何参数运行时,该id命令默认显示当前用户的信息。

输出将清楚地标记 UID、GID 和补充组

监控实时系统性能

系统侦察的一个关键部分是观察其当前性能。这包括检查 CPU 和内存使用情况,以及查看哪些进程正在运行。该top命令是执行此任务的标准工具。

任务

启动交互式系统监控工具来查看活动进程和资源使用情况。

观察输出片刻后退出该工具。

要求

使用top命令启动监控界面。

top运行完成后,按q键退出并返回命令提示符。

示例

当您启动系统监控工具时,您将看到类似于以下内容的动态显示:

bash 复制代码
top - 10:45:00 up 1:15,  1 user,  load average: 0.00, 0.01, 0.05
Tasks: 123 total,   1 running, 122 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.1 us,  0.1 sy,  0.0 ni, 99.8 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
MiB Mem :   1987.2 total,    890.5 free,    540.1 used,    556.6 buff/cache
MiB Swap:   2048.0 total,   2048.0 free,      0.0 used.   1234.5 avail Mem

    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
      1 root      20   0  169404  12920   8584 S   0.0   0.6   0:01.50 systemd
      2 root      20   0       0      0      0 S   0.0   0.0   0:00.00 kthreadd
    ...

该显示屏显示:

系统摘要:当前时间、正常运行时间、用户和平均负载

任务摘要:总进程及其状态(运行、休眠等)

CPU 使用率:按类别细分 CPU 利用率

内存使用情况:总内存、空闲内存、已用内存和可用内存

进程列表:按 CPU 使用率排序的正在运行的进程,包括 PID、用户和资源消耗

显示每隔几秒自动更新一次,提供实时系统监控。

提示

top提供正在运行系统的动态实时视图。它会自动刷新。

关键q是退出程序的标准方法top。

生成系统状态报告

最后,您将把发现整合到一个简单的文本文件中。这是记录系统在特定时间点状态的常见做法。您将使用输出重定向将多个命令的输出保存到单个文件中。

任务

system_report.txt在当前目录中创建一个名为的文件( ~/project)。

whoami该文件必须包含、uname -a(所有系统信息)和命令的输出uptime。

要求

最终报告文件必须命名为system_report.txt。

您必须使用输出重定向运算符(>和>>)将命令输出写入文件。

必须在目录中创建该文件~/project。

示例

完成此步骤后,您的system_report.txt文件应包含类似以下内容的输出:

bash 复制代码
labex
Linux labex-virtual-machine 5.15.0-76-generic #83-Ubuntu SMP Thu Jun 15 19:16:32 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux
 10:50:01 up  1:20,  1 user,  load average: 0.00, 0.01, 0.05

该报告文件表明:

第 1 行:当前用户身份(来自whoami命令)

第 2 行:完整的系统信息,包括内核版本、主机名和架构(来自uname -a命令)

第 3 行:系统正常运行时间和当前平均负载(来自uptime命令)

该文件是系统当前状态的快照,对于文档记录和故障排除非常有用。您可以cat在创建后使用命令验证文件内容。

提示

使用>运算符重定向第一个命令的输出。这将创建文件(如果文件已存在,则覆盖它)。

使用>>运算符将​​后续命令的输出附加到文件而不删除其现有内容。

该uptime命令显示系统已运行多长时间。

概括

干得漂亮!您顺利完成了在 Google 公司的第一天工作,并为凤凰计划奠定了基础。

在本次挑战中,您练习了使用每个系统管理员必须掌握的几个基本命令:

whoami:在 Project Phoenix 服务器上确认您的用户身份。

uname:检查操作系统信息并确保兼容性。

who:查看还有谁在开发服务器上工作。

id:检查您的用户和组成员资格以获得正确的访问控制。

top:监控系统进程和资源使用情况,以确保最佳性能。

输出重定向(>和>>):在专业报告中记录您的发现。

这些命令构成了您的系统管理员工具包的基础。您今天的全面评估已为 Project Phoenix 环境做好了准备,为接下来激动人心的开发工作做好了准备。明天,您将以数字架构师的身份开始组织项目的文件结构!

介绍

欢迎来到 Google 公司的第二天!昨天系统侦察工作取得成功后,您已晋升为凤凰计划的数字架构师。您详尽的文档记录和对细节的关注给开发团队留下了深刻的印象。

然而,有一个紧急问题需要您立即关注。前任系统管理员突然离职,凤凰计划的文件一片混乱。源代码、文档和配置文件都散落在同一个目录中。关键设置如果没有备份,很容易受到攻击,而且过期的日志文件也让您昨天检查过的开发服务器变得杂乱无章。

你的任务是构建一个简洁、逻辑清晰、高效的文件结构,以支持不断壮大的开发团队。通过创建合理的目录、组织文件、保护备份以及清理旧数据,你将为凤凰计划的成功奠定基础。

首席开发人员 Sundar Pichai 指望你把这片混乱的开发环境打造成一个井然有序、专业的开发环境。你今天的工作将直接影响团队的生产力和项目的进度。让我们开始吧!

Day2: 数字架构师

设置项目目录结构

您的首要任务是在目录中创建合适的目录结构phoenix_project。良好的目录结构可以区分不同类型的文件,使项目更易于导航和维护。

任务

导航到~/project/phoenix_project目录。

创建三个新的子目录:src用于源代码、config用于配置文件和docs用于文档。

要求

所有新目录都必须在目录内创建~/project/phoenix_project。

目录名称必须正好是src、、config和docs。

您应该使用单个命令同时创建所有三个目录。

示例

完成此步骤后,您的目录结构应如下所示:

bash 复制代码
~/project/phoenix_project/
├── config/
├── docs/
├── src/
├── README.md
├── config.json
└── main_app.py

ls -F当您在目录中运行时~/project/phoenix_project,您应该看到:

bash 复制代码
README.md  config/  config.json  docs/  main_app.py  src/

/目录名称后面的符号表示它们是目录,而不是文件。

-F命令中的选项用于ls在每个文件名后附加一个字符,以指示文件的类型。以下是一些常见的指示符:

/目录名称末尾的A

*可执行文件末尾的A

@符号链接末尾的A

|命名管道末尾的A

例如,运行ls -F可能会产生如下输出:

bash 复制代码
file1.txt  file2.txt*  directory1/  symlink@

这有助于您快速识别目录中的文件类型。

提示

使用cd命令更改当前目录。

该mkdir命令用于创建新目录。

mkdir可以接受多个参数来一次创建多个目录。

导航和创建项目文件

新的目录结构完成后,就可以将现有项目文件移到它们指定的目录了。这将清理项目的根目录,使文件更容易找到。

任务

将文件移动main_app.py到src目录中。

将文件移动config.json到config目录中。

将文件移动README.md到docs目录中。

要求

~/project/phoenix_project在执行移动操作之前,请确保您位于目录中。

使用mv命令重新定位每个文件。

示例

移动文件后,您的项目结构应如下组织:

bash 复制代码
~/project/phoenix_project/
├── config/
│ └── config.json
├── docs/
│ └── README.md
└── src/
└── main_app.py

当您ls -F在根~/project/phoenix_project目录中运行时,它应该只显示目录:

bash 复制代码
config/  docs/  src/
bash 复制代码
在这里插入代码片

每个文件现在应该位于其相应的子目录中:

ls src/→main_app.py

ls config/→config.json

ls docs/→README.md

提示

该mv命令用于移动或重命名文件和目录。

基本语法是mv [SOURCE] [DESTINATION]。

例如,要移动file.txt到名为 的目录documents,您可以使用mv file.txt documents/。

注意: .代表当前目录, ... 代表父级目录.

备份关键配置文件

该config.json文件包含 Project Phoenix 的关键设置。在进行任何修改之前,创建备份是至关重要的安全措施。您的下一个任务是创建此文件的副本。

任务

创建该文件的备份副本config.json。

要求

必须在目录内创建备份文件~/project/phoenix_project/config/。

备份文件必须准确命名config.json.bak。

示例

创建备份后,您的config目录应包含两个文件:

bash 复制代码
~/project/phoenix_project/config/
├── config.json
└── config.json.bak

ls当您在目录中运行时~/project/phoenix_project/config/,您应该看到:

bash 复制代码
config.json  config.json.bak

两个文件应该具有相同的内容,因为该.bak文件是原始文件的精确副本:

bash 复制代码
# These commands should show identical output
cat config.json
cat config.json.bak

提示

该cp命令用于复制文件和目录。

语法是cp [SOURCE] [DESTINATION]。

您需要提供源文件的完整路径和新备份文件的完整路径。

重组团队共享资源

你发现了谜题的另一部分:一个名为shared_docs 的目录,位于~/project/shared_docs。该目录包含重要的团队指南和 API 规范,它们与项目的其他文档并列。你的任务是将其集成到主项目结构中。

任务

将整个shared_docs目录及其所有内容移动到~/project/phoenix_project/docs/目录中。

要求

源目录是~/project/shared_docs。

目标路径是~/project/phoenix_project/docs/。

必须移动整个目录,而不仅仅是其内容。

示例

移动目录后shared_docs,您的文档结构应如下所示:

bash 复制代码
~/project/phoenix_project/docs/
├── README.md
└── shared_docs/
├── api_spec.doc
└── team_guidelines.txt

ls当您在目录中运行时~/project/phoenix_project/docs/,您应该看到:

bash 复制代码
README.md  shared_docs/

该shared_docs目录应包含其所有原始文件:

bash 复制代码
ls ~/project/phoenix_project/docs/shared_docs/
bash 复制代码
api_spec.doc  team_guidelines.txt

原始位置~/project/shared_docs应该不再存在。

提示

该mv命令对目录的作用与对文件的作用相同。

当您移动目录时,其所有内容都会自动随之移动。

该命令将类似于mv [SOURCE_DIRECTORY] [DESTINATION_DIRECTORY]。

归档和删除过期的日志文件

您的最后一项任务是进行一些日常维护。~/project/logs目录中正在累积日志文件,而 2023 年之后的日志文件已不再用于日常操作。为了节省空间并保持整洁,您需要将这些旧日志压缩为一个归档文件,然后删除原始文件。

任务

导航到~/project/logs目录。

创建一个名为old_logs.tar.gz 的压缩 tar 档案,其中包含自 2023 年以来的所有日志文件。

归档成功创建后,删除刚刚归档的原有2023个日志文件。

要求

最终档案必须准确命名old_logs.tar.gz。

档案必须位于~/project/logs目录中。

2023只有名称中包含的日志文件才应该被存档并随后被删除。

自 2024 年 ( ) 起的日志文件app_2024-05-01.log不得包含在存档中,也不得删除。

示例

归档之前,您的日志目录包含:

bash 复制代码
~/project/logs/
├── app_2023-01-15.log
├── app_2024-05-01.log
└── db_2023-02-20.log

完成归档任务后,您的日志目录应如下所示:

bash 复制代码
~/project/logs/
├── app_2024-05-01.log
└── old_logs.tar.gz

ls当您在目录中运行时~/project/logs/,您应该看到

bash 复制代码
app_2024-05-01.log  old_logs.tar.gz

提示

使用该tar命令创建存档。选项-czf组合非常强大:(c创建)、z(使用 gzip 压缩)和f(指定文件名)。

您可以使用通配符 ( ) 选择与某个模式匹配的多个文件。例如, _2023-*.log将匹配所有以 结尾的.log文件_2023-。

该rm命令用于移除(删除)文件。使用通配符时请小心!

概括

出色的工作,数字架构师!您成功地将凤凰项目从混乱的开发环境转变为井然有序的开发环境。Sundar Pichai 和整个开发团队都对您的工作感到非常满意。您构建了合理的目录结构,组织了关键文件,通过备份保护了配置,并通过归档旧日志清理了系统资源。

这些基本的 Linux 命令行技能mkdir------ 、mv、cp、tar和rm------构成了专业系统管理的支柱。您今天的组织工作奠定了坚实的基础,将为 Phoenix 项目的整个开发生命周期提供支持。

开发团队现在可以在结构合理的环境中高效工作了。明天,当团队遇到第一个技术问题时,你将作为日志调查员接受新的挑战。你的系统化组织方法将帮助你更好地解决问题!

相关推荐
white-persist3 小时前
Linux中,vi(vim)编辑器大部分快捷键
linux·运维·服务器·网络·安全·编辑器·vim
安卓开发者3 小时前
使用Docker轻松搭建WordPress博客:完整指南
运维·docker·容器
---学无止境---3 小时前
Linux中系统调用sys_mount函数的实现
linux
黑马金牌编程3 小时前
tcpdump 常用命令及参数解析
linux·网络·tcpdump·网络抓包
潇I洒3 小时前
Linux写sh开机启动脚本-bash报错的两种解决方法
java·linux·bash
好记忆不如烂笔头abc3 小时前
ob恢复租户报错result: -4184(Server out of disk space)
运维·服务器
孙同学要努力3 小时前
《Linux篇》进程/虚拟地址空间
linux·运维·服务器
zhilin_tang3 小时前
揭开Linux跨平台 adb调试原理神秘面纱
android·linux
lxw18449125144 小时前
docker 核心技术浅析
运维·docker·容器