:star:
"一位优秀的系统管理员不需要知道一切,但他们应该能够针对不可能的项目提出惊人的解决方案。" - cwheeler33 (ServerFault)
:star:
"我的技能是让事情运转起来,而不是知道十亿个事实。[...] 如果我需要修复一个系统,我会识别问题,检查日志并查找错误。如果我需要实施一个解决方案,我会研究正确的方案,实施并记录它,之后除非我经常与它互动,否则只会有一个大致的了解……这就是为什么要有文档。" - Sparcrypt (Reddit)
ℹ️ 该项目包含 284 个测试问题和答案,可用于测试您的知识或在 Linux (*nix) 系统管理员等职位的面试/考试中使用。
✔️ 答案仅为示例,并未涵盖全部主题。大多数答案包含有用的资源以加深理解。
⚠️ 标记为 *** 的问题尚无答案或答案不完整——请提交拉取请求来补充它们!
🚥 如果您发现任何不合理或看起来不正确的内容,请提交拉取请求,并请附上有效且理由充分的解释或评论。
📚 为了提高您的知识/技能,请参阅 devops-interview-questions。看起来非常有趣。
» 欢迎提出所有建议 «
| 章节类型 | 问题数量 | 简要描述 |
|---|---|---|
| 引言 | ||
| 🔸 简单问题 | 14 个问题 | 轻松、有趣且简单——非常适合开始一切。 |
| 通用知识 | ||
| 🔸 初级系统管理员 | 65 个问题 | 基于基础知识,相当简单直接。 |
| 🔸 常规系统管理员 | 94 个问题 | 中级问题,假设您有扎实的知识。 |
| 🔸 高级系统管理员 | 99 个问题 | 难题和谜题。如果您想成为高手,请检查一下。 |
| 秘传知识 | ||
| 🔸 大师级系统管理员 | 12 个问题 | 真正深入的问题,以了解大师级系统管理员。 |
我最喜欢的 Linux 发行版:
有用的资源:
GNU 本身不是一个操作系统。它更像一套规范自由软件的规则或哲学,同时也在尝试创建操作系统的过程中催生了一批工具。因此,GNU 工具基本上是已有工具的开源版本,但为了符合开源软件的原则而重新实现。GNU/Linux 是这些工具与 Linux 内核的融合,形成一个完整的操作系统,但也存在其他 GNU 系统,例如 GNU/Hurd。
Unix 和 BSD 是“较老”的 POSIX 实现,具有不同程度的“闭源”。Unix 通常完全闭源,但 Unix 的变体数量与 Linux 一样多(如果不是更多的话)。BSD 通常不被视为“开源”,但在发布时被认为是非常开放的。其许可证也允许商业使用,且限制远少于当时其他更“开放”的许可证。
Linux 是这四个中最新的。严格来说,它“只是一个内核”;然而,通常认为它与 GNU 工具和其他几个核心组件结合后就是一个完整的操作系统。
这些系统之间的主要区别在于其理念。Unix、Linux 和 BSD 有着不同的理念。它们都符合 POSIX,并且基本上可以互换。它们在解决某些相同问题时采用了不同的方式。因此,除了理念和它们如何实现 POSIX 标准之外,差异很小。
更多信息,我建议你阅读一篇关于 GNU、OSS、Linux、BSD 和 UNIX 创建过程的简短文章。这些文章可能会偏向于各自的理念,但应该能让你更好地理解差异。
有用的资源:
CLI 是 Command Line Interface(命令行界面)或 Command Language Interpreter(命令语言解释器)的缩写。命令行是控制系统/计算机最强大的方式之一。
在类 Unix 系统中,CLI 是用户输入命令供系统执行的接口。CLI 非常强大,但对错误的容忍度不高。
CLI 允许你以更精细的方式对系统内部和代码进行操作。无论使用何种操作系统,它都比 GUI 提供更大的灵活性和控制力。你希望在软件中使用的许多程序(例如托管在 Github 上的程序)也需要在 CLI 上运行一些命令才能运行。
我最喜欢的工具
screen - 免费的终端复用器,我可以启动一个会话,即使连接断开,我的终端也会保留,因此我可以在稍后或从家中恢复ssh - 最值得学习的全能命令,我可以用它来做一些惊人的事情:
sshfs 挂载网络上的文件系统vi/vim - 最流行且最强大的文本编辑器,通用性强,即使在处理大文件时也速度飞快bash-completion - 包含许多预定义的 shell 补全规则技巧与窍门
CTRL + R 搜索命令历史popd/pushd 以及其他允许操作目录栈的 shell 内建命令CTRL + U、CTRL + E!* - 上一条命令的所有参数!! - 上一条命令的全部!ssh - 上一条以 ssh 开头的命令有用的资源:
BASH 是我最喜欢的。这其实是个人偏好问题,我喜欢它的语法,而且它对我来说非常“顺手”。输入/输出重定向语法(>>、<< 2>&1、2>、1> 等)与 C++ 类似,这让我更容易识别。
我也喜欢 ZSH shell,因为它比 BASH 可定制性更强。它拥有 Oh-My-Zsh 框架、强大的基于上下文的 Tab 补全、强大的模式匹配/通配符功能、可加载模块等。
有用的资源:
man [命令名] 可用于查看命令的描述(例如:man less、man cat)-h 或 --help 某些程序在传递此参数时会打印使用说明(例如:python -h 和 python --help)w - 包含大量有用信息,如服务器运行时间top - 可以查看所有正在运行的进程,然后按 CPU、内存使用率等进行排序netstat - 了解服务器正在监听哪些端口和 IP,以及哪些进程在使用它们df - 报告文件系统已使用的磁盘空间量history - 告诉你当前连接的用户之前运行过哪些命令有用的资源:
ls -al 输出中的字段分别代表什么?按输出顺序:```bash -rwxrw-r-- 1 root root 2048 Jan 13 07:11 db.dump
- 文件权限,
- 链接数,
- 所有者名称,
- 所有者组,
- 文件大小,
- 最后修改时间,
- 文件/目录名称
文件权限显示如下:
- 第一个字符是 `-` 或 `l` 或 `d`,`d` 表示目录,`-` 表示文件,`l` 是符号链接(或软链接)——一种特殊类型的文件
- 三组字符,每组三个,分别表示所有者、组和其他用户的权限:
- `r` = 可读
- `w` = 可写
- `x` = 可执行
在你的例子 `-rwxrw-r--` 中,该行表示:
- 一个普通文件(显示为 `-`)
- 所有者可读、可写、可执行(`rwx`)
- 组用户可读、可写,但不可执行(`rw-`)
- 其他用户仅可读,不可写也不可执行(`r--`)
有用的资源:
- [ls -al 输出中各字段的含义是什么?(原文)](https://unix.stackexchange.com/questions/103114/what-do-the-fields-in-ls-al-output-mean)
</details>
<details>
<summary><b>如何获取已登录用户的列表?</b></summary><br>