编程基础 - 初识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)。
上图为: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系统的原因而广为人知。
这两派的软件安装包分别为rpm
和deb
。因为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呢?我这Windows用得好好的,简单易用傻瓜式、用的人还超多!但是我要告诉你的…...
c yuv422转yuv420p
思路: yuv422 存储格式为 y u y v y u y v y u y v y u y v yuv420p 存储最简单,先存所以的y,再存u,最后v 所以先把422所有的y存在一起,再提奇数行的u ,偶数行舍弃。提…...

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

实现pytorch版的mobileNetV1
mobileNet具体细节,在前面已做了分析记录:轻量化网络-MobileNet系列-CSDN博客 这里是根据网络结构,搭建模型,用于图像分类任务。 1. 网络结构和基本组件 2. 搭建组件 (1)普通的卷积组件:CBL …...
vue多tab页面全部关闭后自动退出登录
业务场景:主项目是用vue写的单页面应用,但是有多开页面的需求,现在需要在用户关闭了所有的浏览器标签页面后,自动退出登录。 思路:因为是不同的tab页面,我只能用localStorage来通信,新打开一个…...
记一个集群环境部署不完整导致的BUG
一 背景 产品有三个环境:开发测试环境、验收环境、生产环境。 开发测试环境,保持最新的更新; 验收环境,阶段待发布内容; 生产环境,部署稳定内容。 产品为BS架构,后端采用微服务…...
Go zero copy,复制文件
这里使用零拷贝技术复制文件,从内核态操作源文件和目标文件。避免了在用户态开辟缓冲区,然后从内核态复制文件到用户态的问题。 由内核态完成文件复制操作。 调用的是syscall.Sendfile系统调用函数。 //go:build linuxpackage zero_copyimport ("f…...
http协议九种请求方法介绍及常见状态码
http1.0定义了三种: GET: 向服务器获取资源,比如常见的查询请求POST: 向服务器提交数据而发送的请求Head: 和get类似,返回的响应中没有具体的内容,用于获取报头 http1.1定义了六种 PUT:一般是用于更新请求,…...

详解flink exactly-once和两阶段提交
以下是我们常见的三种 flink 处理语义: 最多一次(At-most-Once):用户的数据只会被处理一次,不管成功还是失败,不会重试也不会重发。 至少一次(At-least-Once):系统会保…...
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配置指南
前端项目发布后,有些接口需要在服务器配置反向代理,资源配置gzip压缩,配置跨域允许访问等 配置文件模块概览 配置示例 反向代理 反向代理是Nginx的核心功能之一,是指客户端发送请求到代理服务器,代理服务器再将请求…...

接口测试到底怎么做,5分钟时间看完这篇文章彻底搞清楚
01、通用的项目架构 02、什么是接口 接口:服务端程序对外提供的一种统一的访问方式,通常采用HTTP协议,通过不同的url,不同的请求类型(GET、POST),不同的参数,来执行不同的业务逻辑。…...

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

Hyperledger Fabric 管理链码 peer lifecycle chaincode 指令使用
链上代码(Chaincode)简称链码,包括系统链码和用户链码。系统链码(System Chaincode)指的是 Fabric Peer 中负责系统配置、查询、背书、验证等平台功能的代码逻辑,运行在 Peer 进程内,将在第 14 …...
L1-011 A-B(Java)
题目 本题要求你计算A−B。不过麻烦的是,A和B都是字符串 —— 即从字符串A中把字符串B所包含的字符全删掉,剩下的字符组成的就是字符串A−B。 输入格式: 输入在2行中先后给出字符串A和B。两字符串的长度都不超过10的四次方,并且…...

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

山东名岳轩印刷包装携专业包装袋盛装亮相2024济南生物发酵展
山东名岳轩印刷包装有限公司盛装亮相2024第12届国际生物发酵展,3月5-7日山东国际会展中心与您相约! 展位号:1号馆F17 山东名岳轩印刷包装有限公司是一家拥有南北两个生产厂区,设计、制版、印刷,营销策划为一体的专业…...
BGP公认必遵属性——Next-hop(一)
BGP公认必遵属性共有三个,分别是:Next-hop、Origin、As-path,本期介绍Next-hop 点赞关注,持续更新!!! Next-hop 华为BGP路由下一跳特点: 默认情况下传给EBGP邻居的BGP路由的下一跳…...

