当前位置: 首页 > news >正文

编程基础 - 初识Linux

编程基础 - 初识Linux

返回序言及专栏目录

文章目录

  • 编程基础 - 初识Linux
  • 前言
  • 一、Linux发展简介
  • 二、现代Linux
  • 三、Linux系统各发行版
  • 小结


前言

为什么要学习Linux呢?我这Windows用得好好的,简单易用傻瓜式、用的人还超多!但是我要告诉你的是,你用的Linux类(注意这个类字,不要抬杠)操作系统也不少,甚至很可能比Windows还多!不信你拿出手机看看,安卓、华为鸿蒙是正宗的Linux洐生产品,苹果倒是说源于Unix,但实际上还是同一个爷爷的东西。路由器几乎全是Linux系统的,所谓智能软路由系统本身就是较完整的Linux。监控摄像头、某些监控主机甚至能跑shell代码。

文中部分图片来源于网络


一、Linux发展简介

Linux是一个开源的操作系统内核。它的名字来源于最初主要作者(Linus Torvalds),由作者的名字与unix(一种操作系统)各取一半合成,之所以有unix的一半名字,是因为Linux模仿了Unix,这不是指代码的抄袭,是指功能操作上模仿,而且Unix是AT&T的东西,普通人也不敢抄它。目前Linus也还是内核代码的主要维护人、项目协调者、首席构架师。内核只提供了一些必不可少的功能,比如文件系统、磁盘控制、多任务管理等核心能力。

很多人映像中的Linux是一个黑乎乎的界面,操作要靠打字完成。这种界面其实就是shell,shell的英文意思是壳,也就是在Linux内核外面套了一层壳与内核交互,它是用户与内核的桥梁。它和Windows的前身,上世纪1995年之前的Dos(磁盘操作系统)一样的操作方式。简直是违反了自然规律,不思进取的典型。但是现代windows其实也保留了类似DOS的工具cmd(命令行Command shell)。

Linux 与 Dos
上图为:2020年的Linux(左) 与 1993年的Dos(右)

那么为什么会给人们这种奇怪的映像呢?无非是使用人群关注的重点不一样,大多windows用户可能都不知道内置的cmd是干什么用的,黑乎乎的好难看… 反正这玩意藏得深,咱不理它。而Linux用户不关心X Window(图形接口协议),这花里胡哨的玩意除了吃资源一无是处…咱这2G大内存干点什么不香,要拿去搞这花花绿绿的玩意干嘛!你没看错作者也没说错,对Linux来说,2G的内存,在2024年它干啥都够了!windows越做越好看、花哨,那都是资源堆出来的。

在这里插入图片描述
Linux的自由度很高,有人喜欢把桌面搞成这样,12年这样的桌面比windows10不差吧

在这里插入图片描述
图为同时代的LVWM(左)与windows3.2(右)

早期的Linux的确和前古的Dos一样的操作环境,Windows也确实比Linux更早搞出视窗桌面来。从win3.2发布后来讲,当时Linux也有了类似的程序管理器。
在这里插入图片描述
Windows95版本长这样

但是真正意义的视窗多媒体系统Windows95搞出来后,Linux并没有马上跟进,只是将任务管理器更完善了些,本质还是类似win3.2。直到Windows98发布,Linux才有了真正意义的视窗环境KDE1.0,但是直到今天,图形界面也只是一个软件包,与Linux内核无关。
在这里插入图片描述
早年的LINUX桌面长这样(GNOME)

又因为QT授权许可的问题,99年GNOME 1.0发布,这是Linux的另一个X Window界面。对的,你没看错!Linux不仅有现代视窗环境,还有两套视窗环境。现在也是一直并存的,当然各个发行版会选择其中一个来安装,也可能不安装X Window环境,那就是很多人映像中黑乎乎界面的由来。
在这里插入图片描述
上图为现代KDE桌面

