从零入门Linux

Linux是一个操作系统,跟windows一样(介于应用程序和硬件设备之间),主要特点是:开源、稳定、可多用户同时操作

1.Linux 简介

        Linux内核最初只是由芬兰人李纳斯·托瓦兹(Linus Torvalds)在赫尔辛基大学上学时出于个人爱好而编写的。  Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。Linux能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。

2.Linux的发行版

        Linux的发行版说简单点就是将Linux内核与应用软件做一个打包。目前市面上较知名的发行版有:Ubuntu、RedHat、CentOS、Debian、Fedora、SuSE、OpenSUSE、Arch Linux、SolusOS 等。

3.Linux应用领域

今天各种场合都有使用各种Linux发行版,从嵌入式设备到超级计算机,并且在服务器领域确定了地位,通常服务器使用LAMP(Linux + Apache + MySQL + PHP)或LNMP(Linux + Nginx+ MySQL + PHP)组合。目前Linux不仅在家庭与企业中使用,并且在政府中也很受欢迎。

4.Linux与windows的对比

从零入门Linux_第1张图片

5.Linux系统构成

Linux系统一般有4个主要部分:内核、shell、文件系统和应用程序。内核、shell和文件系统一起形成了基本的操作系统结构,它们使得用户可以运行程序、管理文件并使用系统。部分层次结构如图所示。

从零入门Linux_第2张图片

5.1linux内核

        内核是操作系统的核心,具有很多最基本功能,它负责管理系统的进程、内存、设备驱动程序、文件和网络系统,决定着系统的性能和稳定性。

Linux 内核由如下几部分组成:内存管理、进程管理、设备驱动程序、文件系统和网络管理等。如图:

从零入门Linux_第3张图片

5.1.1系统调用接口

SCI 层提供了某些机制执行从用户空间到内核的函数调用。这个接口依赖于体系结构,甚至在相同的处理器家族内也是如此。SCI 实际上是一个非常有用的函数调用多路复用和多路分解服务。在 ./linux/kernel 中您可以找到 SCI 的实现,并在 ./linux/arch 中找到依赖于体系结构的部分。

5.1.2内存管理

对任何一台计算机而言,其内存以及其它资源都是有限的。为了让有限的物理内存满足应用程序对内存的大需求量,Linux  采用了称为“虚拟内存”的内存管理方式。Linux  将内存划分为容易处理的“内存页”(对于大部分体系结构来说都是 4KB)。Linux 包括了管理可用内存的方式,以及物理和虚拟映射所使用的硬件机制。

不过内存管理要管理的可不止 4KB 缓冲区。Linux 提供了对 4KB 缓冲区的抽象,例如 slab 分配器。这种内存管理模式使用 4KB 缓冲区为基数,然后从中分配结构,并跟踪内存页使用情况,比如哪些内存页是满的,哪些页面没有完全使用,哪些页面为空。这样就允许该模式根据系统需要来动态调整内存使用。

为了支持多个用户使用内存,有时会出现可用内存被消耗光的情况。由于这个原因,页面可以移出内存并放入磁盘中。这个过程称为交换,因为页面会被从内存交换到硬盘上。内存管理的源代码可以在 ./linux/mm 中找到。

5.1.3进程管理

进程实际是某特定应用程序的一个运行实体。在 Linux  系统中,能够同时运行多个进程,Linux  通过在短的时间间隔内轮流运行这些进程而实现“多任务”。这一短的时间间隔称为“时间片”,让进程轮流运行的方法称为“进程调度” ,完成调度的程序称为调度程序。

进程调度控制进程对CPU的访问。当需要选择下一个进程运行时,由调度程序选择最值得运行的进程。可运行进程实际上是仅等待CPU资源的进程,如果某个进程在等待其它资源,则该进程是不可运行进程。Linux使用了比较简单的基于优先级的进程调度算法选择新的进程。

       通过多任务机制,每个进程可认为只有自己独占计算机,从而简化程序的编写。每个进程有自己单独的地址空间,并且只能由这一进程访问,这样,操作系统避免了进程之间的互相干扰以及“坏”程序对系统可能造成的危害。 为了完成某特定任务,有时需要综合两个程序的功能,例如一个程序输出文本,而另一个程序对文本进行排序。为此,操作系统还提供进程间的通讯机制来帮助完成这样的任务。Linux 中常见的进程间通讯机制有信号、管道、共享内存、信号量和套接字等。 

       内核通过 SCI 提供了一个应用程序编程接口(API)来创建一个新进程(fork、exec 或 Portable Operating System Interface [POSⅨ] 函数),停止进程(kill、exit),并在它们之间进行通信和同步(signal 或者 POSⅨ 机制)。

