第一章 Linux 初探

第一章 Linux 初探

1、Linux 是什么?

  • Linux 是一套操作系统,多用在服务器领域,不管是跨国际的公司比如Google、还是国内的公司比如BAT,或者是各种中小企业,绝大部分都会用到 Linux 作为服务器的操作系统。为什么这些牛 x 或者不牛x 的公司都用到它作为服务器的操作系统?主要是因为它具有稳定、低成本、安全等等...优点,正好符合作为服务器操作系统的最重要需求,具体请在后面学习以及使用的过程中自行感受!

2、Linux 的诞生

  • 在 20 世纪 70 年代 UNIX 操作系统诞生,它成熟稳定!但是它授权费用昂贵、正常的普通人很难承受得起!1983 年美国程序员理查德·马修·斯托曼(Richard Matthew Stallman) 发起 GNU 计划,目的是创建一个完全自由开放的操作系统。自由是指自由的权利,比如用户可以自由执行、复制、再发行、学习、修改和强化自由软件,不过光说不行,需要有明文规定的许可协议来制约规范大家如何自由使用,这个规定许可协议就是我们熟知的GPL 协议(通用公共许可证)。

关于 GPL 协议具体内容感兴趣的大家可以:

观看:https://www.gnu.org/licenses/licenses.html#GPL

中文翻译: (https://jxself.org/translations/gpl-3.zh.shtml)

  • 到了 1991 年,生于芬兰的 林纳斯·托瓦兹(当时他还是大学生)在网络上发布了 Linux
    内核的源代码,经过了林纳斯·托瓦兹与很多计算机爱好者不断的帮助完善终于在 1994 年 3 月,Linux1.0 版(类 Unix 操作系统即很像 Unix 的操作系统)正式发布,并且采用是 GPL 协议发布的。
  • 发展现状:今天由 Linus Torvalds 带领下,众多开发共同参与开发和维护 Linux
    内核。理查德·斯托曼领导的自由软件基金会,继续提供大量支持 Linux 内核的 GNU 组件。一些个人和企业开发的第三方的非 GNU组件也提供对Linux 内核的支持,这些第三方组件包括大量的作品,有内核模块和用户应用程序和库等内容。Linux社区或企业都推出一些重要的Linux 发行版,包括Linux内核、GNU 组件、非 GNU 组件,以及其他形式的的软件包管理系统软件。

3、常见 Linux 发行版

  • 为了让普通用户能够接触到 Linux,很多商业公司或者团体将 Linux内核包含各种工具和软件以及加上自己公司开发的一些非常实用的工具软件(可以是商用的收费软件),集成起来,让用户可以通过光盘或者其他介质进行安装Linux系统,这个集成了各种工具与软件的操作系统我们称之为Linux 发行版。 常见的 Linux 发行版:

1)Red Hat Enterprise Linux(简称 RHEL)

由著名的 Red Hat 公司提供,是一个商业发行版 Red Hat 公司会向自己的付费客户提供客户服务(理所当然的收费),那有人说我硬是不付费可以使用吗?用是可以用,但是有很多限制,对于学习来说不太方便。
2)CentOS

由于 RHEL 是采用 GPL 协议发布的,所以必须需要发布 RHEL 的源码,CentOS 就是拿RHEL 的源码编译而来的,只是很少的地方稍有改动,比如去掉了 RHEL 的 logo 等专利的事物,以及一些专利软件。2014 年,CentOS 宣布与 Red Hat 合作,但 CentOS 将会在新的委员会下继续运作,并不受RHEL 的影响。
3)Fedora 由红帽公司赞助,Fedora 对于用户而言,是一套功能完备、更新快速的免费操作系统;而对赞助者RedHat 公司而言,它是许多新技术的测试平台,被认为可用的技术最终会加入到 Red Hat Enterprise Linux 中。
4)Ubuntu

5)Debian

6)SUSE

等等...

4、我们选择哪个发行版?