其实Linux的自由度是极高的,你可以把它改得和Windows看起来一模一样。国内的Deepin系统甚至连操作都和windows很像。也有人把它改得和Mac OSX一样:
在这里插入图片描述
上图为假装是Mac OSX的Linux,当然它不是发行版,是个人改造的

真要说界面做得华丽,Linux中公认的是openSUSE,Windows有的动画效果它一个不少,甚至更漂亮。不过笔者只见过没用过,不多说它。

二、现代Linux

笔者三种系统(windows、OSX、Linux)都用过较长时间,在作者看来Windows和OSX是在不同商业模式上的成功,Linux是开源全球协作的成功(当年免费操作系统领域,Linux也有强劲对手的)。各有优缺点,也各自有了很大的用户基数。

有人说Linux性能远高于Windows,这个笔者是不认可的,给Linux套上一个图形界面,你再使劲美化一下,它甚至可能不如Windows,差距应该相对很小。让人有这种映像正是因为Linux经常不用图形界面,特别是服务器领域,因为费资源、还浪费网络带宽,又是一个月都难得去看几眼的,要图形界面干嘛呢,Linux的图形界面从根本上讲就是一个软件包,爱装不装的。给Windows去掉图形界面(虽然不可能),它也能跑得飞起。

那么为学Linux呢,也正是因为它在服务器领域的应用,后端应用一般都是建立在Linux服务器上的。具体是Linux系统的服务器多还是windows系统的多,这个问题一直都有争议,也没有太过让人信服的数据,但看历年世界排名靠前的大型服务器,基本上是用的Linux系统,Unix也经常出现,却几乎看不到windows的影子。

常见的监控主机,其实就是提供了存储服务的一台Linux服务器。路由器其实也是一个Linux服务器,我们平常所登陆的网页界面就是一个典型的服务,openwrt是uhttpd服务、梅林是httpd。对应于我们平常上网时在后端提供服务阿帕奇Web服务器(apache),或Nginx服务器。无非路由器上的功能要简单点,性能要差一些。不是很多人给路由开了smb、nfs这些存储服务吗,对于智能路由来说,拔号、发包、转发什么的正宗路由功能是顺带的…所以很多人感觉乍我这智能路由跑不过100块的TP呢?还真是很有可能的哦~

现代中高端路由的Linux相对比较完整,操作它和操作Linux服务器那是几乎没有区别。服务器做的事,路由基本上全都能干。特别是openwrt,现在发展的趋势是专注于X86-64的硬件,那么它和服务器已经没有区别了。

至于路由系统为什么才百把M这么小,而桌面Linux系统经常也是上G的,那全是因为路由器就这点硬件,而且是固定的。用户基本上不可能去增改。而桌面系统要适配几乎无尽的硬件,那全是驱动程序堆起来的体积。

相较于windows,linux具有以下几点优势,也可能是劣势:

  • 稳定高效:稳定是无可争议的,当年Linux用户就喜欢嘲笑Windows用户,今天你蓝屏几回了?对,不是问有没有蓝屏!服务器大多是没有重启开关的,windows系统的电脑要是没有重启开关,售后部门能把设计部门堵在办公室打残。虽然近些年的不少品牌机也把重启开关和开机键合一了,侧面说明windows10以后稳定性大有提升。
  • 几乎免费:个人用户用的都是免费发行版本,由各大Linux社区打包的。包括软件也绝大多数是免费的,嗯~ 其实Linux上是有收费软件的,大多是行业应用软件。至于效率之争,作者前面已经作了解释。
  • 漏洞少且快速修补:Windows经常有新闻说,xx版本停止服务,逼你升级新系统。Linux不存在的,梅林系统的路由器还在用2.6的内核呢。主要因为开源,有漏洞早被全世界的高手发现修补了。就算新发现了漏洞,咱编译的时候改一改就是了。
  • 多任务多用户:windows说我也会、我也行。Linux说你不行,你那是假装的。win95之后的操作系统都是多任务的,因为cpu跑得快了,把1秒钟分成10的-6次方为单位来用,用户感觉不到多任务的延时而已。Linux当然也是一个样,但windows确实不是多用户的,同一时间只能有一个用户登陆系统,服务器版也是。Linux是可以有多人同时登陆各干各的事的,一个用户开两个shell也是可以的。
  • 更加安全的用户与文件权限策略:文件权限管理方面,虽然Linux增加了复杂度,好处就是增加了安全性。
  • 适合小内核程序的嵌入系统:大小由心、丰俭由人,可以小到几M,可以大到几G。路由就是典型的例子,有些固件只有几M,有些固件有几百M。而且只要你有足够的空间,几M的固件,你也能装上几百M的工具。