5.1.4文件管理

和 DOS 等操作系统不同,Linux 操作系统中单独的文件系统并不是由驱动器号或驱动器名称(如 A:  或 C:  等)来标识的。相反,和 UNIX  操作系统一样,Linux 操作系统将独立的文件系统组合成了一个层次化的树形结构,并且由一个单独的实体代表这一文件系统。Linux  将新的文件系统通过一个称为“挂装”或“挂上”的操作将其挂装到某个目录上,从而让不同的文件系统结合成为一个整体。Linux  操作系统的一个重要特点是它支持许多不同类型的文件系统。Linux 中最普遍使用的文件系统是 Ext2,它也是 Linux  土生土长的文件系统。但 Linux  也能够支持 FAT、VFAT、FAT32、MINIX 等不同类型的文件系统,从而可以方便地和其它操作系统交换数据。由于 Linux  支持许多不同的文件系统,并且将它们组织成了一个统一的虚拟文件系统.

   虚拟文件系统(VirtualFileSystem,VFS):隐藏了各种硬件的具体细节,把文件系统操作和不同文件系统的具体实现细节分离了开来,为所有的设备提供了统一的接口,VFS提供了多达数十种不同的文件系统。虚拟文件系统可以分为逻辑文件系统和设备驱动程序。逻辑文件系统指Linux所支持的文件系统,如ext2,fat等,设备驱动程序指为每一种硬件控制器所编写的设备驱动程序模块。

       虚拟文件系统(VFS)是 Linux 内核中非常有用的一个方面,因为它为文件系统提供了一个通用的接口抽象。VFS 在 SCI 和内核所支持的文件系统之间提供了一个交换层。即VFS 在用户和文件系统之间提供了一个交换层。

VFS :在用户和文件系统之间提供了一个交换层

从零入门Linux_第4张图片

在 VFS 上面,是对诸如 open、close、read 和 write 之类的函数的一个通用 API 抽象。在 VFS 下面是文件系统抽象,它定义了上层函数的实现方式。它们是给定文件系统(超过 50 个)的插件。文件系统的源代码可以在 ./linux/fs 中找到。

文件系统层之下是缓冲区缓存,它为文件系统层提供了一个通用函数集(与具体文件系统无关)。这个缓存层通过将数据保留一段时间(或者随即预先读取数据以便在需要是就可用)优化了对物理设备的访问。缓冲区缓存之下是设备驱动程序,它实现了特定物理设备的接口。

因此,用户和进程不需要知道文件所在的文件系统类型,而只需要象使用 Ext2  文件系统中的文件一样使用它们。

5.1.5设备驱动程序

设备驱动程序是 Linux  内核的主要部分。和操作系统的其它部分类似,设备驱动程序运行在高特权级的处理器环境中,从而可以直接对硬件进行操作,但正因为如此,任何一个设备驱动程序的错误都可能导致操作系统的崩溃。设备驱动程序实际控制操作系统和硬件设备之间的交互。设备驱动程序提供一组操作系统可理解的抽象接口完成和操作系统之间的交互,而与硬件相关的具体操作细节由设备驱动程序完成。一般而言,设备驱动程序和设备的控制芯片有关,例如,如果计算机硬盘是 SCSI  硬盘,则需要使用 SCSI  驱动程序,而不是 IDE 驱动程序。

