你知道Linux操作系统的前世今生吗?Linux系统又该如何搭建呢?

文章目录

  • 前言
  • 1. Linux 是什么
    • 1.1 Unix & Linux 发展历程图
    • 1.2 Linux 的发展
    • 1.3 Linux 的发行版
  • 2. Linux 环境搭建
    • 2.1 环境搭建方式
    • 2.2 使用云服务器
  • 3. 使用终端软件连接到 Linux
    • 3.1 什么是终端软件
    • 3.2 下载安装 XShell
    • 3.3 使用 XShell 登陆主机
  • 总结


前言

可能很多人都会有一个疑问, 真正的搞出一个网站来, 是如何让这个王章被别人访问到的? 如 Tomcat 服务器, 难道其他人都能使用 127.0.0.1:8080 来访问到你的网站吗? 答案显然不是的. 这就需要我们通过搭建服务器来实现了 (或购买云服务器), 而服务器中的操作系统绝大多数都是使用的 Linux 系统, 与我们通常使用的 Windows 差异很大, 是通过命令行进行操作的. 那么 Linux 是如何诞生的呢? 又是如何发展至今的? 本文来聊一聊.

关注收藏, 开始学习吧🧐


1. Linux 是什么

Linux 是一个操作系统, 和 Windows 是 “齐驱并驾” 的关系.

当今市面上常见的操作系统:

  • Windows
  • Linux
  • macOS
  • Android
  • iOS

与其余系统不同, Linux 系统是一般用户(非计算机专业) 基本不会使用到的, 与别的操作系统(采用的是图形化界面)不同, 它的操作方式全部采用命令行来进行, 并不太适合日常使用, 但是非常适合用于开发. 作为一个开发人员, 无论是搞 后端 / 前端 / 客户端 / 测试 / 运维 / 网络 等等一系列的人员, Linux 都是务必要掌握切要能熟练使用的一个系统.

1.1 Unix & Linux 发展历程图

在这里插入图片描述

  1. 1969-1970 年, 贝尔实验室的 Dennis Ritchie (上图) 和 Ken Tompson (下图) 开发了 Unix 操作系
    统.
    在这里插入图片描述
    在这里插入图片描述

  2. Unix 火了之后, 衍生出很多的分支. 其中有一只为 “Minix”. 由荷兰的Andrew S. Tanenbaum 教授
    开发. MINIX 含义为 “小型的UNIX”, 源代码开放给大学教学和研究工作.
    在这里插入图片描述

  3. 1991 年, 还在读大学的 芬兰人 Linus Benedict Torvalds (1969年12月28日出生, 当时 22 岁) 基于
    Minix 的启发, 开发出了 Linux 的第一个版本.
    在这里插入图片描述

1.2 Linux 的发展

1991年, 可以认为是 “计算机领域奇迹年”, Linux, Python, Qt, Vim, OpenGL…都是出自这一年. Linux 也是这一年诞生, Linus 大佬在读研究生时闲着无聊, 写了个操作系统来玩. 万万没想到, 这个系统就火了, 因为它是开源, 免费的.

Linux 出现之前, 比较火的系统比如 Unix(其实就是 Linux 的前身), 虽然是开源的, 但是收费. 其余操作系统有的闭源, 有的收费, 所以当出现了一个开源免费的 Linux 后, 很多当时的大牛都加入其中, 为 Linux 的发展贡献出自己的一份力量, 这使 Linux 快速迭代, 从刚开始一个并不大, 功能也不是很丰富的系统, 摇身一变, 成一个庞然大物了.

后来, 为了能够很好的进行多人协同开发, Linus 大佬又顺手开发另一个大名鼎鼎的东西, git 开发工具软件, 可以管理代码版本, 协同多人进行开发.

再后来 Linus 大佬还写了一个自传, 叫做 《Just For Fun》, 这书名什么意思就不用我多解释了吧(滑稽).

时过境迁, Linux 已经发展成为 世界第一大操作系统. 连 Android 系统的内核都是基于 Linux 来实现的. 以下领域, Linux 都有参与.

  • 服务器领域.
  • 嵌入式设备, 现在的智能设备, 包括但不限于空调, 洗衣机, 冰箱, 路由器, 里面都需要有一个操作系统来支持.
  • 移动端, Android 本质上就是 Linux.

补充一下:

Linux 也有桌面的版本, 但体验上很差, 使用起来感觉比 Windows 的桌面水平落后十年(不夸张), 所以还是老老实实使用命令行吧.

1.3 Linux 的发行版

Linux 严格意义来说只是一个 “操作系统内核”(提供最核心的功能, 管理硬件设备, 给软件提供稳定的运行环境).

一个完整的操作系统 = 操作系统内核 + 配套的应用程序.

由于 Linux 是一个完全开源免费的内核, 因此有些公司/开源组织又基于 Linux 内核, 提供了不同的配套程序. 这就构成了不同的 “发行版”.

这些发行版也大同小异, 命令几乎都是一样的, 个别不同, 掌握其中一个, 其他的也就很容易快速上手.

在这里插入图片描述
企业中最主要使用的发行版是 RedHat (红帽). 但是 RedHat 是一个收费的系统(报价参考 https://www.redhat.com/en/store/linux-platforms?intcmp=701f20000012m33AAA).

由于红帽是收费的, 不适合我们学习使用, 在此推荐两个别的选择.

CentOS, 和 RedHat 几乎一模一样, 就是拿着 RedHat 的源码换个 logo, 重新编译了一下.

CentOS 和 RedHat 的关系
RedHat一直都提供源代码的发行方式,CentOS就是将RedHat发行的源代码去掉 RedHat 的 logo 商标, 重新编译一次.
RedHat对这种发行版的态度是:“我们其实并不反对这种发行版,真正向我们付费的用户,他们重视的并不是系统本身,而是我们所提供的商业服务。”
所以,CentOS可以得到RedHat的所有功能,甚至是更好的软件。但CentOS并不向用户提供商业支持,当然也不负上任何商业责任。

Ubuntu, 比较知名的一个老牌系统, 在企业端使用份额虽然不是很高, 但在社区里还是挺火的.

2. Linux 环境搭建

要想学习使用 Linux , 需要先有一个 Linux 的环境. 如何获取 Linux 环境呢?

2.1 环境搭建方式

主要有四种:

  1. 直接安装在物理机上. 但是由于 Linux 桌面使用起来非常不友好. [不推荐].
  2. 使用虚拟机软件, 用软件去模拟硬件. 将 Linux 搭建在虚拟机上. 但是由于当前的虚拟机软件多多少少存在一些 bug , 会导致环境上出现各种莫名其妙的问题, 比较折腾. 并且虚拟机无法拥有一个外网 IP 地址. [非常不推荐]
  3. 使用 WSL (Windows Subsystem for Linux). 这个是 Windows 近几年开发的新功能, 在 Windows 系统内集成了一个 Linux. 目前成熟度还是挺高的, 但也无法拥有外网 IP. [暂时不推荐]
  4. 使用云服务器, 可以直接在 腾讯云, 阿里云或华为云 等服务器厂商处直接购买一个云服务器, 相当于租了一台电脑, 完美解决了怎么获得外网 IP 的问题, 学生购买还有大幅度优惠. [推荐]

使用云服务器不仅环境搭建简单, 避免折腾, 同时还有一个最大的好处, 部署在云服务器上的项目可以直接被外网访问到, 这个时候就和一个公司发布一个正式的网站没有任何区别. 也就能让我们自己写的程序真的去给别人去使用.

2.2 使用云服务器

在此我们不具体演示如何去购买一个云服务器, 因为各大云服务器厂商的价格也不相同, 读者可以自行查看购买, 购买也很简单, 挑价格便宜的买就行, 毕竟目前我们的服务器也不需要配置很高.

给大家提供一下三大云服务器厂商的官网, 可自行挑选购买.

  • 腾讯云
  • 阿里云
  • 华为云

3. 使用终端软件连接到 Linux

3.1 什么是终端软件

终端软件是一类工具软件, 可以和远程的主机建立网络连接, 从而对主机进行一些操作.
常见的终端软件:

  • XShell
  • Putty
  • MobaXTerm
  • Iterm2
  • SecureCRT

推荐大家下载使用 XShell, 功能能加丰富.

3.2 下载安装 XShell

下载地址: https://www.xshell.com/zh/xshell/
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
点击下载之后, 就可以一路 next 了.

3.3 使用 XShell 登陆主机

打开 XShell. 通过云服务器提供的外网 IP, 连接云服务器.
在这里插入图片描述
关于XShell 下的复制粘贴

  • 复制: ctrl + insert (有些笔记本的 insert 需要配合 Fn 来按)
  • 粘贴: shift + insert

总结

✨ 本文主要讲解了 Linux 系统的发展历程, 并且讲了如何搭建一个 Linux 环境, 如何使用终端软件连接 Linux.
✨ 想了解更多知识, 请持续关注博主, 本人会不断更新学习记录, 跟随我一起不断学习.
✨ 感谢你们的耐心阅读, 博主本人也是一名学生, 也还有需要很多学习的东西. 写这篇文章是以本人所学内容为基础, 日后也会不断更新自己的学习记录, 我们一起努力进步, 变得优秀, 小小菜鸟, 也能有大大梦想, 关注我, 一起学习.

再次感谢你们的阅读, 你们的鼓励是我创作的最大动力!!!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/172349.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

labelImg

labelImg 在anaconda虚拟环境中安装labelImg 进入conda虚拟环境DL2中 输入命令: pip install PyQt5 pip install pyqt5-tools pip install lxml pip install labelimg PyQt5:是用于创建GUI应用程序的跨平台工具包,它将Python与Qt库融为一体 Lxml&#…

深信服技术认证“SCSA-S”划重点:渗透测试工具使用

为帮助大家更加系统化的学习网络安全知识,尽快通过深信服安全服务认证工程师认证,深信服推出“SCSA-S认证备考秘笈”共十期内容,“考试重点”内容框架,帮助大家快速get重点知识~ 划重点来啦 深信服安全服务认证工程师(…

CVE-2023-0179提权利用

前言 在CVE-2023-0179-Nftables整型溢出中,分析了漏洞的成因,接下来分析漏洞的利用。 漏洞利用 根据漏洞成因可以知道,payload_eval_copy_vlan函数存在整型溢出,导致我们将vlan头部结构拷贝到寄存器(NFT_REG32_00-N…

【SpringBoot】通过profiles设置环境

效果图&#xff0c;通过profiles设置环境 在父级pom.xml中添加配置 <profiles><profile><id>dev</id><properties><application.environment>dev</application.environment></properties><activation><activeByDefau…

OceanBase:OBServer节点管理

目录 1.查看节点 2.添加节点 2.1 创建数据目录 2.2.OceanBase 运行时所依赖的部分三方动态库 2.3.安装 OceanBase 数据库的 RPM 包 2.4.启动节点 observer 进程 2.5.向集群中添加节点 3.隔离节点 4.重启节点 4.1 停止服务 4.2 转储 4.3 关闭进程 4.4 启动进程 4.…

【原创】为MybatisPlus增加一个逻辑删除插件,让XML中的SQL也能自动增加逻辑删除功能

前言 看到这个标题有人就要说了&#xff0c;D哥啊&#xff0c;MybatisPlus不是本来就有逻辑删除的配置吗&#xff0c;比如TableLogic注解&#xff0c;配置文件里也能添加如下配置设置逻辑删除。 mybatis-plus:mapper-locations: classpath*:mapper/*.xmlconfiguration:mapUnd…

Java-认识String类

本章重点&#xff1a; 1. 认识 String 类 2. 了解 String 类的基本用法 3. 熟练掌握 String 类的常见操作 4. 认识字符串常量池 5. 认识 StringBuffer 和 StringBuilder 1.String类的重要性 在C语言中已经涉及到字符串了&#xff0c;但是在C语言中要表示字符串只能使用字符数组…

C++中的内存管理

✨前言✨ &#x1f4d8; 博客主页&#xff1a;to Keep博客主页 &#x1f646;欢迎关注&#xff0c;&#x1f44d;点赞&#xff0c;&#x1f4dd;留言评论 ⏳首发时间&#xff1a;2023年11月21日 &#x1f4e8; 博主码云地址&#xff1a;博主码云地址 &#x1f4d5;参考书籍&…

如何选择适合的开源框架来构建微服务架构?

随着科技的飞速发展&#xff0c;云计算和大规模应用的需求日益显著&#xff0c;这促使微服务架构在软件开发领域中占据了主流地位。微服务架构的广泛应用为开发人员提供了灵活性、可伸缩性和高可用性&#xff0c;从而推动了快速的应用程序开发。然而&#xff0c;在构建微服务架…

ky10 server x86 安装、更新openssl3.1.4(在线编译安装、离线安装)

查看openssl版本 openssl version 离线编译安装升级 #!/bin/shOPENSSLVER3.1.4OPENSSL_Vopenssl versionecho "当前OpenSSL 版本 ${OPENSSL_V}" #------------------------------------------------ #wget https://www.openssl.org/source/openssl-3.1.4.tar.gzech…

git撤销某一次commit提交

一&#xff1a;撤销上一次commit提交&#xff0c;但不删除修改的代码 可以使用使用VSCode 二&#xff1a;使用 git reset --hard命令删除提交时&#xff0c;将会删除该提交及其之后的所有更改&#xff08;相当于你想要回滚到的提交的提交ID&#xff09; git reset --hard 版本…

ubuntu18.04安装并运行ORB-SLAM2

查看版本号 lsb_release -a 换源 Ubuntu系统自带的源都是国外的网址&#xff0c;国内用户在使用的时候下载比较慢甚至无法获取&#xff0c;需要替换成国内的镜像源 备份源文件 sudo cp /etc/apt/sources.list /etc/apt/sources.list.old 打开文件 sudo gedit /etc/apt/so…

【Python】153是一个非常特殊的数,它等于它的每位数字的立方和,即153=1*1*1+5*5*5+3*3*3。编程求所有满足这种条件的三位十进制数。

问题描述 153是一个非常特殊的数&#xff0c;它等于它的每位数字的立方和&#xff0c;即1531*1*15*5*53*3*3。编程求所有满足这种条件的三位十进制数。 输出格式 按从小到大的顺序输出满足条件的三位十进制数&#xff0c;每个数占一行。 方法一&#xff1a; for i in range(10…

入行IC | 从小白助理级,到总监专家级,到底要经历怎样的成长阶段呢?

《中国集成电路产业人才发展报告》是业内和IC设计、IC人才都息息相关的一份报告。 &#xff08;文末可领全部报告资料&#xff09; * 从报告数据来看&#xff0c;无论在半导体产业的哪个环节&#xff0c;个人发展路径和年薪待遇都是逐级攀升的趋势。 那么从小白助理级&a…

k8s-pod管理 3

pod是可以创建和管理k8s 计算的最小可部署单元&#xff0c;一个pod 代表着集群中运行的一个进程&#xff0c;每个pod 都有一个唯一的ip pod包裹了容器 下载测试镜像 创建自主式的pod 查看创建的pod的详情信息 删除pod 创建控制器 副本过多&#xff0c;需要进行负载均衡减轻节点…

外部 prometheus监控k8s集群资源

prometheus监控k8s集群资源 一&#xff0c;通过CADvisior 监控pod的资源状态1.1 授权外边用户可以访问prometheus接口。1.2 获取token保存1.3 配置prometheus.yml 启动并查看状态1.4 Grafana 导入仪表盘 二&#xff0c;通过kube-state-metrics 监控k8s资源状态2.1 部署 kube-st…

【操作系统】文件系统的实现

文章目录 文件系统的层次结构文件系统的实现目录实现线性列表哈希表 文件的实现连续分配链接分配索引分配 文件存储空间管理空闲表法与空闲链表法成组链接法位示图法 文件系统的层次结构 文件系统从上往下分为了五层&#xff0c;分别是用户调用接口、文件目录系统、存取控制模…

解放双手!一键助你快速发圈、批量加好友,好用哭了!

朋友们&#xff0c;你们有没有经历过管理多个微信账号的繁琐和压力&#xff1f; 会不会因为忙不过来&#xff0c;忘记及时回复客户&#xff0c;错过了推广的时机&#xff1f; 别担心&#xff0c;现在有了微信管理系统&#xff0c;一切都变得简单轻松起来&#xff01; 微信管…

打造高效医患沟通:陪诊小程序开发技术指南

随着科技的不断发展&#xff0c;陪诊小程序作为医患沟通的新工具逐渐成为关注焦点。本文将带领你通过使用React和Node.js技术栈&#xff0c;构建一个功能强大且用户友好的陪诊小程序&#xff0c;实现医患互动的便捷和高效。 1. 准备工作 确保你的开发环境中已安装了Node.js和…

Unity下载资源且保存

UnityWebRequest(WWW——已过时) 替代&#xff1a;Unity不再支持WWW后&#xff0c;使用UnityWebRequest完成web请求。 Unity - Scripting API: UnityWebRequest (unity3d.com)https://docs.unity3d.com/ScriptReference/Networking.UnityWebRequest.html if (www.isNetworkEr…