三、Linux系统各发行版

细分的话这个版本就没人数得清了,主要有六大门派,找张图来说明这些门派之间的关系
在这里插入图片描述

常见的除开AOSP安卓以外,国人用得最多的就是红帽系和Debian系了。红帽本身是收费的,但它洐生的CentOS和Fedora是免费的,特别是CentOS是各大虚拟主机的第一选择。而Debian因为有国产的深度系统(Deepin),和国内用户非常多的Ubuntu系统的原因而广为人知。

这两派的软件安装包分别为rpmdeb。因为Linux的软件都是有仓库的,你直接输入命令就可以自动下载安装,绝对没有像windows上那样第三方来打个包给你加点广告的事!相应的就有了不同的软件包管理工具,比如ubuntu的apt命令,centOS的yum。当然你有个自己写的或别人写的软件已经在硬盘上了,也可以从本地磁盘安装的。

那么路由器的固件又是哪派的呢?以上六大派都不是,它属于嵌入式Linux领域,这个分支也极其复杂,作者也不可能全知全能。这里面有两个比较重要的开源项目:

  • 一个是让arm跑上Linux的开源项目,叫ucLinux,uc是微控制器的意思,已经合并进了Linux2.6版本核心,所以这么多arm的路由器都和这个有关。
  • 一个是LinkSYS(已被思科收购,后来又卖了),当年这公司搞出了一个WRT54G的路由器,后来开源了,这中间有很多故事的。

可以说目前所有的智能路由器找根子,都和这个LinkSYS的WRT54G有关。当年有人发现这个路由器竟然使用了GPL(通用公共授权许可)开源的Linux代码。这事要放在国内抄代码叫事吗?但在国外那可是戳中了自由软件的根子。最后思科没办法,斗不过自由的人民群众啊~ 也把这个路由的源代码开源了。GPL授权具有传染性,随便你用,但只要你用了,从法律上讲你就必须也开源。

包括AsusWRT、openwrt、Tomato、DD-wrt、高恪等等都是这里来的,梅林和padavan又是从Asus-wrt来的。不是说全世界么多编程高手就靠LinkSYS的这路由来改改才能搞出智能路由来,而是LinkSYS在业界的地位够高、影响力极大,自然有更多的高手去研究。


小结

Linux啥都分派系,说不定啥时候这个门派散伙了,比如著名发行版Fedora早就说散伙不干了,路由固件Tomato也不玩了,但是又不知道啥时候冒出来个版本,比如Ubuntu就是南非的一个名人找人折腾的。国内的深度Linux其实和当年著名的深度windows打包团队有关系,突然就折腾起了Linux,还干得有声有色。嗯~国内民间干Linux事业,他们搞得最出色了,至于官方半官方的版本那就更多了。实际上还有很多例子,比如前面说的两个桌面图形系统。Linux就是这样内耗严重,怪不得干不过windows~。~

返回专栏目录 <<<

相关文章:

编程基础 - 初识Linux

编程基础 - 初识Linux 返回序言及专栏目录 文章目录 编程基础 - 初识Linux前言一、Linux发展简介二、现代Linux三、Linux系统各发行版小结 前言 为什么要学习Linux呢&#xff1f;我这Windows用得好好的&#xff0c;简单易用傻瓜式、用的人还超多&#xff01;但是我要告诉你的…...

