1 Linux的特点
开源系统,可以自由传播,目前后台服务端绝大部分都是linux程序运行平台,主要是因为以下几点:
- 是开放源代码的,可自由修改
- 兼容Unix系统,具备Unix的优秀特性
- 可自由传播,无任何商业限制
- 适合Intel这类x86CPU的系统架构的计算机(个人PC和简单的服务器)
Unix的优秀特性:
- 可靠性极高,很少需要重启
- 极强的可伸缩性,支持架构多
- 强大的网络功能,其中TCP/IP是在unix上诞生和发展的
- 强大的数据库支持能力,例如oracle和DB2
- 强大的开发功能
Linux的常用版本RedHat和CentOS,目前主流使用的CentOS7
2 CentOS的安装
详细安装流程:CentOS7安装链接 CentOS6安装链接
因Linux不同于windows,所以Linux事实上并没有和windows一样的CDE盘,所以我们在设置虚拟机时,往往需要设置以下的Linux分区,Linux的分区
- 交换分区(swap):
在Linux下,SWAP的作用类似Windows系统下的“虚拟内存”。当物理内存不足时,拿出部分硬盘空间当SWAP分区(虚拟成内存)使用,从而解决内存容量不足的情况。SWAP意思是交换,顾名思义,当某进程向OS请求内存发现不足时,OS会把内存中暂时不用的数据交换出去,放在SWAP分区中,这个过程称为SWAP OUT。当某进程又需要这些数据且OS发现还有空闲物理内存时,又会把SWAP分区中的数据交换回物理内存中,这个过程称为SWAP IN。
当然,swap大小是有上限的,一旦swap使用完,操作系统会触发OOM-Killer机制,把消耗内存最多的进程kill掉以释放内存。现在内存也便宜,物理服务器的配置也高,以前的说法是一般为物理内存的2倍,现在一般情况下划分为4~8GB备用即可。我们虚拟机的内存是2GB,我们就划4GB吧。
详细可见:swap是什么 - 启动分区(boot):200MB足够了主要有:
- 系统Kernel的配置文件;
- 启动管理程序GRUB的目录,里面存放的都是GRUB在启动时所需要的画面、配置及各阶段(stage1, stage1.5, stage 2)的文件。在grub目录下的grub.conf这个文件其实是启动管理程序GRUB的配置文件。在同一层目录下面(/boot/grub/)还有一个它的镜像文件menu.lst。而在SUSE中menu.lst是GRUB实际用到的文件。
- Initrd文件,是系统启动时的模块供应的主要来源;
- System.map文件时系统Kernel中的变量对应表; System.map文件是一个索引文件,它记录了kernel中的symbols的位置,symbols包括有变量或函数名称。
- vmlinuz是在启动过程中最重要的一个文件,因为这个文件就是实际系统所使用的kernel。
- 根分区(/):/分区是linux文件系统的起点(根分区)。
然后还要一个概念叫挂载,Linux中的挂载点 叫做目录。Linux中的挂载点相当于windows中的盘符,如c盘,d盘等等。把挂载点分配给分区,叫做挂载分区挂载到目录,一个分区就是一个文件系统,分区挂载到目录后,这个目录也就是这个分区的入口,进入目录就能查看分区的内容了
Linux 有一个 /根分区,所有文件(设备也当文件处理)都在 / 下,“分区”也可以在 / 下找到。在 linux 可以感受不到分区。完全的文件管理。/ 就是根目录。/ 必须挂载。/home, /usr, /boot 都是 / 下的目录,它们可以分别挂载在不同分区,也可以都在一个分区(/ 所在分区)下。
Linux 一切皆文件
3 磁盘分区的方式
- 传统的MBR(Master Boot Record)方式
- 面向大硬盘的GPT(GUID partition table)方式
不论哪种分区方式和处理硬盘大小的能力,核心矛盾仍然是分区大小,分区表,和寻址范围。
MBR和GPT的区别
相互切换的方式:parted [设备名],然后输入mklabel gpt(mbr)
4 文件权限
首先了解的应该是用户组和用户,然后对应了三种权限所有类型:所有者(自己,User),所属群组的其他成员(Group)和其他人(Others),然后使用ls -al命令可以查看当前目录下的文件的具体信息,第一列对应的则是权限信息,总共10个字母,具体这里不展开。第一列是重点。
对应操作权限的三个命令分别是chgrp,chown,chmod,其中chmod使用的方法最为丰富,可以具体更改每一类权限中一个,可以使用数字去更改,也可以明确每种类型权限,也可以用+ -去增删。这里为什么r代表4,w代表2,x代表1,本质上是因为三种状态可以由一个3bit的二进制数代表,所以,每位对应2进制的当前权重,也就是1, 2,4,一次表示对应的8种状态。
对于文件的权限rwx很好理解,对于目录来说,x是很关键的权限,没有x则无法进入目录(cd),w则是非常大的权限,可以任意更改目录中的文件了。
5 文件与目录管理
主要涉及的命令有cd(change directory), pwd(print work directory), mkdir, rmdir
.代表当前这层目录,…代表上层,-代表前一个工作目录,~表示当前使用者身份所在的家目录, ~account表示account这个使用者的家目录。常用命令有pwd -P, mkdir -p, mkdir -m, ls -l(ll), cp -a, rm -i(rm -rf用得好,牢房进得早), mv -i
文件查看命令:cat -n查看全文, more, less可以翻页查看内容,head和tail可以查看首尾起始的。
文件的隐藏属性和隐藏权限:默认权限umask(注意代表要拿掉的权限)
修改和查看隐藏属性使用lsattr和chattr,chattr +i可以限制其他人不能修改文件,a只能增加,不能删除和修改
特殊的有SUID,SGID,SBIT
文件的查找:脚本文件使用which,普通文件使用whereis和locate,实在找不到再使用find(可以配合-exec对找到的文件集合做操作)
6 补充
- 忘记密码下如何进入:重置root密码
- 尝试各种版本安装之间的区别/创建BOOT分区和不创建
- 在shell中删除设备:umount
- free命令
free 命令显示系统内存的使用情况,包括物理内存、交换内存(swap)和内核缓冲区内存。如果加上 -h 选项,输出的结果会友好很多有时我们需要持续的观察内存的状况,此时可以使用 -s 选项并指定间隔的秒数: free -h -s 3
上面的命令每隔 3 秒输出一次内存的使用情况,直到你按下 ctrl + c。由于 free 命令本身比较简单,所以本文的重点会放在如何通过 free 命令了解系统当前的内存使用状况。
输出简介
下面先解释一下输出的内容:
Mem 行(第二行)是内存的使用情况。
Swap 行(第三行)是交换空间的使用情况。
total 列显示系统总的可用物理内存和交换空间大小。
used 列显示已经被使用的物理内存和交换空间。
free 列显示还有多少物理内存和交换空间可用使用。
shared 列显示被共享使用的物理内存大小。
buff/cache 列显示被 buffer 和 cache 使用的物理内存大小。
available 列显示还可以被应用程序使用的物理内存大小。 - top命令 top命令详解
- 磁盘介质和磁盘接口类型
- 硬盘按数据接口不同,大致分为ATA(IDE)和SATA以及SCSI和SAS。接口速度不是实际硬盘数据传输的速度,目前非基于闪存技术的硬盘数据实际传输速度一般不會超過300MB/s。
-
ATA,全称Advanced Technology Attachment,是用传统的40-pin并口数据线连接主板与硬盘的,接口速度最大为133MB/s,因为并口线的抗干扰性太差,且排线占用空间较大,不利电脑内部散热,已逐渐被SATA所取代。
-
SATA,全称Serial ATA,也就是使用串口的ATA接口,因抗干扰性强,且对数据线的长度要求比ATA低很多,支持热插拔等功能,SATA-II的接口速度為300MiB/s,而新的SATA-III标准可达到600MiB/s的传输速度。SATA的数据线也比ATA的细得多,有利于机箱內的空气流通,整理线材也比较方便。
-
SCSI,全称是Small Computer System Interface(小型机系统接口),经历多代的发展,从早期的SCSI-II,到目前的Ultra320 SCSI以及Fiber-Channel(光纤通道),接口型式也多种多样。SCSI硬盘广为工作站级個人电脑以及服务器所使用,因此会使用较为先进的技術,如碟片转速15000rpm的高转速,且资料传输时CPU占用率较低,但是单价也比相同容量的ATA及SATA硬盘更加昂贵。
-
SAS(Serial Attached SCSI)是新一代的SCSI技术,和SATA硬盘相同,都是采取序列式技术以获得更高的传输速度,可达到6Gb/s。此外也透过缩小连接线改善系统内部空间等。
此外,由于SAS硬盘可以与SATA硬盘共享同样的背板,因此在同一个SAS存储系统中,可以用SATA硬盘来取代部分昂贵的SAS硬盘,节省整体的存储成本。但SATA存储系統并不能连接SAS硬盘。 -
FC(Fibre Channel,光纤通道接口),拥有此接口的硬盘在使用光纤联接时具有热插拔性、高速带宽(4Gb/s或10Gb/s)、远程连接等特点;内部传输速率也比普通硬盘更高。限制于其高昂的售价,通常用于高端服务器领域。
- 查看当前时间戳:秒级date +% 毫秒级date +%s%3N