5.1.6网络接口(NET)

       提供了对各种网络标准的存取和各种网络硬件的支持。网络接口可分为网络协议和网络驱动程序。网络协议部分负责实现每一种可能的网络传输协议。众所周知,TCP/IP  协议是 Internet  的标准协议,同时也是事实上的工业标准。Linux  的网络实现支持 BSD 套接字,支持全部的TCP/IP协议。Linux内核的网络部分由BSD套接字、网络协议层和网络设备驱动程序组成。   网络设备驱动程序负责与硬件设备通讯,每一种可能的硬件设备都有相应的设备驱动程序。

5.2linux shell

shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行,是一个命令解释器。另外,shell编程语言具有普通编程语言的很多特点,用这种编程语言编写的shell程序与其他应用程序具有同样的效果。

目前主要有下列版本的shell。

(1)Bourne Shell:是贝尔实验室开发的。

(2) BASH:是GNU的Bourne Again Shell,是GNU操作系统上默认的shell,大部分linux的发行套件使用的都是这种shell。

(3)Korn Shell:是对Bourne SHell的发展,在大部分内容上与Bourne Shell兼容。

(4) C Shell:是SUN公司Shell的BSD版本。

5.3 linux 文件系统

文件系统是文件存放在磁盘等存储设备上的组织方法。Linux系统能支持多种目前流行的文件系统,如EXT2、 EXT3、 FAT、 FAT32、 VFAT和ISO9660。

5.3.1文件类型

Linux下面的文件类型主要有:

1) 普通文件:C语言元代码、SHELL脚本、二进制的可执行文件等。分为纯文本和二进制。

2) 目录文件:目录,存储文件的唯一地方。

3) 链接文件:指向同一个文件或目录的的文件。

4) 设备文件:与系统外设相关的,通常在/dev下面。分为块设备和字符设备。

5)管道(FIFO)文件 :提供进程建通信的一种方式

6)套接字(socket) 文件:该文件类型与网络通信有关

可以通过ls –l, file, stat几个命令来查看文件的类型等相关信息。

5.3.2 Linux目录

  文件结构是文件存放在磁盘等存贮设备上的组织方法。主要体现在对文件和目录的组织上。

  目录提供了管理文件的一个方便而有效的途径。

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

      完整的目录树可划分为小的部分,这些小部分又可以单独存放在自己的磁盘或分区上。这样,相对稳定的部分和经常变化的部分可单独存放在不同的分区中,从而方便备份或系统管理。目录树的主要部分有 root、/usr、/var、/home  等(图2) 。这样的布局可方便在 Linux 计算机之间共享文件系统的某些部分。

从零入门Linux_第5张图片

    Linux采用的是树型结构。最上层是根目录,其他的所有目录都是从根目录出发而生成的。微软的DOS和windows也是采用树型结构,但是在DOS和 windows中这样的树型结构的根是磁盘分区的盘符,有几个分区就有几个树型结构,他们之间的关系是并列的。最顶部的是不同的磁盘(分区),如:C,D,E,F等。      但是在linux中,无论操作系统管理几个磁盘分区,这样的目录树只有一个。从结构上讲,各个磁盘分区上的树型目录不一定是并列的。

5.3.3 Linux磁盘分区

 (1)主分区,扩展分区和逻辑分区: 

linux分区不同于windows,硬盘和硬盘分区在Linux都表示为设备.

硬盘分区一共有三种:主分区,扩展分区和逻辑分区。   

硬盘的分区主要分为主分区(Primary Partion)和扩展分区(Extension Partion)两种,主分区和扩展分区的数目之和不能大于四个。

主分区(Primary Partion):可以马上被使用但不能再分区。

扩展分区(Extension Partion):必须再进行分区后才能使用,也就是说它必须还要进行二次分区。

逻辑分区((Logical Partion)):由扩展分区建立起来的分区。逻辑分区没有数量上限制。

扩展分区只不过是逻辑分区的“容器”,实际上只有主分区和逻辑分区进行数据存储。 

(2)Linux下硬盘分区的标识

硬盘分区的标识一般使用/dev/hd[a-z]X或者/dev/sd[a-z]X来标识,其中[a-z]代表硬盘号,X代表硬盘内的分区号。

整块硬盘分区的块号标识:Linux下用hda、hdb、sda、sdb 等来标识不同的硬盘;