增强Wi-Fi信号的10种方法,值得去尝试
Wi-Fi信号丢失,无线盲区。在一个对一些人来说,上网和呼吸一样必要的世界里,这些问题中的每一个都令人抓狂。 如果你觉得你的Wi-Fi变得迟钝,有很多工具可以用来测试你的互联网速度。你还可以尝试一些技巧来解决网络问题。然而,如果你能获得良好接收的唯一方法是站在无线路…...
第十五章 ECMAScript6新增的常用语法
文章目录 一、声明关键字二、箭头函数三、解构赋值四、展开运算符五、对字符的补充六、Symbol七、对象的简写语法八、Set和Map九、for-of 一、声明关键字 ES6新增的声明关键字: let,const:声明变量class:声明类import,…...

从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)
设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile,新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...

2025季度云服务器排行榜
在全球云服务器市场,各厂商的排名和地位并非一成不变,而是由其独特的优势、战略布局和市场适应性共同决定的。以下是根据2025年市场趋势,对主要云服务器厂商在排行榜中占据重要位置的原因和优势进行深度分析: 一、全球“三巨头”…...

【VLNs篇】07:NavRL—在动态环境中学习安全飞行
项目内容论文标题NavRL: 在动态环境中学习安全飞行 (NavRL: Learning Safe Flight in Dynamic Environments)核心问题解决无人机在包含静态和动态障碍物的复杂环境中进行安全、高效自主导航的挑战,克服传统方法和现有强化学习方法的局限性。核心算法基于近端策略优化…...

Linux 中如何提取压缩文件 ?
Linux 是一种流行的开源操作系统,它提供了许多工具来管理、压缩和解压缩文件。压缩文件有助于节省存储空间,使数据传输更快。本指南将向您展示如何在 Linux 中提取不同类型的压缩文件。 1. Unpacking ZIP Files ZIP 文件是非常常见的,要在 …...

Selenium常用函数介绍
目录 一,元素定位 1.1 cssSeector 1.2 xpath 二,操作测试对象 三,窗口 3.1 案例 3.2 窗口切换 3.3 窗口大小 3.4 屏幕截图 3.5 关闭窗口 四,弹窗 五,等待 六,导航 七,文件上传 …...
scikit-learn机器学习
# 同时添加如下代码, 这样每次环境(kernel)启动的时候只要运行下方代码即可: # Also add the following code, # so that every time the environment (kernel) starts, # just run the following code: import sys sys.path.append(/home/aistudio/external-libraries)机…...

免费数学几何作图web平台
光锐软件免费数学工具,maths,数学制图,数学作图,几何作图,几何,AR开发,AR教育,增强现实,软件公司,XR,MR,VR,虚拟仿真,虚拟现实,混合现实,教育科技产品,职业模拟培训,高保真VR场景,结构互动课件,元宇宙http://xaglare.c…...

GraphQL 实战篇:Apollo Client 配置与缓存
GraphQL 实战篇:Apollo Client 配置与缓存 上一篇:GraphQL 入门篇:基础查询语法 依旧和上一篇的笔记一样,主实操,没啥过多的细节讲解,代码具体在: https://github.com/GoldenaArcher/graphql…...

Linux 下 DMA 内存映射浅析
序 系统 I/O 设备驱动程序通常调用其特定子系统的接口为 DMA 分配内存,但最终会调到 DMA 子系统的dma_alloc_coherent()/dma_alloc_attrs() 等接口。 关于 dma_alloc_coherent 接口详细的代码讲解、调用流程,可以参考这篇文章,我觉得写的非常…...

C# winform教程(二)----checkbox
一、作用 提供一个用户选择或者不选的状态,这是一个可以多选的控件。 二、属性 其实功能大差不差,除了特殊的几个外,与button基本相同,所有说几个独有的 checkbox属性 名称内容含义appearance控件外观可以变成按钮形状checkali…...