老曹眼中的Linux几乎无处不在。无论是服务端搭建还是客户端开发,对操作系统有基本的了解,掌握基本的技能,都是全栈必备的。系统选择Linux发行版大致分为两类,一类是商业公司维护的发行版,一类是社区维护的发行版。前者以大名鼎鼎的Redhat(RHEL)为代表,后者以Debian为代表。Redhat,可以称为Redhat系列,包括RHEL、Fedora、CentOS(RHEL的社区克隆版,免费)。严格来说,Ubuntu不能算是独立发行版。Ubuntu是基于Debian的增强,一个近乎完美的Linux桌面系统,兼具Debian的所有优点和自身的增强优势。Ubuntu社区重视实用性和创新性高于一切。如果你只是需要一个相对稳定的服务器系统,那么最好的选择是CentOS。安装完成后,经过简单配置即可提供非常稳定的服务。但是对于云计算来说,unbantu可能还是不错的。Hadoop最初是在ubantu上开发的。架构了解架构,可以有更好的方向感。Linux的分层系统Linux有内核和用户两种模式。内核、外壳和文件系统共同构成了操作系统的基本结构。Linux内核由以下几部分组成:内存管理、进程管理、设备驱动程序、文件系统和网络管理等。Linux内核了解Linux内核,可以充分利用资源,在系统调优时有目的感.Linux将内存划分为可管理的内存页,提供超过4KB缓冲区的抽象,例如slab分配器。进程实际上是特定应用程序的运行实体,进程调度控制进程对CPU的访问。Linux中常见的进程间通信机制包括信号、管道、共享内存、信号量和套接字。内核通过SCI提供API来创建新进程(fork、exec或POSⅨ),停止进程(kill、exit),以及它们之间的通信和同步(信号或POSⅨ机制)。Linux操作系统将独立的文件系统组合成一个层次化的树状结构,一个单一的实体代表这个文件系统。因为Linux支持很多不同的文件系统,并将它们组织成一个统一的虚拟文件系统。设备驱动程序提供了一组操作系统可以理解的抽象接口来完成与操作系统的交互,而硬件相关的具体操作细节则由设备驱动程序来完成。Linux内核的网络部分由BSD套接字、网络协议层和网络设备驱动程序组成。网络设备驱动程序负责与硬件设备进行通信,每一种可能的硬件设备都有对应的设备驱动程序。linux文件系统Linux系统可以支持多种流行的文件系统,推荐使用EXT4。Linux的文件类型主要有:1)普通文件,分为纯文本文件和二进制文件。2)目录文件,存放文件的地方。3)链接文件指向同一文件或目录中的文件。4)设备文件分为块设备和字符设备。5)管道文件,提供进程间通信6)套接字文件,与网络通信有关目录的作用和其中的文件类型。LinuxShell和命令shell是系统的用户界面,为用户提供与内核交互的接口。shell接收用户输入的命令,发送给内核执行。它是一个命令解释器。shell的种类很多,这里推荐使用BASH。BASH是GNU的BourneAgainShell。它是GNU操作系统上的默认shell。大多数linux发行版都使用这个shell。Linux中的命令很多,下面简单分类一下。常用命令在shell中组织linux命令来完成一系列的工作,这就是shell编程。Shell、Perl和Python是Linux上最常用的脚本语言,我还是推荐使用Python。Linux应用程序标准的Linux系统一般都有一组称为应用程序的程序,包括文本编辑器、编程语言、XWindow、Internet工具和数据库。对于文本编辑,Emacs和vim各有优缺点,甚至可以通过插件的方式作为IDE使用。个人觉得,VIM应该也是必备技能。vim命令也有很多,整理如下:vi命令集在应用管理方面,ubantu需要熟悉apt命令,centos需要yum命令。当然,编译安装源码是必须的。makefile的写法和configure/autoconfig/make的使用应该是得心应手的。【本文来自专栏作家老曹的原创文章,作者微信公众号:哦家ArchiSelf,id:wrieless-com】