RHEL 是 Red Hat 公司推出的针对企业的 Linux 发行版,可以免费下载,不过想要获取官方授权必须要购买授权(毕竟人家 Red Hat 公司会根据你付的费用提供各种服务的),具体价格请查看别人官网:www.redhat.com,由于RHEL如果未授权在使用上有很多限制,非常不便,所以这里我们推荐大家使用 CentOS 这个发行版,因为他绝大部分和RHEL几乎一样,

的是越来越多的中小公司和大公司使用 CentOS 而不是收费的 RHEL,所以我们本课程所使用的Linux 发行版就是CentOS,这样可以更好的和企业的需求无缝接轨!

PS:学习了 CentOS 之后再去使用其他的 Linux 发行版也是迎刃而解,所以不用再纠结学习哪个发行版了!

5、选择安装 CentOS 的哪个版本?

我们的大部分实验都是在 Centos7 下完成,但是由于很多的企业依然在使用 CentOS6(毕竟已经部署好的产品,如果不是现有系统有重大问题或不能满足新的需求,否则企业不会吃饱了无事生非有新版本就立刻升级的),所以对于CentOS6 内比较重要的且与 CentOS7 不同部分我们会单独拿出来再说下的,CentOS 7 与 CentOS 6 在某些地方改动其实是蛮大的,当然 Linux 最基本的管理操作,不管是哪个版本都是相同的所以不用多想了,跟着一起学习就OK 了!

6、虚拟机

我们会在当前操作系统上安装虚拟机软件,通过虚拟机软件来虚拟出一个或者多个操作系统(与实际的服务器操作起来一样),这样大家在学习时会更加方便!

1)虚拟机软件比较常见的有:

VMware:这个公司有很多关于虚拟化的产品,大部分是收费的,适合企业使用。(见附录1)VirtualBox:唯一一款可以在 GNU 通用公共许可证(GPL)第 2 版中作为开源软件免费获得的专业解决方案、并且苹果的电脑也可以安装这个软件哦,非常不错,感兴趣的可以试试哦!(见附录 2)

2)我们的选择:

我们选择 VMware 提供的 VMware Workstation Player 这个软件,因为这个虚拟软件比较小(当然VirtualBox也非常小,感 兴趣的可以自己去试试),并且可免费的用于个人非商业用途,比较简单但是足够我们这边学习使用。注:Workstation Player 需要配备 64 位处理器和 64 位操作系统,64 位处理器以及 64 位操作系统早就是主流了,如果万一您是 32 位的操作系统可以去试试使用 VirtualBox

3)下载 VMware Workstation Player

下载地址在本课件结尾附录中(见附录 3),大家也可以很容易的自行搜索获得这个软件!

4)安装 VMware Workstation Player

在安装的时候可以按照提示进行立刻重启,不过不立刻重启也不影响我们后面创建虚拟机的工作




5)创建虚拟机

注意网络连接模式:

■ 桥接模式:虚拟机和物理机连接在同一个网络,虚拟机与物理机的关系类似于家里的电脑、手机、都是连接在同一个路由器提供的 Wi-Fi 上。

■ NAT 模式:类似于虚拟机将物理机当成路由器,即虚拟机用过物理机来上网,兼容性很好,不用担心,物理机的

使用环境,只要物理机能上网,虚拟机就能上网,在初步学习 Linux 时建议使用此模式,等后面学完Linux网络设置再使用桥接模式比较利于后面的测试。

■ 仅主机模式:比 NAT 模式更加封闭的的网络连接模式,它将创建完全包含在主机中的专用网络。仅主机模式的虚拟网络适配器仅对主机可见。默认情况下,使用仅主机模式网络连接的虚拟机无法连接到Internet。。。。。。。一顿操作之后。。。。。。

PS:当然配置完成后也是可以随意修改刚才对于虚拟机的硬件信息的!

恭喜!配置完成之后你等于是多了一台与实际电脑几乎一模一样的电脑哦!

6)尝试启动

如果在启动我们创建的虚拟机时看到类似的提示:(没有这个提示的就直接跳过这点吧,跟你没半毛钱关系!)

解决:

BIOS 需要设置为开启 CPU 虚拟化支持(大部分机器默认都是开启的,如果万一没有开启),否则可能会仅允许虚拟出 32 位的操作系统修改方法很简单,重新启动计算机,在刚启动时,根据电脑提示按DEL 或ESC或F12之类的键(不同电脑方法稍有不同,请看开机时的提示或者百度),进入 BIOS,然后进行设置!设置选项类似于下图(不同主板,界面会不同,反正到 CPU 设置那块仔细找)

或者可能是这种界面:

7、安装 centos

现在启动刚才创建的虚拟机来进行安装操作系统的步骤了!

步骤一:启动虚拟机

步骤二:选择安装 Centos 7

步骤三:选择语言(初学者可以选中文,对系统的各方面认识很有好处!)

步骤四:选择安装软件(初学者请选择一个图形界面,这对你的学习会很有帮助)、设置网络(打开)


PS:手动分区等我们在后面的学习过一些基本概念后再和大家介绍,免得什么概念都不知道,一通操作大家也不能理解!
步骤五:安装等待...(设置root 账户密码)、设置 root 账户密码


步骤七:重启后设置接受许可、网络打开(如果之前的 步骤四 里未打开)等等

. 界面:

如果大家安装好后的界面不是中文的可以这样去设置:

如果大家之前没有设置好网络可以确保虚拟机网络设置的是 NAT 模式之后这样去设置:

8、命令行(文本)模式与 X Window(图形界面)切换

服务器通常是纯文字界面的,我们现在刚开始学习使用的是图形界面,那想感受下纯文字界面该怎么切换呢?

通常我们称文本模式为终端机界面(terminal),CentOS7 预设的情况下会提供六个terminal 来让使用者登入(不同的

CentOS 版本略有不同)
切换的方式为使用:[Ctrl] + [Alt] + [F1]~[F6]的组合按钮

六个终端界面如何命名呢 ?

系统会将[F1] ~ [F6]命名为 tty1 ~ tty6 的操作界面环境。

我们这边默认是启动图形界面的,因此这个XWindow将会出现在tty1界面中。

如果你的 Linux 预设使用纯文字界面(虽然安装了图形界面但是并未开启),那么tty1~tty6就会全文字界面占用。

若你在纯文字环境中启动 X视窗,那么图形界面就会出现在当时的那个 tty 上面。

举例来说,你在tty2登入系统,然后输入startx启动个人的图形界面(前提是你必须安装了图形界面), 那么这个图形界面就会产生在tty2上。

9、命令格式

常见命令格式:命令名称 [-选项] [参数 1] [参数 2] ... 说明:

1)这只是常见的命令的大概使用格式,并不是一定就这样的,不过最前面的总归是命令名称或可执行文件,中间用空格隔开(空几格与空一格效果一样)

2)敲下 Enter 键该命令则立刻执行

3)命令太长可以通过\转义 Enter,即可在下一行继续输入。

4)Linux 下严格区分大小写!

5)选项可以连着写,也可以分开来写

PS:这边的命令格式先有个印象即可,无需深究!

10、关机、重启

PS:先了解下 不用深究!

注:做关机或重启前最好执行 who 命令查看有哪些用户目前正在登录这个系统

java 复制代码
shutdown -h now 立刻关机
shutdown -h 10 10 分钟后关机
shutdown -h 16:16 16:16 分关机
shutdown -h +10 10 分钟后关机
shutdown -r now 立刻重启
shutdown -r +10 10 分钟后重启
shutdown -c 取消进行中的 shutdown 内容
shutdown -k 假装要关机,只发送警告消息
reboot 重启
halt -p 关机
poweroff 关机

11、查看当前 centos 发行版 版本

java 复制代码
cat /etc/redhat-release
rpm -q centos-release
lsb_release -r|-a

注:如果提示命令不存在,请先安装 yum -y install redhat-lsb

12、查看当前 Linux 内核版本

java 复制代码
uname -a

13、查看 CPU

java 复制代码
查看 CPU 信息(原版完整信息):
cat /proc/cpuinfo
查看 CPU 型号:
cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c
查看物理 CPU 个数:
cat /proc/cpuinfo | grep "physical id" | sort | uniq | wc -l
查看每物理 CPU 中核数(cores):
cat /proc/cpuinfo | grep "cpu cores" | uniq
逻辑 CPU 总数
cat /proc/cpuinfo | grep -c 'processor'

