Linux自学教材(Linux入门教程)
Linux是一个开源、免费的操作系统,其稳定性、安全性、处理多并发已经得到 业界的认可,目前很多企业级的项目都会部署到Linux系统上。
本章主要介绍Linux系统特点与在虚拟机VmWare上安装CentOs7的步骤,在此基础上掌握Linux系统命令的格式已经常用的一些系统命令。为了方便以后Linux课程的学习,安装过Linux系统后首先要配置网络和关闭防火墙,本章也对这两块进行了讲解。
1.1 Linux是什么
Linux,全称GNU/Linux,是一种免费使用和自由传播的类UNIX操作系统,其内核由林纳斯·本纳第克特·托瓦兹于1991年10月5日首次发布,它主要受到Minix和Unix思想的启发,是一个基于POSIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的Unix工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。Linux有上百种不同的发行版,如基于社区开发的debian、archlinux,和基于商业开发的Red Hat Enterprise Linux、SUSE、Oracle Linux等。
1.1.1 操作系统概述
操作系统(Operating System,OS)是指控制和管理整个计算机系统的硬件和软件资源,并合理地组织调度计算机的工作和资源的分配;以提供给用户和其他软件方便的接口和环境;它是计算机系统中最基本的系统软件。
操作系统的三点作用:
- 作为用户与计算机硬件系统之间的接口。
- 作为计算机系统资源的管理者。
- OS实现对计算机资源的抽象
操作系统的特征:
- 并发
重点:并发和并行的区别:
并发:指两个或多个事件在同一时间间隔内发生。这些事件宏观上是同时发生的,但微观上是交替发生的
操作系统的并发性指计算机系统中“同时”运行着多个程序,这些程序宏观上看是同时运行着的,而微观上看是交替运行的。
操作系统就是伴随着“多道程序技术”而出现的。因此,操作系统和程序并发是一起诞生的。
并行:指两个或多个事件在同一时刻同时发生。
- 共享
共享即资源共享,是指系统中的资源可供内存中多个并发执行的进程共同使用。
- 虚拟
虚拟是指把一个物理上的实体变为若干个逻辑上的对应物。物理实体(前者)是实际存在的,而逻辑上对应物(后者)是用户感受到的。
- 异步
异步是指,在多道程序环境下,允许多个程序并发执行,但由于资源有限,进程的执行不是一贯到底的,而是走走停停,以不可预知的速度向前推进,这就是进程的异步性。
如果失去了并发性,即系统只能串行地运行各个程序,那么每个程序的执行会一贯到底。只有系统拥有并发性,才有可能导致异步性。
1.1.2 Linux简介
Linux是一种免费使用和自由传播的类UNIX操作系统。出现于1991年,最初是由芬兰赫尔辛基大学学生李纳斯·托瓦兹(Linus Torvalds),为了方便下载学校网站的一些视频与新闻资料,自己开发的一套程序,后来随着众多开发爱好者的加入,逐步完善发展。后来加入了美国自由软件基金组织协会。
图1.1 李纳斯·托瓦兹
不同于微软的windows在桌面操作系统的统治地位,大多数公司主要使用Linux用作后端服务器操作系统。据Linux基金会的研究,86%的企业已经使用Linux操作系统进行云计算、大数据平台的构建,目前,Linux已开始取代Unix成为最受青睐的云计算、大数据平台操作系统。
另外,当前炙手可热的手机端操作系统安卓(android),也是基于Linux内核开发的。
1.1.3 Linux vs Windows
目前国内 Linux 更多的是应用于服务器上,而桌面操作系统更多使用的是 Windows。主要区别如下:
表1.1 Windows和Linux的比较
比较 | Windows | Linux |
界面 | 界面统一,外壳程序固定所有 Windows 程序菜单几乎一致,快捷键也几乎相同 | 图形界面风格依发布版不同而不同,可能互不兼容。GNU/Linux 的终端机是从 UNIX 传承下来,基本命令和操作方法也几乎一致。 |
驱动程序 | 驱动程序丰富,版本更新频繁。默认安装程序里面一般包含有该版本发布时流行的硬件驱动程序,之后所出的新硬件驱动依赖于硬件厂商提供。对于一些老硬件,如果没有了原配的驱动有时很难支持。另外,有时硬件厂商未提供所需版本的 Windows 下的驱动,也会比较头痛。 | 由志愿者开发,由 Linux 核心开发小组发布,很多硬件厂商基于版权考虑并未提供驱动程序,尽管多数无需手动安装,但是涉及安装则相对复杂,使得新用户面对驱动程序问题(是否存在和安装方法)会一筹莫展。但是在开源开发模式下,许多老硬件尽管在Windows下很难支持的也容易找到驱动。HP、Intel、AMD 等硬件厂商逐步不同程度支持开源驱动,问题正在得到缓解。 |
使用 | 使用比较简单,容易入门。图形化界面对没有计算机背景知识的用户使用十分有利。 | 图形界面使用简单,容易入门。文字界面,需要学习才能掌握。 |
学习 | 系统构造复杂、变化频繁,且知识、技能淘汰快,深入学习困难。 | 系统构造简单、稳定,且知识、技能传承性好,深入学习相对容易。 |
软件 | 每一种特定功能可能都需要商业软件的支持,需要购买相应的授权。 | 大部分软件都可以自由获取,同样功能的软件选择较少。 |
1.1.4 Linux 应用领域
今天各种场合都有使用各种 Linux 发行版,从嵌入式设备到超级计算机,并且在服务器领域确定了地位,通常服务器使用 LAMP(Linux Apache MySQL PHP)或 LNMP(Linux Nginx MySQL PHP)组合。
目前 Linux 不仅在家庭与企业中使用,并且在政府中也很受欢迎。
- 巴西联邦政府由于支持 Linux 而世界闻名。
- 有新闻报道俄罗斯军队自己制造的 Linux 发布版的,做为 G.H.ost 项目已经取得成果。
- 印度的 Kerala 联邦计划在向全联邦的高中推广使用 Linux。
- 中华人民共和国为取得技术独立,在龙芯处理器中排他性地使用 Linux。
- 在西班牙的一些地区开发了自己的 Linux 发布版,并且在政府与教育领域广泛使用,如 Extremadura 地区的 gnuLinEx 和 Andalusia 地区的 Guadalinex。
- 葡萄牙同样使用自己的 Linux 发布版 Caixa Mágica,用于 Magalh?es 笔记本电脑和 e-escola 政府软件。
- 法国和德国同样开始逐步采用 Linux。
1.1.5 Linux 发行版本
Linux 的发行版说简单点就是将 Linux 内核与应用软件做一个打包。
目前市面上较知名的发行版有:Ubuntu、RedHat、CentOS、Debian、Fedora、SuSE、OpenSUSE、Arch Linux、SolusOS 等。
图1.2 Linux主流发行版本
1.1.5 CentOS
CentOS是基于Linux内核的100%免费的操作系统,多用于服务器系统,CentOS的存在是为了提供一个免费的企业级计算平台,并努力与其上游源Red Hat保持100%的二进制兼容性。
CentOS(Community enterprise Operating System),在 2004 年 5 月发布,是基于 Linux 内核的 100%免费的操作系统。它完全来自 Red Hat Enterprise Linux(RHEL)发行版。CentOS 的存在是为了提供一个免费的企业级计算平台,并努力与其上游源 Red Hat 保持 100%的二进制兼容性。
图1.3 CentOS商标
CentOS 是最受欢迎的 Web 服务器 Linux 发行版,其中近 30%的 Linux 服务器使用它。CentOS 是基于 Red Hat Enterprise Linux 的企业级 Linux 发行版。根据 GPL 许可证,Red Hat 免费向公众提供 Linux 发行版的来源。CentOS 重新命名这些来源并自由分发。CentOS 完全符合 Red Hat 的上游分发政策,旨在实现 100%二进制兼容。CentOS 产品的分销完全符合红帽的再分配政策。
通过安全和维护更新,每个 CentOS 版本都支持 7 年。每两年发布一个新的 CentOS 版本,每个版本每 6 个月定期更新一次,以支持更新的硬件和地址漏洞。这将带来安全,低维护,可靠,可预测和可重现的 Linux 环境。
CentOS 专用 Linux 服务器和发行版由核心开发人员团队开发,这些开发人员由全球各地的系统管理员,网络管理员,企业用户,经理,核心 Linux 贡献者和 Linux 爱好者组成的用户社区提供支持。
CentOS 致力于:
- 创建易于维护的解决方案。
- 适用于长期生产环境。
- 用户和软件包维护者友好的环境。
- 长期支持核心。
- 积极致力于开发其他解决方案。
- 强大的社区基础设施。
- 开放的管理政策。
- 一个开放的商业模式。
- 通过其合作伙伴供应商(如 Vault Networks)提供商业支持。
1.2 安装CentOS7
1.2.1 认识虚拟机
虚拟机(Virtual Machine)指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。虚拟系统通过生成现有操作系统的全新虚拟镜像,它有真实windows系统完全一样的功能,进入虚拟系统后,操作都是在这个全新的独立的虚拟系统里面进行,可以独立安装运行软件,保存数据,有自己独立桌面,不会对真正的系统产生任何影响 ,且具有能够在现有系统与虚拟镜像之间灵活切换的一类操作系统。虚拟系统和传统的虚拟机(Parallels Desktop,Vmware,VirtualBox,Virtual pc)不同在于:虚拟系统不会降低电脑的性能,启动虚拟系统不需要像启动windows系统那样耗费时间,运行程序更方便快捷;虚拟系统只能模拟和现有操作系统相同的环境,而虚拟机则可以模拟出其他种类的操作系统;而且虚拟机需要模拟底层的硬件指令,所以在应用程序运行速度上比虚拟系统慢得多。
安装虚拟机能够方便的帮助我们学习Linux系统。当下最流行的虚拟机产品分成三种,VMwareWork Station , Oracle VM VirtualBox , 微软虚拟机。在本书中使用的是VMWareWork虚拟机:
1.2.2 安装虚拟机
打开安装包
点击“下一步”:
接受协议,然后点击“下一步”:
安装位置可以选择更改,也可以选择不更改,然后点击“下一步”:
这一步选择默认选项就可以,然后点击“下一步”:
点击“下一步”:
然后点击“安装”,安装完成后输入许可证:
然后点击“输入”安装完成:
安装完成后在桌面上可以发现VMware的图标:
1.2.3 下载CentOS7并安装
访问
https://www.centos.org/download/网址:
然后跳转到如下界面:
然后随便点击上面红框中的一个镜像,以第一个华为云镜像为例:
我们下载最小版。
下面开始打开VM ware虚拟机 ,在虚拟机中安装Linux cent os 7:
打开“虚拟机”添加窗口:
选择“典型”然后点击下一步:
点击“浏览”选择我们下载好的cent os 7 文件:
点击“下一步”:
然后点击“下一步”:
这两项保持默认值即可,然后点击“下一步”:
打开“自定义硬件”可以看到默认的虚拟机操作系统硬件信息,不需要做更改,保持默认即可:
然后点击“完成”开始安装cent os7。
进入安装界面之后,
移动光标到虚拟机界面内部,然后按键盘上下箭头选中”Install ContOS 7”,点击回车键开始安装,中间不要做任何操作,直到出现如下界面:
语言作为初学者可以先选择“中文” “简体中文”,然后点击”继续”:
此处不能点击“开始安装”,需要先点击“安装位置”:
选择唯一的“本地标准磁盘”分许方式默认采用”自动配置分区”即可,然后点击”完成”:
现在就可以点击“开始安装”进行安装了。
在安装过程中,可以为系统超级管理员账户ROOT设置密码,并创建一个普通账户。
先设置ROOT密码:
这里密码我们为了好记,设置为root,因为密码太短,需要点击两次“完成”进行确认:
然后再创建一个普通用户:
全名和用户名都设置为test,密码同样为了好记设置为root,同样点击两次“完成”完成创建。剩下的时间,等待系统安装完成。
安装完成界面:
点击“重启”,中间不做任何操作,跳转到系统登录界面:
输入我们刚才创建的用户test,然后输入密码root进行登录,注意 输入密码 屏幕上不会有任何提示,这是正常的:
登录成功,至此 cent os 7安装完成。
1.3 常用操作
1.3.1 命令格式与帮助
command [options] [arguments]
command:命令
options: --单词全称 或 -单字简称
如: ls --all 等于 ls -a
ls -a -b -c 等于 ls -abc
注:linux命令区分大小写。
1.3.2 关机与重启
在命令行执行shutdown now或者poweroff命令会让系统关机
在命令行输入reboot命令可以重启系统:
1.3.3 挂起虚拟机
有的时候我们系统启动后,可能已经开启了很多服务或者软件,下次再启动虚拟机我们希望系统还保持关机时的状态,那些服务或者软件就不用再重新启动一次了。VM ware可以通过挂起虚拟机很简单的实现这种操作。
比如现在我已经登录过test用户,现在选中导航栏中的cent_os_01,右键然后选择“电源”选择“挂起客户机”:
挂起之后,下次VM ware再使用,我们可以直接选中选中虚拟机,然后点击“继续运行虚拟机”,就可以恢复到我们虚拟机关闭时的状态了:
恢复完成后,虚拟机中的test用户还处于登录状态:
1.4 网络和防火墙配置
1.4.1 网络配置
查看IP地址
CentOS安装好之后,可以通过ip addr命令查看本虚拟机系统的固定IP地址:
系统安装好之后默认会出现两块网卡,lo是本地回环接口,当我们使用127.0.0.1来访问本机服务时,默认会使用该网卡。ens33就是我们要和外界互联的网卡,由于我们还没有给当前系统设置固定IP地址,所以现在ens33网卡还没有一个固定IP。
设置固定IP地址
我们如果要设置固定IP地址,首先需要使用su(switch user)命令切换到管理员账户root:
然后使用vi文本编辑器命令修改
/etc/sysconfig/network-scripts/ifcfg-ens33文件
打开ifcfg-ens33文件后,修改如下内容:
注意,这里介绍一些用到的vi操作,可以使用箭头移动光标,输入i往光标处插入文字,按ESC键,退出输入。
另外网关即GATEWAY的地址可以在虚拟机的如下位置进行查看,在菜单栏点击“编辑”,然后点击“虚拟网络编辑器”:
然后选中NAT模式,再点NAT设置,在打开的窗口中查看网关地址。
查看到网关地址之后,IP地址即IPADDR的网段必须和网关地址的网段一致(网段即ip地址以小数点分割后的前三部分),最后一部分可选的值为1到255,但不能是2,是2就和网关地址重复了。
配置完静态ip之后,输入冒号让vi进入到底行模式,然后输入wq保存修改:
设置完固定ip之后,我们需要必须在命令行执行systemctl restart network命令重启网络服务才能让配置立刻生效:
然后再输入ip addr重新查看ens33网卡的ip:
现在已经能够看到ens33网卡的固定ip了,至此,固定IP配置完成。由于刚才我们也配置了DNS,现在也可以通过ping命令来测试是否虚拟机能够连接互联网,我们可以ping一下百度:
1.4.2 防火墙配置
在企业内部如果已经有外部防火墙的情况下,我们可以选择吧linux系统自带的防火墙关闭。另外对于我们学习阶段,关闭防火墙也能够使得以后多个虚拟机能够相互访问服务变的比较方便。
我们如果要操作linux系统自带的防火墙,也必须切换到root用户下。
操作防火墙的命令格式为
systemctl status/start/stop/restart/ enable/disable firewalld |
status 查看当前防火墙状态
start 启动防火墙 下次重启失效
stop 关闭防火墙 下次重启失效
restart 重启防火墙
enable 启用防火墙
disable 禁用防火墙
首先,我们先查看当前系统的防火墙状态:
当前防火墙处于启动状态。
然后我们可以关闭防火墙,再查看防火墙状态:
现在防火墙已经关闭,但是使用stop子命令下次重启后下次重启防火墙又会重新打开,我们可以使用disable子命令 永久禁用防火墙:
这样下次再重启系统 防火墙就不会再打开了,如果要启用防火墙可以执行enable子命令。
1.5 本章小结
1.6 理论试题与实践练习
文件和目录管理
2.1 系统目录结构
2.1.1 系统目录结构
登录系统后,在当前命令窗口下输入命令:
ls / |
你会看到如下图所示:
树状目录结构:
以下是对这些目录的解释:
/bin
bin 是 Binaries (二进制文件) 的缩写, 这个目录存放着最经常使用的命令。
/boot
这里存放的是启动 Linux 时使用的一些核心文件,包括一些连接文件以及镜像文件。
/dev
dev 是 Device(设备) 的缩写, 该目录下存放的是 Linux 的外部设备,在 Linux 中访问设备的方式和访问文件的方式是相同的。
/etc
etc 是 Etcetera(等等) 的缩写,这个目录用来存放所有的系统管理所需要的配置文件和子目录。
/home
用户的主目录,在 Linux 中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的,如上图中的 alice、bob 和 eve。
/lib
lib 是 Library(库) 的缩写这个目录里存放着系统最基本的动态连接共享库,其作用类似于 Windows 里的 DLL 文件。几乎所有的应用程序都需要用到这些共享库。
/lost found
这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。
/media
Linux 系统会自动识别一些设备,例如U盘、光驱等等,当识别后,Linux 会把识别的设备挂载到这个目录下。
/mnt
系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在 /mnt/ 上,然后进入该目录就可以查看光驱里的内容了。
/opt
opt 是 optional(可选) 的缩写,这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的。
/proc
proc 是 Processes(进程) 的缩写,/proc 是一种伪文件系统(也即虚拟文件系统),存储的是当前内核运行状态的一系列特殊文件,这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。
这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件,比如可以通过下面的命令来屏蔽主机的ping命令,使别人无法ping你的机器:
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all |
/root
该目录为系统管理员,也称作超级权限者的用户主目录。
/sbin
s 就是 Super User 的意思,是 Superuser Binaries (超级用户的二进制文件) 的缩写,这里存放的是系统管理员使用的系统管理程序。
/selinux
这个目录是 Redhat/CentOS 所特有的目录,Selinux 是一个安全机制,类似于 windows 的防火墙,但是这套机制比较复杂,这个目录就是存放selinux相关的文件的。
/srv
该目录存放一些服务启动之后需要提取的数据
/sys
这是 Linux2.6 内核的一个很大的变化。该目录下安装了 2.6 内核中新出现的一个文件系统 sysfs 。sysfs 文件系统集成了下面3种文件系统的信息:针对进程信息的 proc 文件系统、针对设备的 devfs 文件系统以及针对伪终端的 devpts 文件系统。该文件系统是内核设备树的一个直观反映。当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中被创建。
/tmp
tmp 是 temporary(临时) 的缩写这个目录是用来存放一些临时文件的。
/usr
usr 是 unix shared resources(共享资源) 的缩写,这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于 windows 下的 program files 目录。
/usr/bin
系统用户使用的应用程序。
/usr/sbin
超级用户使用的比较高级的管理程序和系统守护程序。
/usr/src
内核源代码默认的放置目录。
/var
var 是 variable(变量) 的缩写,这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。
/run
是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。如果你的系统上有 /var/run 目录,应该让它指向 run。
2.1.2 绝对路径与相对路径
我们知道Linux的目录结构为树状结构,最顶级的目录为根目录 /。其他目录通过挂载可以将它们添加到树中,通过解除挂载可以移除它们。在开始本教程前我们需要先知道什么是绝对路径与相对路径。
- 绝对路径
路径的写法,由根目录 / 写起,例如: /usr/share/doc 这个目录。
- 相对路径
路径的写法,不是由 / 写起,例如由 /usr/share/doc 要到 /usr/share/man 底下时,可以写成: cd ../man 这就是相对路径的写法。
2.2 文件管理的命令
2.2.1 文件管理的命令
ls(列出目录)
功能描述:显示文件目录
语法: ls 选项 [-ald] [文件或目录]
-a 显示所有文件,包括隐藏文件
-l 详细信息显示
-d 查看目录属性
示例1:显示根目录/下所有文件:
示例2:显示当前目录所有内容
示例3:显示/usr目录下所有文件
示例4:以列表的方式显示/usr目录下所有文件的信息
cd(切换目录)
功能描述:切换目录
语法: cd 目录绝对路径或者相对路径
示例1:切换到根目录
示例2:以绝对路径的方式进入/dev目录
示例3:返回上级目录
示例4:以相对路径的方式进入/dev目录
pwd(打印当前目录)
功能描述:显示当前所在的工作目录
语法: pwd
示例1:
touch(创建文件)
功能描述:创建空文件
语法:touch [文件名1[,文件名2,文件名3...]]
示例1:返回上级目录