目录

引言:

Linux背景

1.发展史

2.Linux操作系统

3.理解开源

4. 认识Linux不同的版本:技术角度+商业角度

5.OS概念,定位

环境安装

购买云服务器

Xshell和多用户

连接云服务器

基本的Linux指令+见见Linux用途

clear

whoami

pwd

adduser

passwd

userdel

Linux用途

编程方面

网络方面

结语


引言:

        我们这里所讲的Linux是一款操作系统,这款操作系统对于我们后端而言,是必然要学的一款操作系统。我们只有把Linux系统和Linux网络搞懂了,才能写出点有规模的项目。我会分俩个专栏来讲Linux——Linux系统和系统编程、Linux网络和网络编程

        Linux系统编程部分会涉及到进程管理,线程管理,文件系统,一部分内存管理相关的话题,是一半理论,一半实操,这和我们先前所讲的C++之类的不同,那些主要是以实操为主,理论为辅,但是Linux系统编程这块前期是需要很多理论进行铺垫的

        Linux网络编程部分也是一半理论,一半实操

        

        本篇作为 Linux 专栏开篇,将重点讲解前置基础知识:Linux 发展史、环境部署、Xshell 远程工具使用与 Linux 多用户机制;随后介绍常用基础指令,并演示 C/C++ 代码在 Linux 中的编译运行流程。我们这里主要用的环境是Centos7+Ubuntu 20.02/22.04(我们前期的语言是C + vim,等到切换到Ubuntu后就会切换成C++ + VSCode),话不多说直接进入正文——————>

                                        


Linux背景

1.发展史

我们从计算机和操作系统俩方面的发展来看,首先是 计算机的发展如下图

随着计算机的发展,但计算机一定有输入-》计算-》输出这样的一个设备,这个设备随着历史发展在不断变化,一开始的埃尼阿克是用那种二进制开关来输入,输出的话当时都有简单的显示策略

随着计算机不断从大型化编程小型化,那么一定会面临的问题就是计算机一定会变得很复杂,这个时候计算机计算的速率就会极大提升,那么,一次流程如果只需要0.001秒就能完成的话,问题就不在计算机上了,而在人上了,这个时候计算机就必须得提供同时支持多人上传数据进行计算,这个时候就不是人去排队了,而变成了一个个的程序去排队

这就注定了计算机变得复杂除了计算机硬件本身,也表现在另一个方面,操作系统的诞生,所以当时候一个个排着队的人,就变成了现在一个个的进程

操作系统诞生时,最具代表性的就是Unix,这个用的是汇编语言(因为当时语言特别少),随后因为C语言的出现,Unix操作系统进行了重写

从这时候开始,俩条线就出现了交集,如下

注:所有操作系统刚诞生的时候,都是没有图形化界面的,所以林纳斯托瓦兹还是非常NB的(编写Linux的时候还是大学生),之后我们讲Linux的时候也是不采用图形化界面,采用命令行

所以,Linux就在这个时代背景治下,诞生了

2.Linux操作系统

Linux操作系统采用的是部分汇编(这部分占比很少)+C语言编写的操作系统

Linux操作系统 是开源 的操作系统 ——源代码公开(免费获取)

注意:整个Linux操作系统的内核的源代码是公开的,可以随便拿,但不代表Linux操作系统本身可以随便拿而且免费,这不一定,因为有些操作系统本身是收费的

获取Linux内核的简单官方网站是这个The Linux Kernel Archives

想获取开源的源代码很简单,去对应的网站里找就可以了,如下图

看内核主要是为了讲原理,然后讲2.6版本是因为匹配的书会多一些

3.理解开源

        开源对应的是闭源,就比如我们自己写的代码,不给别人看,就相当于是闭源。那么

        为什么要开源有很多理由,一般一个软件是开源的,要么是为爱发电,商业角度而言,如果前人已经占据了很多市场,这种时候 ,落后的一方就得用一种方法来迅速占有市场——即开源(掀桌子),这个具体可以去了解谷歌和苹果的例子,苹果将操作系统转入小型计算机(手机)比谷歌快,占据了大片市场,谷歌就收购了一家同样做这个类型的公司,并将代码开源,从此,就诞生了安卓,小米等等手机品牌共同对抗苹果

       

        开源之后,会有很多顶级的工程师,黑客,愿意参加这个项目

这个其实很多人是理解不了的。我分俩点来讲

第一点:这里举个小例子,就比如社会中的志愿者,志愿者给报酬吗,不给,那为什么又有那么多志愿者呢,除开想要志愿时长的,大部分都是愿景驱动——也就是为爱发电,因为操作系统本来就是改变世界的软件,那么,只要参与了,我也就是改变世界的人,所以有很多的顶级工程师,黑客是愿景驱动的

第二点:这些顶级的工程师和黑客,他们大多都不缺钱,一般不缺钱,下一个要追求的肯定就是愿景了

第三点:不认同闭源软件的理念的工程师