注:

1)一般情况下 物理 CPU 个数*核数=逻辑 CPU 个数,如果不等,则说明服务器的CPU 支持超线程技术

2)我们在使用或配置 Linux 服务器上的各种服务时都是以逻辑 CPU 的个数为准,即有几个逻辑CPU我们就认为我们的服务器有几个 CPU

14、查看内存

free -m

15、重要快捷键

java 复制代码
Tab 键:自动补全,不仅仅是命令,在 CentOS7 中很多新增的命令连参数都可以自动补全!Ctrl+l:清屏,同 clear
Ctrl+c:终止当前命令
Ctrl+d:输入结束(EOF) 或者 删除光标所在处的字符 或者 退出当前终端(同 exit)Ctrl+z:暂停当前进程,如何恢复以后再说
Ctrl+u/Ctrl+k:删除光标前/后的命令(记忆私房小技巧:u 在键盘里是在 k 的上面,所以删的是前面)
Ctrl+a/Ctrl+e:将光标移动到命令的最前/后面

16、磁盘分区、目录、树形目录结构、挂载、挂载点 等概念(极重要)

很多同学很奇怪,在 Linux 下怎么看磁盘容量以及使用量呢?怎么看不到 C、D、E、F 盘呢?先说下基本的计算机知识,大家可一定要知道哦:

■ 我们先看 windows 下面的思维:

磁盘分区:我们看到的 C、D、E、F 盘等等这些其实是我们在安装操作系统的时候划分出来的磁盘分区,C、D、E、F 这些就是 磁盘分区的名字,磁盘分区在划分的时候是要指定容量大小的,比如我的娱乐机 C 盘截图,它的容量空间是被里面建 立的目录和文件占用的。

而目录呢:目录的作用是有组织的存放文件,目录和文件之间是逻辑上关系,可以无限极的分类。

■ 那 Linux 下面呢?

Linux 下磁盘同样需要分区,和上面的概念是一样的!Linux 下的目录同样,作用也是有组织的存放文件,目录和文件之间是逻辑上关系,可以无限极的分类。

重点来了:有人可能会说:"说了这么多不同的概念点在哪里呢?" Windows 下使用时先看到分区比如 C 盘,然后可以打开,在里面可以新建文件夹或者新建文件。所以windows里所有的目录以及文件宏观上来看并不是一棵树,而是有几个磁盘分区就是有几棵树!画图解释

Linux 下是这样子的:Linux 下的所有目录以及文件宏观上看就是一棵树!这棵树的最顶层,也就是树的根目录,我们用/表示!这时有人会问:那难道 Linux 下只有一个分区就是根分区?这里大家就不能用 Windows 下面的思维来看待 Linux 了!

Linux 下面是这样的:

■ 只有一棵目录树

■ 磁盘分区我们看成现实生活中的存放物品的容器

■ 磁盘分区和目录之间可以看成是用管子接起来的关系!

■ 这个管子接起来的动作 在 Linux 里面有个专业的术语叫挂载

■ 接在哪个目录下,那个目录就称为"挂载点"!

画图解释!

那问一个问题,Linux 下如何知道某个文件到底存放在哪个分区里面(从原理思路上回答即可)?思考一下。。。。。。

17、查看磁盘分区挂载信息

df -h

通常我们称呼一个可被挂载的数据为一个文件系统(初学者可以简单的理解为就是分区)

18、一些目录的作用简介

这边介绍的是系统里面各个目录里面大概放的是什么东西,先做个了解,走马观花,有个印象即可!

PS:不同的 Linux 发行版这方面会略有不同,相同发行版的不同版本比如这边的 CentOS7 与之前的CentOS版本也会略有不同,不过大部分目录结构是相似的(因为会基本遵循 FHS 也就是文件系统层次结构标准),所以不要奇怪!

java 复制代码
/bin
Binary 的缩写,面向所有用户,存放着最经常使用的命令