其中:IDE接口硬盘:表示为/dev/hda1、/dev/hdb ...;

SCSI 接口的硬盘、SATA接口的硬盘表示为/dev/sda、/dev/sdb ... ... ;

硬盘内的分区:如果X的值是1到4,表示硬盘的主分区(包含扩展分区);逻辑分区从是从5开始的,比如/dev/hda5肯定是逻辑分区了;例如:用hda1、hda2、 hda5、hda6 来标识不同的分区。其中,字母a 代表第一块硬盘,b代表第二块硬盘,依次类推。而数字1 代表一块硬盘的第一个分区、2 代表第二个分区,依次类推。1 到4 对应的是主分区(Primary Partition)或扩展分区(Extension Partition)。从5开始,对应的都是硬盘的逻辑分区(Logical Partition)。一块硬盘即使只有一个主分区,逻辑分区也是从5开始编号的,这点应特别注意。

总结:一个硬盘分区首先要确认在哪个硬盘,然后再确认它所在硬盘内的哪个分区。对于/dev/hda 类似的表示方法,也并不寞生吧;我们在Linux通过fdisk -l 就可以查到硬盘是/dev/hda还是/dev/hdb;

[root@localhost ~]# fdisk -l

Disk /dev/hda: 80.0 GB, 80026361856 bytes

255 heads, 63 sectors/track, 9729 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System

/dev/hda1 * 1 970 7791493+ 7 HPFS/NTFS

/dev/hda2 971 9729 70356667+ 5 Extended

 请注意第一行, Disk /dev/hda: 80.0 GB, 80026361856 bytes ,这个就是表示机器中只有一个硬盘设备/dev/hda ,体积大小为 80.0G;下面的就是硬盘的分区,每个分区都有详细的信息,在这里不详细说了;

Linux下磁盘分区和目录的关系如下:

– 任何一个分区都必须挂载到某个目录上。

– 目录是逻辑上的区分。分区是物理上的区分。

– 磁盘Linux分区都必须挂载到目录树中的某个具体的目录上才能进行读写操作。

– 根目录是所有Linux的文件和目录所在的地方,需要挂载上一个磁盘分区。

5.3.4 Linux主要目录的功用

/bin 二进制可执行命令

/dev 设备特殊文件

/etc 系统管理和配置文件

/etc/rc.d 启动的配置文件和脚本

/home 用户主目录的基点,比如用户user的主目录就是/home/user,可以用~user表示

/lib 标准程序设计库,又叫动态链接共享库,作用类似windows里的.dll文件

/sbin 系统管理命令,这里存放的是系统管理员使用的管理程序

/tmp 公用的临时文件存储点

/root 系统管理员的主目录(呵呵,特权阶级)

/mnt 系统提供这个目录是让用户临时挂载其他的文件系统。

/lost+found 这个目录平时是空的,系统非正常关机而留下“无家可归”的文件(windows下叫什么.chk)就在这里

/proc 虚拟的目录,是系统内存的映射。可直接访问这个目录来获取系统信息

/var 某些大文件的溢出区,比方说各种服务的日志文件

/usr 最庞大的目录,要用到的应用程序和文件几乎都在这个目录。其中包含:

/usr/X11R6 存放X window的目录

/usr/bin 众多的应用程序

/usr/sbin 超级用户的一些管理程序

/usr/doc linux文档

/usr/include linux下开发和编译应用程序所需要的头文件

/usr/lib 常用的动态链接库和软件包的配置文件

/usr/man 帮助文档

/usr/src 源代码,linux内核的源代码就放在/usr/src/linux里

/usr/local/bin 本地增加的命令

/usr/local/lib 本地增加的库

5.3.5文件系统特性

     磁盘分区完毕后还需要进行格式化(format),之后操作系统才能够使用这个分区。 格式化的目的是能使操作系统可以使用的文件系统格式(即我们上面提到文件系统类型). 