那么在这种条件的支持下,就会有很多顶级工程师去参加这个项目

        开源VS闭源,OS谁的更好呢(性能,稳定性,安全性等等)

首先,性能不好,操作系统不稳定,安全性差都叫做操作系统的bug,所以一个操作系统究竟好不好宏观上看就是bug少不少(前期是发现bug能力很强)

我们先看开源的情况

  1. 有很多人盯着/使用,容易发现
  2. 发现bug 和 造成bug,解决bug的人之间,都没有利益冲突(重要)

在这俩个的条件下 ,发现bug会很容易发现,解决bug也会非常及时

闭源的情况

因为是闭源的,所以只有内部的人才能看到源码等,那么相比于开源,使用的人就会少很多,相比开源就会难发现

然后就是开源的第二点,当测试的人发现bug的时候,因为公司里面这种项目肯定是分工的,那么既然发现了bug,就要去找是哪里出了问题,找到 Bug 的人害怕追责,编写代码的开发者会因为暴露缺陷受到职场惩罚,这存在利益冲突,而且,如果测试的人没有测试出bug,用户使用的时候出现bug了,反馈回来还是需要改,但是因为是分工问题,出现bug部分的代码,了解的就那么几个人。之后如果人员变更,维护的难度只会更大

所以闭源的情况下,解决和发现bug都不是很及时

这也就导致了开源的OS比闭源的OS修复发现bug更快,所以开源的OS更好

这也是为什么Linux明明比苹果,微软出的晚,但是现在很多公司用的是Linux的原因

Linux是企业后端选择操作系统的首选

因为他开源(内核,高效,稳定,安全)——最主要的是安全,我这个安全指的是数据层面上的安全,源代码公开,我们可以知道底层到底干了什么,我们可以确认不存在隐藏的数据上传,秘密窃取逻辑,但是闭源的操作系统里面究竟干了什么,我们不知道

4. 认识Linux不同的版本:技术角度+商业角度

首先我们要知道,不同种类的操作系统——是由使用它的大量的用户进行区分的,这也是为什么我们国家一开始不做操作系统的原因,因为相比于生态已经很完善的Linux这类系统,我们就算实现出来了操作系统,也很少有人会放弃Linux不用,去用我们刚开发出来的,生态不完善的操作系统。像华为,就是先把手机做大,随后把他们所研发的操作系统放入他们的手机之中,这样他们的操作系统的使用者就会大量涌入,随着不断的更新迭代,生态也会逐渐完善。

技术角度:内核版本 2.6.32  7.X.X ....

商业角度:ubuntu,kail,centos/redhat,红旗......

商业角度中的这些不同的操作系统对于技术角度中的内核版本其实是一样的

分这么多种操作系统是为了满足不同场景用户的需求

认识Liinux的内核版本名称

        主版本号就是在发生大量修改的时候会更新,次版本号就是在发生比较多的修改的时候会更新,奇数时候是测试版本,偶数时候是稳定版本,然后修订次数就是发布后修改的次数,随后那一条就是打补丁解决点问题,最后的x86_64就是体系结构,简单的说就是用在哪个环境里。这是centos 7查出来的版本号,这也是为什么centos 7是企业级,Ubuntu更面向学生,因为Ubuntu不需要那么多信息,像打补丁,版本号,体系结构一般都是工程师去关心的

        知道了这个后,我们就可以看看自己手机的内核了,就以我的手机为例

        我这个手机就是主版本6,次版本6,修订了89次

商业版本不仅自己会更新,还会随着技术版本的更新而更新

注意在选择操作系统的时候,尽量不要选择最新的,因为我们衡量操作系统好坏无非就是性能。稳定性,安全性。安全性都一样,因为源代码都是公开的,所以就是在性能和稳定性上,这俩个优先考虑的是稳定性,因为性能不会差别特别大,但是稳定性很关键,不能时不时就挂了。最新的操作系统问题暴露是需要时间的

这就和我们平时用的手机电脑一样,有时候我们手机电脑一更新,就会遇到很多恶心的东西,所以选择操作系统也是同理 

5.OS概念,定位

        使计算机更好⽤! 这是操作系统的根本要义


环境安装

关于Linux环境的安装,我们一般有三种做法

  1. 双系统——严重不推荐(就是在一台笔记本上装俩个操作系统)
  2. 虚拟机——不太推荐(安装时会有很多问题,需要操作系统镜像,装比较麻烦,之后讲Linux网络的时候,在没网络知识的情况下,虚拟机入网也是个问题)——这个可以在之后Linux有所了解后再装,网络部分讲的差不多之后就可以把我们自己的虚拟机也变成一台云服务器
  3. 云服务器——推荐(仿真的环境,就是进入企业之后的真实环境)

然后云服务器我比较推荐的是腾讯云,阿里云,华为云,买的时候哪个便宜买哪个就好了(买轻量级应用服务器,可以让我们访问到的)

