最近我尝试申请一些 DevOps 工程职位,但我对几乎每个职位描述中都有的一个特定要求感到害怕:
具有 Linux 内部和管理经验。
我使用 Linux 服务器和部署在 Linux/Unix 上的应用程序已经有相当长一段时间了,说实话,我不知道他们所说的“具有 Linux 内部经验”是什么意思。
我的问题是:
- 我为什么要了解 Linux 内部原理?
- 在哪里我可以找到它的实际用途?
- 如何学习 Linux 内部原理?
谢谢
答案1
这是一个非常模糊的要求。因为你指的是 DevOps,所以它可能意味着类似这些,包括但不限于
- 关于内核运行时可调参数(sysctl、/proc、/sys)的知识
- 熟悉典型 Linux 机器上运行的常用进程 - systemd、cron、一些 syslog 守护程序、ntp……
- 熟悉典型的 Linux 文件系统
- 有关如何调整文件系统大小、观察机器负载、安装和配置所需的常用程序的知识...
- 能够通过阅读日志、使用 top、vmstat、iostat、sar、strace 等程序来调试基本问题
这只是我的猜测。
答案2
答案3
我为什么要了解 Linux 内部原理?
了解“幕后”的运作方式对于推断复杂系统的状态至关重要。仅仅从运行手册中输入命令是一回事,了解这些命令的作用并能够从一系列选项中明智地进行选择又是另一回事,所有这些选项都可能在某种程度上起作用,是任何给定情况下的最佳选项。
在哪里我可以找到它的实际用途?
实际用途是每天!我的意思是这是一个非常简单的例子,你想杀死一个进程。kill
当然,你可以盲目地输入。但你可能应该了解这个命令到底是做什么的,它除了杀死一个进程之外还能做什么,进程在响应不同的 kill 用法时可能会做什么,在执行的哪个阶段它会对该请求采取行动,如果它似乎忽略了请求该怎么办,如果它在被杀死后变成僵尸意味着什么,我可以继续说下去……
如何学习 Linux 内部原理?
你很幸运,因为其中很多内容在大多数类 Unix 操作系统中都很常见,而且基本原理不会很快改变,因此学习它是一项投资,将在你的整个职业生涯中得到回报。理查德·史蒂文斯是永恒的知识,这就是我的起点,而且我仍然经常阅读这些书籍。FreeBSD操作系统的设计与实现也非常重要。但是没有什么可以替代实际行动。