2019年8月8日14:13:18
我把Linux这个系列的几个参考书给大家列一下:
书不在多,希望大家选择一本。认真精读才是王道!
这里我所学习和使用的是CentOS7 Linux版本
优点:Linux系统是一款十分优良的开源软件产品,它具有类似 UNIX 的程序界面,而且继承了 UNIX 的稳定性,能够较好地满足工作需求。所以要在长期需要稳定运行的网站服务器上、在处理大数据的集群系统中以及需要协同工作的环境中,采用 Linux 系统就是一个非常不错的选择。
相较于常用的Windows OS,Linux具有以下优点:
注:在学习常见的 Linux 系统版本之前,首先需要区分一下 Linux 系统内核与 Linux 发行套件系统 、内核版本和发行版本的不同。
9. Linux 系统内核指的是一个由 Linus Torvalds 负责维护,提供硬件抽象层、硬盘及文件系统控制及多任务功能的系统核心程序。内核官方网站:www.kernel.org ,上面定期更新内核版本(这是OS的核心部分,大小也就几十M)。
10. Linux 发行套件系统是我们常说的 Linux 操作系统,也即是由 Linux 内核与各种常用软件的集合产品。
当从官网上下载到内核之后,各大厂商就可以加入自己的桌面、应用程序就变成了开发版本。也即:开发版本也许是不同的,但其实他们所使用的的内核版本都是一样的。全球大约有数百款的 Linux 系统版本,每个系统版本都有自己的特性和目标人群。如下:
以上有两个分支:红帽和Debian系列。他们的具体操作都是一样的(毕竟来自于同一个内核)其主要区别在于:软件安装的方式不一样。
对于如上那么多的发行版本,他们之间是什么样子的关系?孰优孰劣?使用场景有影响吗?虽然绝大多数用户选择了CentOS,其实学习的话,都是可以的。任何一种发行版本都是可以的!
Windows系统在设计之初,就是应用型优先,图形化界面就做的很漂亮,与用户的交互也人性化。而Linux系统 就是为了服务器端的稳定、安全,所以命令行界面就是给优秀的工程师们使用的。而且在Linux上转载图形化界面,整个系统的资源占有就很高了,给客户端访问交互的资源就略显单薄了。此外在Linux上转载图形化界面,相应的就会启动更多的别的服务,Linux系统的出错率就会大大增加,这不符合服务器端的稳定、安全的需求。
所以说在这里,在初学的时候,可以安装一下图形化界面,但是尽量还是要“强迫自己”多使用一下命令行操作。
在学习Linux的时候第一件事情:Linux系统自带的非常完善的帮助机制:
第二件事情: 忘掉Windows的思维方式。
VMWare是当前最主流、应用最广泛的虚拟软件(来搭建虚拟环境)。它可以保证在一台现有的计算机操作系统上,模拟出一个新的硬件环境,以实现在一个电脑上真正同时运行两个OS。其官网为:www.vmware.com 。在我看来:使用VMWare装的OS还可以同Windows主机进行网络通信的。
指的是把一个大硬盘按照需求进行划分成几个合理的小的硬盘。没有经过合理的划分,磁盘的读写数据的效率都会变得非常的低。
分区也是有一定的类型的:
最早的时候,只有主分区这一种分区,但是主分区最多只能分4个。当随着硬盘变大,4个主分区有点不够了。这个时候,就必须把主分区里面的一个分区拿出来,化为扩展分区。且对于一块硬盘来讲,扩展分区最多只能有一个。而且主分区加扩展分区最多分4个(两种类型的分区加起来最多4个,且扩展分区只能最多1个)。扩展分区(不能格式化)本身不能写入数据,只能包含逻辑分区(这是扩展分区的唯一作用)。逻辑分区就可以正常的格式化和写入数据。
如上:1 2 3是主分区(可以放入数据),因为分区不够用(主分区最多4个)。所以就把4 拿出来作为扩展分区,扩展分区4(不能格式化)本身不能写入数据,只能包含逻辑分区5 6。逻辑分区5 6就可以正常的格式化和写入数据。这种限制是由硬盘的结构决定的,只要硬盘结构不发生变化,这种限制依旧存在。
注:硬盘在正确的分区之后,就一定可以进行写入数据吗?NO
硬盘必须得经过格式化(高级格式化)之后,才可以写入数据。低级格式化是由硬盘自己的操作,不是OS的操作范畴。
高级格式化的目的就是为了在硬盘之中写入文件系统。在Windows系统可以识别前三种文件系统,而Linux系统可以识别后三种文件系统。centos使用的默认文件系统 EXT4 。格式化就相当于 给柜子打入隔断,而且得是有规则的打入隔断 (这个隔断必须要遵守一定的规则)。在Linux系统当中,其文件系统EXT4 在进入格式化的时候,需要把分区变成一个个等大的数据块(大小为4KB)。也即每4KB空间作为一个小隔断,现有10KB的数据,那么就会拆分放到3个隔断当中。最后的一个隔断,剩下的2KB空闲空间是不能再分给其他的文件使用了。(而且总的来说,这3个数据块放的位置也不是连续的)
Windows中的磁盘碎片管理:原来就是把保存文件不同的数据块尽量放在一起,这样利于数据的读取。
EXT4的格式化最主要目的是写入文件系统,而写入文件系统当中最主要的工作就是:按照文件系统的规则把硬盘分割成等大的(4kb)的块(block)。写入文件系统做的工作分两步:
一是把分区分割成等大的(4kb)的块(block块);
比如10k的文件分三个块存放,剩余的2k空间不再存放其他数据;
二是建立一个iNode列表(当查找文件的时候,是通过iNode号,找到文件相应的条款,从而知道文件当中的数据保存在哪几个数据块中了。然后打开数据块,得到数据进而拼凑成这个完整的文件。)
写入了数据块,格式化的第二步:因为当文件(数据被放到各个数据块上)读取的时候,怎么知道文件当中的数据保存在哪几个数据块 呢?这个时候就要用到文件的分区表,每一个文件都有自己的编号iNode号,通过这个编号找到文件的相关条款(条款:就可以知道这个文件放到了哪几个数据块当中)。
在Windows系统中:硬盘进行了分区,然后进行格式化。只需要给这个分区分配盘符就可以直接使用了(Windows系统有完整的图形化界面,可以通过图像化界面来看到这个分区的位置,所以可以给它分配盘符 ,直接使用的。)。在Linux系统上不行,见如上图所示:硬盘进行了分区(大硬盘到小硬盘),然后进行格式化。格式化之后还要给每一个分区 起上一个设备文件名 或 硬件文件名。然后结束之后分配盘符 才可以直接使用。
这里也就是Linux中的 所以的硬件设备都是文件。
例如:如上图所示:IDE硬盘在Linux上,就是/dev/hd[a-d]来表示。后面的【a-d】表示硬盘号,只有1个硬盘就是hda,两个就是hdb…………
dev这个一级子目录,里面放的所有文件都是硬件文件。
必须得给每一个分区或者硬件设备起上一个设备文件名的原因:Linux系统没有完善的图形化界面,总得让系统知道要给哪些分区分配盘符的。
在硬盘有了设备文件名,还要给分区分配分区文件名。如下:分区文件名是在硬盘设备文件名后面直接加上分区号1 2 3 4等即可。
hda 表示IDE硬盘接口的第一个硬盘,而1 就表示这个硬盘当中的第一个分区。hda1代表IDE硬盘第一个分区,并以此类推 就可以了
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
IDE与SCSI、SATA接口之间的区别:最主要的区别就是传输速率
最古老的硬盘接口:IDE,最快传输速率:133MB/s
一般用在服务器上的硬盘接口:SCSI, (比较贵)最快传输速率:200MB/s
不过前两种基本上已经被淘汰了。
不过现在最常用的硬盘接口:SATA串口硬盘。在SATA3代的时候最快传输速率可达500MB/s 都适用在个人机和服务器上的。sda 接口用的就很多了!!!
硬盘的分区的设备文件名也是系统自动检测的。
如上:
现在有两块硬盘分区:sda与sdb, 两个硬盘两种方法。
注意:在第二种分法上,一个主分区sdb1,一个扩展分区sdb2。sdb的逻辑分区号从5开始的,即sdb5。这意味着:前四个分区号只能留给主分区或者扩展分区(即使没有占满4个主分区,逻辑分区也只能从5开始),所以不管怎么分,5分区一定是逻辑分区的第一个分区。当然这也是系统自动去识别的。
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
有了分区就可以正常使用吗?还需要挂载(Linux上叫做挂载,Windows上这个叫做分配盘符)
挂载:给分区分配盘符的过程
挂载可理解为Windows中的分配盘符,即挂载点(盘符)。挂载点是以文件目录的方式存在。也即:分区有了,格式化,然后给每一个分区起上一个设备文件名,最后在正常使用之前还得给分区指定一个挂载点。
在Windows上 c d e f等作为盘符,Linux是拿空的目录名称作为盘符。理论上,任何一个目录名称都可以作为盘符,只是个别是绝对不可以作为盘符的。
对于Linux,必须有两个地方需要分区:
推荐分区的boot目录:
任何一个操作系统要想正常启动,都得有一定的空余空间。若是没有给boot进行单独分区,所有的数据都放到根分区之下,万一根分区放满了,那么Linux系统就启动不了了。
boot需要单独分区,是用来保存系统启动的数据的。这个分区不用太大,200M即可。写入之后,我们不会再往里面再放入其他的数据了。所以这个分区必有一定的空余空间。
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
在文件系统中(在根分区下保存一级目录,在一级目录下保存二级目录或者二级文件),boot与home都是作为根目录的子目录。而在硬盘分区中,(从硬盘上来看:每一个一级目录都可以有自己独立的硬盘空间)boot分配到sda1硬盘分区,home分配到sda2硬盘分区,根目录分配到sda3硬盘分区;在这一点上与Windows系统是不同的,需要注意。
总结:在Linux中进行分区的方式需要四个步骤:
根目录是Linux的最高一级目录,其下面的一级目录root:管理员的家目录
家目录:登陆之后,初始的登录位置。每个用户登录都有这么一个自己的初始登录位置,其他普通用户的家目录是/home/song 这个目录是默认创建的,每个用户都有。
上面的那3个目录是安装过程的日志。
其中的Kickstart:如果需要同时安装上千台服务器,全部手工安装 会累死人。Linux提供了这样的无人值守模式。就是说:不需要用户参与,自动安装。 但是需要依赖于一个已经装好的服务器,以这个已经装好的服务器作为模板,其他的安装的和这个一模一样。(依赖的就是这个Kickstart配置文件)
于是使用iOS进行了图形界面的安装CentOS,如上。
在真正的使用过程中,不管是管理本机上的虚拟机还是管理远程的服务器,都是采用于一种远程登录管理方式进行操作,而非直接在计算机上做操作。这样的优点在于:在你的Windows上都不需要安装虚拟机,直接可以使用这个工具来远程管理服务器了。
现在我们开始实际操作了:
7. 测试一下 Host Only,虚拟机是通过VMnet1 这个虚拟网卡和真实机进行通信的,需要看一下VMnet1的网络属性。这个虚拟网卡会给虚拟机分配一个 假网段的IP,来保证Linux里面的网段和这个虚拟网卡的网段要一样。
这个网段是64,安装的时候一个自动检测分配的(没人用的)。
登录Linux虚拟机。
8. 现在我们的虚拟机是没有任何的网络IP地址配置的,利用 ifconfig命令。直接ifconfig回车,是查询一下 当前的网卡信息。
9. lo 代表的是本机回环网卡,其IP地址是127.0.0.1 (做本机网络通信和测试的,代表本机 不需要插网线,就可以ping通自己。)Linux当中,所有的硬件都是文件。描述分区文件名的是sda下的sda1 sda2等,描述网卡的文件名就是eth0 eth1等. 此时分配的IP地址必须是和上面的VMnet1里面的IP地址是同一个网段,
但是这个没有ping通,需要在网上找一下教程, 把ens32修改成为 eth0.(大家在学习的时候,要去主动的寻找资料 增强自己的动手能力)
10. 我们再ping一下
11. 如果得到这样的一个请求应答包 就可以了
上面测试的是仅主机模式(没有网络),现在我们试一下有网的情况:桥接模式,如下:
现在需要确定我的真实网卡 现在我的网是WiFi 没有网线。我直接实现一个 linux下桥接模式设置静态IP实现上网吧
我的做法是:
12. 虚拟机设置
13. 虚拟机网络设置
14. 桥接模式配置VMware虚拟机网络,设置静态 IP
做上面的仅主机模式,修改 ifcfg -eth0 其实我之前就把这个已经修改过一遍了,现在还得修改 很是麻烦。
注:这里配的是无线局域网适配器
先得看看PC的无线网 默认网关是多少
宿主网络信息如下:
配置CentOS7 ,将主机中对应的信息填入下面对应的位置,静态ip,子网掩码, 默认网关, DNS
主要命令如下:这个文件 每个电脑的好像都不一样
对这个文件进行修改:
ip地址:设置和宿主机同网段ip
NETMASK:子网掩码和宿主机相同
GATEWAY: 默认网关和宿主机相同
DNS1: 跟宿主一样
接下来,在网络配置文件 /etc/sysconfig/network 中添加网关地址
vi /etc/sysconfig/network
在箭头处:添加网关地址,默认网关和宿主机相同
这里好像是要root权限的
接下来:添加DNS
DNS,跟宿主一样
vi /etc/resolv.conf
那个第三行不要也可以吧
第一行必须得要,第二行 若是ping不通,再加上也行
service network restart
到这里基本上配置结束了,我在这里也是花了将近一天的时间才配好的。所以说,有问题就要去CSDN上面查看,试着自己独立解决问题;
我们测试一下:
1. 内网访问自身静态ip
2. 宿主机访问虚拟机
3. 虚拟机访问宿主机
4. 访问一下百度
一切OK,虚拟机的火狐浏览器也是可以上网的了。
现在我们再回头看一下,虚拟网络编辑器
在这里就是 改变配置文件中的IP设置,完成的静态IP地址。使用命令的话,只是在内存中临时生效。如果你设置之后,还是不行的话,去更换一下上面的那个 桥接到
下面使用Windows上的远程工具连接我的Linux。我是用的xshell
步骤1:左上角的新建
然后输入 我的IP地址 192.168.0.103
端口号默认是22,不用改。
然后点击 连接
接下来让你输入 登陆的用户名
我们填入 root(我们在生产服务器上,不建议直接使用root,这个角色太强大了!!!权限过高,建议不要用root。使用普通用户,出现问题的时候,切换为root就行(毕竟普通用户很多功能无法使用),但是这里作为初学者,就用root吧)
然后出来一个 接收并保存
我们测试一下,我在Linux里面 新建了一个文件夹 MyLinux,去xshell测试一下:
堪称完美!!!!! 下次打开xshell依旧可以使用。当然在这里,使用xshell和直接Linux命令行其实都是用起来一样的。(远程连接,但是需要小心谨慎)
如这里xshell 修改IP地址,那肯定是要断开连接的了。比如 关机和重启操作,都很危险。
在Windows当中:通过扩展名来区分文件类型的,一般情况下,每一种软件都有自己的扩展名。而且对于Windows,人家还是可以通过图标来看看是什么文件的 。Linux靠的是文件的权限来区分文件类型的,没有扩展名的概念的。 如上面图示:这些所谓的扩展名仅仅是用来帮助管理员更加直观的管理文件, 使用方便,Linux其实是不需要一定得写上面的扩展名的,没有扩展名,系统人家也可以看出来这是什么文件。
这带来的好处:Windows上大量的病毒和木马都不可以去感染我们的Linux系统;坏处:几乎所有的软件都要针对Linux做单独开发,而不能直接从Windows上拿来就用的。这不是绝对的,有些类型的文件时可以通用的。
4.
把硬件或着设备的 设备文件名(所有的硬件都有文件名,硬件的设备文件名被称作 设备文件名)挂载到 自己的挂载点(当做是盘符来理解)。
挂载:把设备文件名和挂载点连起来的过程。 在Windows上,给分区 光盘 U盘分配盘符的过程可以也看做是 挂载。对于Windows,不管是U盘 硬盘 移动硬盘一旦插入 可以识别出来,就把盘符给它了。在Linux上,分区和硬盘是自动挂载的,对于光盘 U盘 移动硬盘这些设备插入之后,都必须要进行 手工挂载。手工分配盘符,和Windows是一样的。
随着Linux的图形化界面做的很好,插入设备也可以实现自动挂载的。可是绝大多数的Linux服务器是不会给你安装一个图形化界面的,所以在这种字符界面 还是少不了的手工挂载。
不同的两种OS,所以学习Linux,需要转变一下之前的Windows思维方式。
前4个都是和系统命令相关的目录 ,命令对于Linux而言 就是一个个的可执行的二进制文件。bin表示是二进制文件,二进制可执行文件在Linux里面就是命令。Linux的绝大多数的命令都是放在以上的4个目录里面的,除了部分特殊情况。
对于root用户,其命令存放的目录稍有不同。第一个目录里面的所有命令,任何用户都可以执行。第二个目录sbin,只有root才可以执行里面的命令。
第三个目录,和第一个目录的不同在于:它在单用户模式下是不能执行的。这个单用户模式和Windows里面的安全模式几乎是一致的,作用:启用最小的服务 主要是 做修复工作。第一个和第三个目录,所有用户都是可以执行的。前面若是 多上一个 s,则只有root可以执行的。
boot目录:安装的时候,做了单独的分区(200M)。里面保存的是系统启动资源,启动的相关:内核、以及其他相关信息。所以 最好不要在这个目录下面创建数据,目录满了,那你的系统也就起不来了。在系统重要的资源进行备份的时候,需要对这个目录进行备份。
dev目录:保存的是硬件设备文件,包括了一些实际的设备:网卡 硬盘和虚拟的设备(命令的终端)等
etc:默认的配置文件保存目录,在系统重要的资源进行备份的时候,也需要对这个目录进行备份。(系统的配置文件、很多服务的配置文件都是默认在这里的)
家目录:每个用户的宿主目录都是放在/home下面,而且用自己的用户名进行命名。注:root和其他的普通用户是不一样的。
lost+found :这个也不只是存放在根目录下面,每一个独立分区的都有自己的lost+found。(例如 之间的boot分区下面也是有这个lost+found目录的)目的:服务器突然断电,重新启动,可能会产生当时因为异常的关机或重启的情况,才会产生的文件碎片放在这个目录下面。fsck这个命令(文件系统检测修复)。异常断电重启之后,想要去fsck检测修复的时候 所依据的文件碎片都放在lost+found这个 目录下面。
/media 和 /mnt 和/misc都是系统准备的挂载目录(挂载点、盘符),(相当于系统提供的盘符:Linux的目录名称)。只不过这3个都是空的,里面什么也没有(没有挂载设备)。也只有空目录才可以作为挂载点。
opt :外来软件的安装保存位置。
usr是Unix系统的资源文件目录的缩写,local 本地的意思
在usr/local下面 保存外来安装软件。
/proc:和/sys :是存在于内存当中。不要在这里面进行数据的写入,重启之后就失效了。此外,若是把内存写满了 直接死机。
(插上一句题外话:我因为从租房子的地方,换到了图论教室 所用的网络也就更换成了手机热点,当然之前配置的静态IP就不和现在的IPV4 在同一个网段了,不过修复起来也很简单:把昨天的步骤再走上一遍,修改的地方其实也就2 3处而已,有问题大家可以去CSDN上面查找,还是那句话:劝劝自己,增强动手能力 不要总是指望别人来帮助)
好的,开始今天的Linux学习,2019年8月11日09:56:26
/proc 这个目录:存的是当前系统正在运行的进程信息和一些硬件的信息。
/sys 是system的意思:存放的一般 内核的相关信息
/srv 是系统启动之后,产生的一些服务的信息:服务数据目录
/tem 临时目录:默认情况下 在初始安装之后,系统在里面写入了临时文件(都不是必需的),可以把这个目录进行清空。这个目录可以拿来作为练习
(在真正的服务器之上,不要去创建过多的目录。因为这个会使得查找数据的效率大大下降。)
/usr 系统资源目录:存的主要是 系统运行的相关资源数据。在系统重要的资源进行备份的时候,也需要对这个目录进行备份。但是在系统上占据的空间还是比较大的:系统中很多重要的数据都存放在这里。
/var 目录:动态资源保存目录。不断变化的东西:例如 日志、邮件、MySQL的默认库等。