从零入门Linux_第6张图片

      每种操作系统能够使用的文件系统并不相同. 如windows 98 以前的微软操作系统主要利用的文件系统是 FAT (或 FAT16),windows 2000 以后的版本有所谓的 NTFS 文件系统,至于Linux 的正统文件系统则为 Ext2 (Linux second extended file system, ext2fs)这一个。此外,在默认的情况下,windows 操作系统是不会认识 Linux 的 Ext2 的。

     传统的磁盘与文件系统之应用中,一个分区就是只能够被格式化成为一个文件系统,所以我们可以说一个 filesystem 就是一个 partition。但是由于新技术的利用,例如我们常听到的LVM与软件磁盘阵列(software raid), 这些技术可以将一个分区格式化为多个文件系统(例如LVM),也能够将多个分区合成一个文件系统(LVM, RAID)! 所以说,目前我们在格式化时已经不再说成针对 partition 来格式化了, 通常我们可以称呼一个可被挂载的数据为一个文件系统而不是一个分区喔!

       那么文件系统是如何运行的呢?这与操作系统的文件数据有关。较新的操作系统的文件数据除了文件实际内容外, 通常含有非常多的属性,例如 Linux 操作系统的文件权限(rwx)与文件属性(拥有者、群组、时间参数等)。文件系统通常会将这两部份的数据分别存放在不同的区块,权限与属性放置到 inode 中,至于实际数据则放置到 data block 区块中。 另外,还有一个超级区块 (superblock) 会记录整个文件系统的整体信息,包括 inode 与 block 的总量、使用量、剩余量等。

        对于一个磁盘分区来说,在被指定为相应的文件系统后,整个分区被分为 1024,2048 和 4096 字节大小的块。根据块使用的不同,可分为:

超级块(Superblock):这是整个文件系统的第一块空间。包括整个文件系统的基本信息,如块大小,inode/block的总量、使用量、剩余量,指向空间 inode 和数据块的指针等相关信息。

inode块(文件索引节点) : 文件系统索引,记录文件的属性。它是文件系统的最基本单元,是文件系统连接任何子目录、任何文件的桥梁。每个子目录和文件只有唯一的一个 inode 块。它包含了文件系统中文件的基本属性(文件的长度、创建及修改时间、权限、所属关系)、存放数据的位置等相关信息. 在 Linux 下可以通过 "ls -li" 命令查看文件的 inode 信息。硬连接和源文件具有相同的 inode 。

数据块(Block):实际记录文件的内容,若文件太大时,会占用多个 block。为了提高目录访问效率,Linux 还提供了表达路径与 inode 对应关系的 dentry 结构。它描述了路径信息并连接到节点 inode,它包括各种目录信息,还指向了 inode 和超级块。

        就像一本书有封面、目录和正文一样。在文件系统中,超级块就相当于封面,从封面可以得知这本书的基本信息; inode 块相当于目录,从目录可以得知各章节内容的位置;而数据块则相当于书的正文,记录着具体内容。

         Linux正统的文件系统(如ext2、3等)将硬盘分区时会划分出超级块、inode Table区块和data block数据区域。一个文件由一个超级块、inode和数据区域块组成。Inode包含文件的属性(如读写属性、owner等,以及指向数据块的指针),数据区域块则是文件内容。当查看某个文件时,会先从inode table中查出文件属性及数据存放点,再从数据块中读取数据。


从零入门Linux_第7张图片

  我们将 inode 与 block 区块用图解来说明一下,如下图所示,文件系统先格式化出 inode 与 block 的区块,假设某一个文件的属性与权限数据是放置到 inode 4 号(下图较小方格内),而这个 inode 记录了文件数据的实际放置点为 2, 7, 13, 15 这四个 block 号码,此时我们的操作系统就能够据此来排列磁盘的阅读顺序,可以一口气将四个 block 内容读出来! 那么数据的读取就如同下图中的箭头所指定的模样了。


从零入门Linux_第8张图片

这种数据存取的方法我们称为索引式文件系统(indexed allocation)。那有没有其他的惯用文件系统可以比较一下啊? 有的,那就是我们惯用的闪盘(闪存),闪盘使用的文件系统一般为 FAT 格式。FAT 这种格式的文件系统并没有 inode 存在,所以 FAT 没有办法将这个文件的所有 block 在一开始就读取出来。每个 block 号码都记录在前一个 block 当中, 其读取方式有点像下图所示:


从零入门Linux_第9张图片

上图中我们假设文件的数据依序写入1->7->4->15号这四个 block 号码中, 但这个文件系统没有办法一口气就知道四个 block 的号码,他得要一个一个的将 block 读出后,才会知道下一个 block 在何处。 如果同一个文件数据写入的 block 分散的太过厉害时,则我们的磁盘读取头将无法在磁盘转一圈就读到所有的数据, 因此磁盘就会多转好几圈才能完整的读取到这个文件的内容!

常常会听到所谓的“碎片整理”吧? 需要碎片整理的原因就是文件写入的 block 太过于离散了,此时文件读取的效能将会变的很差所致。这个时候可以透过碎片整理将同一个文件所属的 blocks 汇整在一起,这样数据的读取会比较容易啊! 想当然尔,FAT 的文件系统需要经常的碎片整理一下,那么 Ext2 是否需要磁盘重整呢?

由于 Ext2 是索引式文件系统,基本上不太需要常常进行碎片整理的。但是如果文件系统使用太久, 常常删除/编辑/新增文件时,那么还是可能会造成文件数据太过于离散的问题,此时或许会需要进行重整一下的。 不过,老实说,鸟哥倒是没有在 Linux 操作系统上面进行过 Ext2/Ext3 文件系统的碎片整理说!似乎不太需要啦!^_^

可以用ln命令对一个已经存在的文件再建立一个新的连接,而不复制文件的内容。连接有软连接和硬连接之分,软连接又叫符号连接。它们各自的特点是:

硬连接:原文件名和连接文件名都指向相同的物理地址。目录不能有硬连接;硬连接不能跨越文件系统(不能跨越不同的分区)文件在磁盘中只有一个拷贝,节省硬盘空间;由于删除文件要在同一个索引节点属于唯一的连接时才能成功,因此可以防止不必要的误删除。

符号连接:用ln -s命令建立文件的符号连接符号连接是linux特殊文件的一种,作为一个文件,它的数据是它所连接的文件的路径名。类似windows下的快捷方式。可以删除原有的文件而保存连接文件,没有防止误删除功能。

6.Linux常用命令

6.1查看服务器信息

6.1.1获取CPU的详细情况

从零入门Linux_第10张图片

判断依据:

具有相同core id的CPU是同一个core的超线程

具有相同"physical id"的CPU是同一个CPU封装的线程或核心

a. 显示物理CPU个数

cat /proc/cpuinfo |grep "physical id"|sort|uniq|wc -l

b.   显示每个物理CPU的个数(核数)

cat /proc/cpuinfo |grep "cpu cores"|uniq

c.    显示逻辑CPU个数

cat /proc/cpuinfo|grep "processor"|wc -l

理论上不使用超线程技术的前提下有如下结论:

物理CPU个数*核数=逻辑CPU个数

配置服务器的应用时,以逻辑CPU个数为准


6.1.2获取服务器内存使用情况

total: 内存总量

used: 已使用

free: 未使用

shared: 多进程共享的内存总量

-buffers/cache: 已使用内存

+buffers/cache: 可用内存

可用内存=free+buffers+cached(642=67+217+357)

6.1.3查看服务器硬盘使用情况

查看硬盘以及分区信息: fdisk -l

查看文件系统的磁盘空间占用情况: df -h

从零入门Linux_第11张图片

 6.1.4查看硬盘的I/O性能

查看硬盘的I/O性能: iostat -d -x -k 10 2  (-d显示磁盘状态,-x显示跟io相关的扩张数据,-k以KB为单位,10表示每隔10秒刷新一次,2表示刷新2次,默认一直刷新)

从零入门Linux_第12张图片

参数说明:

rrqm/s: 每秒这个设备相关的读取请求有多少被Merge了(当系统调用需要读取数据的时候,VFS将请求发到各个FS,如果FS发现不同的读取请求读取的是相同Block的数据,FS会将这个请求合并Merge)

wrqm/s: 每秒进行merge的写操作数

r/s: 每秒完成的读I/O设备的次数

w/s: 每秒完成的写I/O设备的次数