c yuv422转yuv420p

思路&#xff1a; yuv422 存储格式为 y u y v y u y v y u y v y u y v yuv420p 存储最简单&#xff0c;先存所以的y&#xff0c;再存u&#xff0c;最后v 所以先把422所有的y存在一起&#xff0c;再提奇数行的u &#xff0c;偶数行舍弃。提…...

计算机网络 - 路由器查表过程模拟 C++(2024)

1.题目描述 参考计算机网络教材 140 页 4.3 节内容&#xff0c;编程模拟路由器查找路由表的过程&#xff0c;用&#xff08;目的地址 掩码 下一跳&#xff09; 的 IP 路由表以及目的地址作为输入&#xff0c;为目的地址查找路由表&#xff0c;找出正确的下一跳并输出结果。 1.…...

实现pytorch版的mobileNetV1

mobileNet具体细节&#xff0c;在前面已做了分析记录&#xff1a;轻量化网络-MobileNet系列-CSDN博客 这里是根据网络结构&#xff0c;搭建模型&#xff0c;用于图像分类任务。 1. 网络结构和基本组件 2. 搭建组件 &#xff08;1&#xff09;普通的卷积组件&#xff1a;CBL …...

vue多tab页面全部关闭后自动退出登录

业务场景&#xff1a;主项目是用vue写的单页面应用&#xff0c;但是有多开页面的需求&#xff0c;现在需要在用户关闭了所有的浏览器标签页面后&#xff0c;自动退出登录。 思路&#xff1a;因为是不同的tab页面&#xff0c;我只能用localStorage来通信&#xff0c;新打开一个…...

记一个集群环境部署不完整导致的BUG

一 背景 产品有三个环境&#xff1a;开发测试环境、验收环境、生产环境。 开发测试环境&#xff0c;保持最新的更新&#xff1b; 验收环境&#xff0c;阶段待发布内容&#xff1b; 生产环境&#xff0c;部署稳定内容。 产品为BS架构&#xff0c;后端采用微服务&#xf…...

Go zero copy,复制文件

这里使用零拷贝技术复制文件&#xff0c;从内核态操作源文件和目标文件。避免了在用户态开辟缓冲区&#xff0c;然后从内核态复制文件到用户态的问题。 由内核态完成文件复制操作。 调用的是syscall.Sendfile系统调用函数。 //go:build linuxpackage zero_copyimport ("f…...

http协议九种请求方法介绍及常见状态码

http1.0定义了三种&#xff1a; GET: 向服务器获取资源&#xff0c;比如常见的查询请求POST: 向服务器提交数据而发送的请求Head: 和get类似&#xff0c;返回的响应中没有具体的内容&#xff0c;用于获取报头 http1.1定义了六种 PUT&#xff1a;一般是用于更新请求&#xff0c;…...

详解flink exactly-once和两阶段提交

以下是我们常见的三种 flink 处理语义&#xff1a; 最多一次&#xff08;At-most-Once&#xff09;&#xff1a;用户的数据只会被处理一次&#xff0c;不管成功还是失败&#xff0c;不会重试也不会重发。 至少一次&#xff08;At-least-Once&#xff09;&#xff1a;系统会保…...

Qt/QML编程学习之心得:QDbus实现service接口调用(28)

