全栈必备--Linux基础

作者: abel_cao | 来源:发表于2016-09-14 09:23 被阅读425次

Linux 几乎无处不在,不论是服务器构建,还是客户端开发,对操作系统的理解和基础技能对全栈来说都是必备的。

系统的选择

Linux发行版本可以大体分为两类,一类是商业公司维护的发行版本,一类是社区组织维护的发行版本,前者以著名的Redhat(RHEL)为代表,后者以Debian为代表。

Redhat,应该称为Redhat系列,包括RHEL、Fedora、CentOS(RHEL的社区克隆版本,免费)。Ubuntu严格来说不能算一个独立的发行版本,Ubuntu是基于Debian加强而来,一个拥有Debian所有的优点,以及自己所加强的优点的近乎完美的Linux桌面系统。Ubuntu社区认为实用性和创新性高于一切。

如果你需要一个比较稳定的服务器系统而已,那么最好的选择就是CentOS了,安装完成后,经过简单的配置就能提供非常稳定的服务了。但是对云环境而言,unbantu也许不错,hadoop最早就是在ubantu上开发的。

体系结构

了解体系结构,可以有一个较好的方向感。Linux 有kernel和user两种模式,内核、shell和文件系统一起形成了基本的操作系统结构,Linux 内核由如下几部分组成:内存管理、进程管理、设备驱动程序、文件系统和网络管理等。


引自维基百科

Linux内核

了解linux内核,可以充分利用资源,在系统调优时有目标感。


Linux 内核结构

Linux 将内存划分为容易处理的“内存页”,提供了对 4KB 缓冲区的抽象,例如 slab 分配器。进程实际是某特定应用程序的一个运行实体,进程调度控制进程对CPU的访问。Linux 中常见的进程间通讯机制有信号、管道、共享内存、信号量和套接字等。 内核通过 SCI 提供了一个API来创建一个新进程(fork、exec 或 POSⅨ),停止进程(kill、exit),并在它们之间进行通信和同步(signal 或者 POSⅨ 机制)。Linux 操作系统将独立的文件系统组合成了一个层次化的树形结构,并且由一个单独的实体代表这一文件系统。由于 Linux 支持许多不同的文件系统,并且将它们组织成了一个统一的虚拟文件系统.设备驱动程序提供一组操作系统可理解的抽象接口完成和操作系统之间的交互,而与硬件相关的具体操作细节由设备驱动程序完成。Linux内核的网络部分由BSD套接字、网络协议层和网络设备驱动程序组成。 网络设备驱动程序负责与硬件设备通讯,每一种可能的硬件设备都有相应的设备驱动程序。

linux 文件系统

Linux系统能支持多种目前流行的文件系统,推荐用EXT4。
Linux下面的文件类型主要有:

  1. 普通文件,分为纯文本和二进制。
  2. 目录文件,存储文件的地方。
  3. 链接文件,指向同一个文件或目录的的文件。
  4. 设备文件,分为块设备和字符设备。
    5)管道文件,提供进程间通信
    6)套接字文件,与网络通信有关

Linux使用标准的目录结构,安装程序就已经为用户创建了文件系统和完整而固定的目录组成形式,并指定了每个目录的作用和其中的文件类型。

Linux文件目录

Linux Shell 及命令

shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行,是一个命令解释器。shell 有很多类型,这里推荐BASH。BASH是GNU的Bourne Again Shell,是GNU操作系统上默认的shell,大部分linux的发行套件使用的都是这种shell。

Linux 的命令很多,下面给出了一个简单的分类。

常用命令

在shell 中组织linux 的命令来完成一系列的任务,就是shell 编程了。Shell,Perl和Python 是Linux 上最常用的脚本语言,我还是推荐使用Python。

Linux 应用

标准的Linux系统一般都有一套都有称为应用程序的程序集,它包括文本编辑器、编程语言、X Window、Internet工具和数据库等。

对于文本编辑而言,Emacs 和vim 各有千秋,通过插件配合甚至可以作为IDE使用。 个人感觉,VIM 还应该是必备技能。vim的命令也很多,整理如下:


vi命令集

就应用的管理而言,ubantu 需熟知apt命令,centos 则是yum命令。当然了,源代码编译安装是必须的,makefile的写法,configure/autoconfig/make 的用法要手到擒来才好。

相关文章

  • 全栈必备--Linux基础

    Linux 几乎无处不在,不论是服务器构建,还是客户端开发,对操作系统的理解和基础技能对全栈来说都是必备的。 系统...

  • 全栈必备 测试基础

    码农的产品和服务大都是以软件形式存在的,我们存在的价值之一就是快速提供高质量的软件产品或服务。如何保障软件的高质量...

  • 全栈必备 敏捷基础

    相对于软件开发流程,有一门专门的学科——软件工程。最早接触软件工程,是20年前在北电贝尔北方实验室工作的时候,当时...

  • 全栈必备 JavaScript基础

    JavaScript 来了 1995年,诞生了JavaScript语言,那一年,我刚刚从大学毕业。在今年RedMo...

  • 全栈必备 Java 基础

    那一年,从北邮毕业,同一年,在大洋的彼岸诞生了一门对软件业将产生重大影响的编程语言,它就是——Java。1998年...

  • 全栈必备 网络编程基础

    我们是幸运的,因为我们拥有网络。网络是一个神奇的东西,它改变了你和我的生活方式,改变了整个世界。 然而,网络的无标...

  • 前端jQuery基础学习笔记

    众所周知,选择jQuery,可以写更少的代码,做更多的事情。jQuery作为[前端]开发和全栈开发必备的基础技术,...

  • Linux命令集

    学习Linux操作系统必备的指令,基于Linux指令管理Linux操作系统,必备Linux指令有哪些? 基础命令相...

  • 零基础想要转行做web开发,这是我给你整理的系统学习路线

    全栈开发教学大纲(私信小编“007”即可获取数十套PDF文档!) 一、Linux运维+Python基础+进阶: L...

  • Linux 安装 MySQL

    学习完整课程请移步 互联网 Java 全栈工程师 本节视频 【视频】基础设施即服务-Linux-安装 MySQL ...

网友评论

本文标题:全栈必备--Linux基础

本文链接:https://www.haomeiwen.com/subject/dcrvettx.html