rkB/s: 每秒读取多少KB

wkB/s: 每秒写多上KB

avgrq-sz: 平均每次设备I/O操作的数据大小(扇区)

avgqu-sz: 平均I/O队列长度

await: 平均每次设备I/O操作的等待时间ms

svctm: 平均每次设备I/O操作时间ms

%util: 一秒钟有百分之多上时间用于I/O操作

平时只要关注%util,await两个参数即可

%util越接近100%,说明产生的I/O请求越多,越容易满负荷

await 取决于svctm,最好低于5ms,如果大于5ms说明I/O压力大,可以考虑更换响应速度更快的硬盘.

6.1.5查看服务器平均负载

概念: 特定时间间隔内运行队列中的平均进程数可以反映系统繁忙程度

从零入门Linux_第13张图片
从零入门Linux_第14张图片

load average:0.01,0.03,0.02表示过去1分钟,5分钟,15分钟进程队列中的平均进程数量,当这三个数长期大于逻辑CPU个数时说明负载过大

6.1.6vmstat监控Linux系统的整体性能 

从零入门Linux_第15张图片

参数介绍:

procs:

r: 等待运行的进程数

b: 处于非中断睡眠状态的进程数

memory:

swpd: 虚拟内存使用情况(KB)

free: 空闲内存(KB)

swap:

si: 从磁盘交换到内存的交换页数量

so: 从内存交换到磁盘的交换页数量

 io:

bi: 发送到设备的块数(块/s)

bo: 从块设备接收到的块数(块/s)

system:

in: 每秒中断数

cs: 每秒的环境上下文切换数

cpu:(cpu总使用的百分比)

us: cpu使用时间

sy: cpu系统使用时间

id: 闲置时间

标准情况下r和b的值应为:r<5,b约为0.

如果us+sy<70%,系统性能较好

如果us+sy>85,系统性能糟糕.

6.1.7查看系统32/64位

6.1.8查看服务器发行版相关信息

从零入门Linux_第16张图片

6.2简单命令

pwd   :查看当前的所在路径,

whoami  : 查看当前登陆的用户名

cd  : 进入某个目录  cd /home

cp  : 复制文件 cp a.txt b.txt 

mv : 移动文件  mv a.txt  b.txt  

rm  :删除文件  rm -r 删除目录文件 , rm  a.txt 

mkdir: 常见目录  mkdir aaa   mkdir -p aaa/bbb  

vi  :文本编辑器  esc i o yy p  :wq   :set nu 

sed :文本替换 sed -i "s/aaa/bbb/g" `grep aaa -rl /www`

awk : 文本处理利器 awk '{print FILENAME,FN,RN}' aaa.txt 

ssh :远程登陆到某台服务器  ssh [email protected]

scp:复制文件到远程服务器  scp  a.txt  [email protected]:/root/a.txt  

head  :默认查看文件的前10行

more  tail  ls  date 等

6.3组合命令

6.3.1批量生成sql 

[root@VM_190_76_centos ~]# cat a.sh

get_date()

{

cat<

20180501

20180502

20180503

!

}

get_date | while read curdate

do

  echo "select $curdate, a.* from aaa a  where datastate>=20180101 and  dtstatdate<=$curdate ;"

  echo " "

done


6.3.2N个文件 合并成一个文件

[root@VM_190_76_centos ~]# find ./ -name "*.txt"  | xargs awk '{print FILENAME","$1}'

./b.txt,33344

./b.txt,565656

./b.txt,676767

./a.txt,ddddd

7.怎么实践linux

7.1购买云服务器

  购买腾讯云/阿里云 :基于linux的云服务器

7.2安装虚拟机

首先安装 vmware,然后再安装对应的 linux操作系统

7.3安装git/cygwin

通过腾讯电脑管家直接安装git

从零入门Linux_第17张图片

运行git bash,可执行linux的大部分命令


参考文档

http://www.runoob.com/linux/linux-intro.html

https://blog.csdn.net/farmwang/article/details/65449878

https://www.cnblogs.com/diaosir/p/6804968.html

你可能感兴趣的:(从零入门Linux)