D-Bus协议用于进程间通讯的。 QString value = retrieveValue();QDBusPendingCall pcall = interface->asyncCall(QLatin1String("Process"), value);QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(pcall, this);QObject::connect(watcher, SI…...

前端nginx配置指南

前端项目发布后&#xff0c;有些接口需要在服务器配置反向代理&#xff0c;资源配置gzip压缩&#xff0c;配置跨域允许访问等 配置文件模块概览 配置示例 反向代理 反向代理是Nginx的核心功能之一&#xff0c;是指客户端发送请求到代理服务器&#xff0c;代理服务器再将请求…...

接口测试到底怎么做,5分钟时间看完这篇文章彻底搞清楚

01、通用的项目架构 02、什么是接口 接口&#xff1a;服务端程序对外提供的一种统一的访问方式&#xff0c;通常采用HTTP协议&#xff0c;通过不同的url&#xff0c;不同的请求类型&#xff08;GET、POST&#xff09;&#xff0c;不同的参数&#xff0c;来执行不同的业务逻辑。…...

显示管理磁盘分区 fdisk

显示管理磁盘分区 fdisk fdisk是用于检查一个磁盘上分区信息最通用的命令。 fdisk可以显示分区信息及一些细节信息&#xff0c;比如文件系统类型等。 设备的名称通常是/dev/sda、/dev/sdb 等。 对于以前的设备有可能还存在设备名为 /dev/hd* (IDE)的设备&#xff0c;这个设…...

Hyperledger Fabric 管理链码 peer lifecycle chaincode 指令使用

链上代码&#xff08;Chaincode&#xff09;简称链码&#xff0c;包括系统链码和用户链码。系统链码&#xff08;System Chaincode&#xff09;指的是 Fabric Peer 中负责系统配置、查询、背书、验证等平台功能的代码逻辑&#xff0c;运行在 Peer 进程内&#xff0c;将在第 14 …...

L1-011 A-B(Java)

题目 本题要求你计算A−B。不过麻烦的是&#xff0c;A和B都是字符串 —— 即从字符串A中把字符串B所包含的字符全删掉&#xff0c;剩下的字符组成的就是字符串A−B。 输入格式&#xff1a; 输入在2行中先后给出字符串A和B。两字符串的长度都不超过10的四次方&#xff0c;并且…...

系列七、Ribbon

一、Ribbon 1.1、概述 Ribbon是基于Netflix Ribbon实现的一套客户端负载均衡的工具&#xff0c;是Netflix发布的一款开源项目&#xff0c;其主要功能是提供客户端的软件负载均衡算法和服务调用&#xff0c;Ribbon客户端组件提供一系列完善的配置项&#xff0c;例如&#xff1a…...

山东名岳轩印刷包装携专业包装袋盛装亮相2024济南生物发酵展

山东名岳轩印刷包装有限公司盛装亮相2024第12届国际生物发酵展&#xff0c;3月5-7日山东国际会展中心与您相约&#xff01; 展位号&#xff1a;1号馆F17 山东名岳轩印刷包装有限公司是一家拥有南北两个生产厂区&#xff0c;设计、制版、印刷&#xff0c;营销策划为一体的专业…...

BGP公认必遵属性——Next-hop(一)

BGP公认必遵属性共有三个&#xff0c;分别是&#xff1a;Next-hop、Origin、As-path&#xff0c;本期介绍Next-hop 点赞关注&#xff0c;持续更新&#xff01;&#xff01;&#xff01; Next-hop 华为BGP路由下一跳特点&#xff1a; 默认情况下传给EBGP邻居的BGP路由的下一跳…...

增强Wi-Fi信号的10种方法,值得去尝试

Wi-Fi信号丢失,无线盲区。在一个对一些人来说,上网和呼吸一样必要的世界里,这些问题中的每一个都令人抓狂。 如果你觉得你的Wi-Fi变得迟钝,有很多工具可以用来测试你的互联网速度。你还可以尝试一些技巧来解决网络问题。然而,如果你能获得良好接收的唯一方法是站在无线路…...

第十五章 ECMAScript6新增的常用语法

文章目录 一、声明关键字二、箭头函数三、解构赋值四、展开运算符五、对字符的补充六、Symbol七、对象的简写语法八、Set和Map九、for-of 一、声明关键字 ES6新增的声明关键字&#xff1a; let&#xff0c;const&#xff1a;声明变量class&#xff1a;声明类import&#xff0c…...

在软件开发中正确使用MySQL日期时间类型的深度解析

在日常软件开发场景中&#xff0c;时间信息的存储是底层且核心的需求。从金融交易的精确记账时间、用户操作的行为日志&#xff0c;到供应链系统的物流节点时间戳&#xff0c;时间数据的准确性直接决定业务逻辑的可靠性。MySQL作为主流关系型数据库&#xff0c;其日期时间类型的…...

多模态2025:技术路线“神仙打架”,视频生成冲上云霄

文&#xff5c;魏琳华 编&#xff5c;王一粟 一场大会&#xff0c;聚集了中国多模态大模型的“半壁江山”。 智源大会2025为期两天的论坛中&#xff0c;汇集了学界、创业公司和大厂等三方的热门选手&#xff0c;关于多模态的集中讨论达到了前所未有的热度。其中&#xff0c;…...

java_网络服务相关_gateway_nacos_feign区别联系

1. spring-cloud-starter-gateway 作用&#xff1a;作为微服务架构的网关&#xff0c;统一入口&#xff0c;处理所有外部请求。 核心能力&#xff1a; 路由转发&#xff08;基于路径、服务名等&#xff09;过滤器&#xff08;鉴权、限流、日志、Header 处理&#xff09;支持负…...

Prompt Tuning、P-Tuning、Prefix Tuning的区别

一、Prompt Tuning、P-Tuning、Prefix Tuning的区别 1. Prompt Tuning(提示调优) 核心思想:固定预训练模型参数,仅学习额外的连续提示向量(通常是嵌入层的一部分)。实现方式:在输入文本前添加可训练的连续向量(软提示),模型只更新这些提示参数。优势:参数量少(仅提…...

阿里云ACP云计算备考笔记 (5)——弹性伸缩

目录 第一章 概述 第二章 弹性伸缩简介 1、弹性伸缩 2、垂直伸缩 3、优势 4、应用场景 ① 无规律的业务量波动 ② 有规律的业务量波动 ③ 无明显业务量波动 ④ 混合型业务 ⑤ 消息通知 ⑥ 生命周期挂钩 ⑦ 自定义方式 ⑧ 滚的升级 5、使用限制 第三章 主要定义 …...

1.3 VSCode安装与环境配置

进入网址Visual Studio Code - Code Editing. Redefined下载.deb文件&#xff0c;然后打开终端&#xff0c;进入下载文件夹&#xff0c;键入命令 sudo dpkg -i code_1.100.3-1748872405_amd64.deb 在终端键入命令code即启动vscode 需要安装插件列表 1.Chinese简化 2.ros …...

鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/

使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题&#xff1a;docker pull 失败 网络不同&#xff0c;需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...

什么?连接服务器也能可视化显示界面?:基于X11 Forwarding + CentOS + MobaXterm实战指南

文章目录 什么是X11?环境准备实战步骤1️⃣ 服务器端配置(CentOS)2️⃣ 客户端配置(MobaXterm)3️⃣ 验证X11 Forwarding4️⃣ 运行自定义GUI程序(Python示例)5️⃣ 成功效果![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/55aefaea8a9f477e86d065227851fe3d.pn…...

3-11单元格区域边界定位(End属性)学习笔记

返回一个Range 对象&#xff0c;只读。该对象代表包含源区域的区域上端下端左端右端的最后一个单元格。等同于按键 End 向上键(End(xlUp))、End向下键(End(xlDown))、End向左键(End(xlToLeft)End向右键(End(xlToRight)) 注意&#xff1a;它移动的位置必须是相连的有内容的单元格…...

MySQL账号权限管理指南:安全创建账户与精细授权技巧

在MySQL数据库管理中&#xff0c;合理创建用户账号并分配精确权限是保障数据安全的核心环节。直接使用root账号进行所有操作不仅危险且难以审计操作行为。今天我们来全面解析MySQL账号创建与权限分配的专业方法。 一、为何需要创建独立账号&#xff1f; 最小权限原则&#xf…...