注:windows有他自己的PowerShell,这个打开后也就相当于是类似支持Linux命令,Windows现在已经支持Linux命令了,但是这个环境跟我之后用的环境不太一致,未来网络测试的时候也不太方便

购买云服务器

我这里就以腾讯云为例

1.进入官网后,搜校园,随后点云+校园

2.随后选轻量应用服务器进行购买(需要学生认证)

镜像选CentOS 7.6

3.然后购买完之后,可以在控制台找到我们买的云服务器

4.云服务器点进去后,我们就能看到服务器的IP地址,IPV4后面的地址就是公网ip地址,这个公网ip很重要,稍后我们会用使用这个ip登录服务器

5.设置root密码:勾选服务器,点击重置密码,root密码建议设置的稍微复杂一点,否则容易被黑客入侵

Xshell和多用户

        那么,云服务器买完了,在哪呢,怎么访问呢,我这里推荐用Xshell来访问(这个如果是学生 是免费的)

        这个直接搜Xshell官网去下载就可以了,下载安装的时候选择 “home/school” 则为免费版本。这是下载地址家庭/学校免费 – NetSarang Website

安装完之后就是它

连接云服务器

我先开个标签,如果前面显示的是C盘,这就代表xshell并没有连接到云服务器

这个时候,我们连接云服务器就需要我们上面所讲的公网ip地址,按照下面的格式

ssh root@公网IP地址

接下来弹出的弹窗点接受(只有第一次连接会弹)

接受后,我们再连接一次服务器,就不会跳出上面那个了,会跳出这个,需要你登录(如果上面是灰的,下面是白的,就说明root密码没有重置,重置一下就好了

        如果连接成功了,前面就不是C盘了,会变成root@一个主机名

        

        其实cmd也能连接服务器,如下(输密码时候是不会显示出来的

        这就连接成功了,这也反应了xshell是一个远程终端软件

终端软件我们其实已经接触过了,比如VS2022之类的,我们运行的时候会弹出个黑框,那个就是终端,xshell和cmd也是终端,只是是装在Windows里的。甚至我们在手机上也能装个终端软件

总结一下上面步骤

  1. 挑选最便宜的云服务器
  2. 找到你的云服务器实例,找到你的公网IP地址
  3. 云服务器实例——重置root密码
  4. 下载并 安装 xshell 或者其他登录软件(xshell就是一个终端软件)
  5. 开始登录。。。。。

windows和linux都有一个特点:多用户操作系统(一台linux能被多个人使用)

简单的说就是,只要会在云服务器上新建用户,那么就可以进行多用户使用了(也就是下面讲的adduser)

所以如果能嫖到朋友的服务器的话,自己就不用买服务器了

基本的Linux指令+见见Linux用途

clear

清屏

执行后就清屏了

whoami

显示登录云服务器的账号

pwd

显示用户当前所在的目录

adduser

新建用户

passwd

设置密码,直接passwd回车的话是给root设置密码,指定的话要在passwd后面跟上用户名

接下来输入密码,注意:这里和cmd终端一样,密码不回显

你输密码的时候,他会给你对应的反馈,比如第一次设置反馈就是长度太短,第二次反馈就是不能全是数字,然后当你输入满足条件的密码之后,会再让你输入一次密码,如果俩次密码一样,这个时候用户就创建好了

所以新建用户是很简单的,只需要adduser再passwd就可以了

注意密码一定要设置的越复杂越好,因为网上有专门破解云服务器密码的人,破解后会在你的云服务器里挖矿,做违法的事等等

创建完用户后,系统里就会多一个账号,这个账号放下个篇章再讲,在home目录里就会多一个用户,如下,这个指令不用管

那么,新用户有了,怎么实现多用户使用呢

很简单,我们先前连接服务器的时候是 ssh root@公网IP地址,现在只需要 ssh 用户名@公网IP地址就可以了,这样,别人也就可以用这个服务器了

userdel

用于删除用户,后面-r不能少,这个-r是选项,具体在Linux基本指令篇章了再说

所以,通过这边我们可以发现root账号可以新建用户,改账密,删除用户,所以,root账号又被称为是Linux服务器上的管理员账号

Linux用途

        这个不好演示,所以就用文字表述下,之后学到后面你们自然会知道了

编程方面

        可以在Linux上编写代码

网络方面

        客户端发的消息云服务器可以接收,那么,自然就可以实现消息的传递,资源的下载,图片的上传等等(这也是为什么要买云服务的原因),这些在网络编程部分会讲


结语

        这篇的主要目的是为了让你们了解Linux相关的历史,然后提供了源代码获取的方案,也讲解了下闭源和开源,然后谈了Linux相关的版本,最后是环境的安装和一些基本的指令

        那么,Linux初识部分的内容就全部讲解完毕啦,希望以上内容对你有所帮助,感谢观看,若觉得写的还可以,可以分享给朋友一起来看哦,毕竟一起进步更有动力嘛,当然能关注一下就更好啦。

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