在前面章节中,我们已经从文件级别看了操作数据。在这章里,我们将从设备级别来考虑数据。Linux 有着令人惊奇的能力来处理存储设备,不管是物理设备,比如说硬盘,还是网络设备,或者是虚拟存储设备,像 RAID(独立磁盘冗余阵列)和 LVM(逻辑卷管理器)。然而,这不是一本关于系统管理的书籍,我们不会试图深入地覆盖整个主题。
如果我们花些时间在 Linux 社区里,我们会得知很多针对, 类如在众多 Linux 发行版中哪个是最好的(等问题的)看法。这些集中在像这些事情上的讨论,比方说最漂亮的桌面背景(一些人不使用 Ubuntu,只是因为 Ubuntu 默认主题颜色是棕色的!)和其它的琐碎东西,经常变得非常无聊。Linux 发行版本质量最重要的决定因素是软件包管理系统和其支持社区的持久性。
在这一章中,我们将会看一下表面上看来很琐碎的细节-shell 提示符。但这会揭示一些内部 shell 和终端仿真器的工作方式。和 Linux 内的许多程序一样,shell 提示符是可高度配置的,虽然我们把它相当多地看作是理所当然的,但是我们一旦学会了怎样控制它,shell 提示符是一个真正有用的设备。
有一个古老的笑话,说是一个在纽约的游客向行人打听这座城市中著名古典音乐场馆的方向:游客: 请问一下,我怎样去卡内基音乐大厅?行人: 练习,练习,练习!学习 Linux 命令行,就像要成为一名造诣很深的钢琴家一样,它不是我们一下午就能学会的技能。这需要经历几年的勤苦练习。在这一章中,我们将介绍 vi(发音“vee eye”)文本编辑器,它是 Unix 传统中核心程序之一。
正如我们之前所讨论到的,shell 在 shell 会话中维护着大量的信息,这些信息称为 (shell) 环境。存储在 shell 环境中的数据被程序用来确定配置属性。然而大多数程序用配置文件来存储程序设置,某些程序也会查找存储在 shell 环境中的数值来调整他们的行为。知道了这些,我们就可以用 shell 环境来自定制 shell 经历。
通常,现在的操作系统都支持多任务,意味着操作系统(给用户)造成了一种假象,(让用户觉得)它同时能够做多件事情,事实上,它是快速地轮换执行这些任务的。Linux 内核通过使用进程,来管理多任务。通过进程,Linux 安排不同的程序等待使用 CPU。有时候,计算机变得呆滞,运行缓慢,或者一个应用程序停止响应。
Unix 传统中的操作系统不同于那些 MS-DOS 传统中的系统,区别在于它们不仅是多任务系统,而且也是多用户系统。这到底意味着什么?它意味着多个用户可以在同一时间使用同一台计算机。然而一个典型的计算机可能只有一个键盘和一个监视器,但是它仍然可以被多个用户使用。
开玩笑地说,我经常把 Unix 描述为“这个操作系统是为喜欢敲键盘的人们服务的。”当然,Unix 甚至还有一个命令行,这个事实是个确凿的证据,证明了我所说的话。但是命令行用户不喜欢敲入那么多字。那又为什么如此多的命令会有这样简短的命令名,像cp,ls,mv,和 rm?事实上,命令行最为珍视的目标之一就是懒惰;用最少的击键次数来完成最多的工作。
在这一章我们将看一下,当你按下 enter 键后,发生在命令行中的一些“魔法”。虽然我们会仔细查看几个复杂有趣的 shell 特点,但我们只使用一个新命令来处理这些特性。echo - 显示一行文本(字符)展开每一次你输入一个命令,然后按下 enter 键,在 bash 执行你的命令之前,bash 会对输入的字符完成几个步骤处理。
这堂课,我们来介绍可能是命令行最酷的特性。它叫做 I/O 重定向。"I/O"代表输入/输出,通过这个工具,你可以重定向命令的输入输出,命令的输入来自文件,而输出也存到文件。也可以把多个命令连接起来组成一个强大的命令管道。
在这之前,我们已经知道了一系列神秘的命令,每个命令都有自己奇妙的选项和参数。在这一章中,我们将试图去掉一些神秘性,甚至创建我们自己的命令。
此时此刻,我们已经准备好了做些真正的工作!这一章节将会介绍以下命令:cp — 复制文件和目录mv — 移动/重命名文件和目录mkdir — 创建目录rm — 删除文件和目录ln — 创建硬链接和符号链接这五个命令属于最常使用的 Linux 命令之列。它们用来操作文件和目录。现在,坦诚地说,用图形文件管理器来完成一些由这些命令执行的任务会更容易些。
既然我们已经知道了如何在文件系统中跳转,是时候开始 Linux 操作系统之旅了。然而在开始之前,我们先学习一些对研究Linux 系统有帮助的命令。ls — 列出目录内容file — 确定文件类型less — 浏览文件内容ls 乐趣有充分的理由证明,ls 可能是用户最常使用的命令。通过它,我们可以知道目录的内容,以及各种各样重要文件和目录的属性。
我们需要学习的第一件事(除了打字之外)是如何在 Linux 文件系统中跳转。在这一章节中,我们将介绍以下命令:pwd — 打印出当前工作目录名cd — 更改目录ls — 列出目录内容理解文件系统树类似于 Windows,一个“类 Unix” 的操作系统,比如说 Linux,以分层目录结构来组织所有文件。
一说到命令行,我们真正指的是 shell。shell 就是一个程序,它接受从键盘输入的命令,然后把命令传递给操作系统去执行。几乎所有的 Linux 发行版都提供一个名为 bash 的来自 GNU 项目的 shell 程序。“bash” 是 “Bourne Again SHell” 的首字母缩写,所指的是这样一个事实,bash 是最初 Unix 上由 Steve Bourne 写成 shell 程序 sh 的增强版。
本文是为linux命令行的初学者量身打造的. 用语简洁, 脉络清晰, 就算没有任何的linux使用经验, 也能够在作者的引导下, 一点点的去除对命令行的恐惧.我想给大家讲个故事。故事内容不是 Linus Torvalds 在1991年怎样写了 Linux 内核的第一个版本,因为这些内容你可以在许多 Linux 书籍中读到。
event 的类型和功能Nginx 是以 event(事件)处理模型为基础的模块。它为了支持跨平台,抽象出了 event 模块。它支持的 event 处理类型有:AIO(异步IO),/dev/poll(Solaris 和 Unix 特有),epoll(Linux 特有),eventport(Solaris 10 特有),kqueue(BSD 特有),poll,rtsig(实时信号),select 等。
Nginx 的启动模块启动模块从启动 Nginx 进程开始,做了一系列的初始化工作,源代码位于src/core/nginx.c,从 main 函数开始:时间、正则、错误日志、ssl 等初始化读入命令行参数OS 相关初始化读入并解析配置核心模块初始化创建各种暂时文件和目录创建共享内存打开 listen 的端口所有模块初始化启动 worker 进程
负载均衡模块用于从upstream指令定义的后端主机列表中选取一台主机。Nginx 先使用负载均衡模块找到一台主机,再使用 upstream 模块实现与这台主机的交互。为了方便介绍负载均衡模块,做到言之有物,以下选取 Nginx 内置的 ip hash 模块作为实际例子进行分析。配置要了解负载均衡模块的开发方法,首先需要了解负载均衡模块的使用方法。
Nginx 模块一般被分成三大类:handler、filter 和 upstream。前面的章节中,读者已经了解了 handler、filter。利用这两类模块,可以使 Nginx 轻松完成任何单机工作。而本章介绍的 upstream 模块,将使 Nginx 跨越单机的限制,完成网络数据的接收、处理和转发。
关注时代Java