/sbin
存放 Super User(系统管理员)使用的系统管理命令(程序)

/boot
引导程序文件存放目录(启动 Linux 时使用的一些核心文件)

/dev
Device(设备)的缩写,设备文件目录

/etc
系统配置文件存放目录

/home
用户的家目录

/lib 和/lib64
共享库文件(类似于 Windows 里面的 DLL 文件)存放目录

/media
可移除媒体(如 CD-ROM)的挂载点

/mnt
用于临时挂载设备的目录

/opt
额外安装软件的地方(可选应用软件包存放目录)

/proc
虚拟文件系统,将内核与进程状态归档为文本文件。是系统内存的映射,这里面的内容都是内存里的信息(不占用磁盘空间)

/root
超级系统管理员的家目录

/run
代替/var/run 目录

/srv
是一些服务启动之后,这些服务所需要取用的资料目录,比如 www 服务的网页文件可以放在这里

/tmp
临时存放文件,重要的文件请不要放在这个目录里面

/usr
Unix System Resource 缩写,即 Unix 系统软件资源的放置目录,相当重要!类似windows 下的ProgramFiles 目录

/usr/sbin
非必要的系统二进制文件,例如:大量网络服务的守护进程

/var
/var 就是在系统运作后才会渐渐占用硬碟容量的目录,比如一些日志、MySQL 等软件的数据文件

/var/run
自最后一次启动以来运行中的系统的信息,例如:当前登录的用户和运行中的守护进程。现已经被/run 代替

注:不要厌烦,请把自己当成行走在之前从来没去过的步行街一样,观光下就可以了,不要多想!

19、man(manual)命令查询操作说明

man 命令是 manual 的简写,这个命令相当牛 X,他就是一个字典,可以查到各种命令的使用格式、选项、参数、作用等等!总之遇到没见过的命令或者忘记某个命令怎么拼了直接用 man 来查询即可!

常见用法: man 命令 查阅指定命令的说明文档

注:

java 复制代码
 按 q 键退出帮助文档的查阅

 Page down、Page up 翻页

Home 键回到第一页
End 键去最后一页

/关键字 向下查询该关键字,按 n 继续下一个查询,按 N 是反向
?关键字 向上查询该关键字,按 n 继续上一个查询,按 N 是反向

man -f 命令:列出与指定命令有关的说明文档
man 代号 命令: 可以用来查阅指定的帮助文档
man -k 命令的某个部分:列出那些包含指定关键字的命令的文档

注意:如果是 shell 内置命令用 man 查看帮助可能不直观,比如 cd 命令,这时可以通过 help 命令来查看,这个等

我们讲到 shell 基础那边再详细说吧!

20、附录

附录 1)VMware

官网:www.vmware.com/cn.html

附录 2)VirtualBox

官网:www.virtualbox.org

附录 3)VMware Workstation Player

官方介绍:https://www.vmware.com/cn/products/workstation-player.html

下载:https://my.vmware.com/cn/web/vmware/free#desktop_end_user_computing/vmware_workstation_player/14_0

相关推荐
阿伟来咯~19 分钟前
记录学习react的一些内容
javascript·学习·react.js
Suckerbin41 分钟前
Hms?: 1渗透测试
学习·安全·网络安全
零炻大礼包44 分钟前
【SQL server】数据库远程连接配置
数据库
水豚AI课代表1 小时前
分析报告、调研报告、工作方案等的提示词
大数据·人工智能·学习·chatgpt·aigc
zmgst1 小时前
canal1.1.7使用canal-adapter进行mysql同步数据
java·数据库·mysql
聪明的墨菲特i1 小时前
Python爬虫学习
爬虫·python·学习
随心............1 小时前
python操作MySQL以及SQL综合案例
数据库·mysql
€☞扫地僧☜€1 小时前
docker 拉取MySQL8.0镜像以及安装
运维·数据库·docker·容器
CopyDragon1 小时前
设置域名跨越访问
数据库·sqlite
hjjdebug1 小时前
linux 下 signal() 函数的用法,信号类型在哪里定义的?
linux·signal