Linux简介

2023-10-26

1.1操作系统是什么,操作系统概述

要讲明白 Linux 是什么,首先得说说什么是操作系统。

计算机系统是指按用户的要求,接收和存储信息、自动进行数据处理并输出结果信息的系统,它由硬件子系统(计算机系统赖以工作的实体,包括显示屏、键盘、鼠标、硬盘等)和软件子系统(保证计算机系统按用户指定的要求协调工作,如 Windows 操作系统、Office 办公软件等)组成。

而操作系统 (Operating System, OS) 是软件子系统的一部分,是硬件基础上的第一层软件,是硬件与其他软件的接口,就好似吃饭的桌子,有了桌子才能摆放碟子、碗、筷子、勺子等。它控制其他程序运行,管理系统资源,提供最基本的计算功能,如管理及配置内存、决定系统资源供需的优先次序等,同时还提供一些基本的服务程序,例如:

  • 文件系统:提供计算机存储信息的结构,信息存储在文件中,文件主要存储在计算机的内部硬盘里,在目录的分层结构中组织文件。文件系统为操作系统提供了组织管理数据的方式。
  • 设备驱动程序。提供连接计算机的每个硬件设备的接口,设备驱动器使程序能够写入设备,而不需要了解执行每个硬件的细节。简单来说,就是让你能吃到鸡蛋,但不用养一只鸡。
  • 用户接口。操作系统需要为用户提供一种运行程序和访问文件系统的方法。如常用的 Windows 图形界面,可以理解为一种用户与操作系统交互的方式;智能手机的 Android 或 iOS 系统,也是一种操作系统的交互方式。
  • 系统服务程序。当计算机启动时,会自启动许多系统服务程序,执行安装文件系统、启动网络服务、运行预定任务等操作。


目前流行的服务器和 PC 端操作系统有 Linux、Windows、UNIX 等。

作为一套应用类的技术指导教程,本节不对操作系统的类型和功能等理论性知识进行过多探讨,只是让读者明白操作系统也是软件,只不过它是底层的软件,位于计算机硬件和应用程序软件之间,提供最基本的计算功能,而 Linux 和 Windows 都是操作系统的一种。

 

1.2 Linux和UNIX的关系及区别(详解版)

UNIX 与 Linux 之间的关系是一个很有意思的话题。在目前主流的服务器端操作系统中,UNIX 诞生于 20 世纪 60 年代末,Windows 诞生于 20 世纪 80 年代中期,Linux 诞生于 20 世纪 90 年代初,可以说 UNIX 是操作系统中的"老大哥"。

UNIX 的坎坷历史

UNIX 操作系统由肯•汤普森(Ken Thompson)和丹尼斯•里奇(Dennis Ritchie)发明。它的部分技术来源可追溯到从 1965 年开始的 Multics 工程计划,该计划由贝尔实验室、美国麻省理工学院和通用电气公司联合发起,目标是开发一种交互式的、具有多道程序处理能力的分时操作系统,以取代当时广泛使用的批处理操作系统。

说明:分时操作系统使一台计算机可以同时为多个用户服务,连接计算机的终端用户交互式发出命令,操作系统采用时间片轮转的方式处理用户的服务请求并在终端上显示结果(操作系统将CPU的时间划分成若干个片段,称为时间片)。操作系统以时间片为单位,轮流为每个终端用户服务,每次服务一个时间片。

可惜,由于 Multics 工程计划所追求的目标太庞大、太复杂,以至于它的开发人员都不知道要做成什么样子,最终以失败收场。

以肯•汤普森为首的贝尔实验室研究人员吸取了 Multics 工程计划失败的经验教训,于 1969 年实现了一种分时操作系统的雏形,1970 年该系统正式取名为 UNIX。

想一下英文中的前缀 Multi 和 Uni,就明白了 UNIX 的隐意。Multi 是大的意思,大而且繁;而 Uni 是小的意思,小而且巧。这是 UNIX 开发者的设计初衷,这个理念一直影响至今。

有意思的是,肯•汤普森当年开发 UNIX 的初衷是运行他编写的一款计算机游戏 Space Travel,这款游戏模拟太阳系天体运动,由玩家驾驶飞船,观赏景色并尝试在各种行星和月亮上登陆。他先后在多个系统上试验,但运行效果不甚理想,于是决定自己开发操作系统,就这样,UNIX 诞生了。

自 1970 年后,UNIX 系统在贝尔实验室内部的程序员之间逐渐流行起来。1971-1972 年,肯•汤普森的同事丹尼斯•里奇发明了传说中的 C 语言,这是一种适合编写系统软件的高级语言,它的诞生是 UNIX 系统发展过程中的一个重要里程碑,它宣告了在操作系统的开发中,汇编语言不再是主宰。

到了 1973 年,UNIX 系统的绝大部分源代码都用 C 语言进行了重写,这为提高 UNIX 系统的可移植性打下了基础(之前操作系统多采用汇编语言,对硬件依赖性强),也为提高系统软件的开发效率创造了条件。可以说,UNIX 系统与 C 语言是一对孪生兄弟,具有密不可分的关系。

20 世纪 70 年代初,计算机界还有一项伟大的发明——TCP/IP 协议,这是当年美国国防部接手 ARPAnet 后所开发的网络协议。美国国防部把 TCP/IP 协议与 UNIX 系统、C 语言捆绑在一起,由 AT&T 发行给美国各个大学非商业的许可证,这为 UNIX 系统、C 语言、TCP/IP 协议的发展拉开了序幕,它们分别在操作系统、编程语言、网络协议这三个领域影响至今。肯•汤普森和丹尼斯•里奇因在计算机领域做出的杰出贡献,于 1983 年获得了计算机科学的最高奖——图灵奖。



图 1 为肯•汤普森与丹尼斯•里奇的合影,天才都是不修边幅的……


随后出现了各种版本的 UNIX 系统,目前常见的有 Sun Solaris、FreeBSD、IBM AIX、HP-UX 等。

我们重点介绍一下 Solaris,它是 UNIX 系统的一个重要分支。Solaris 除可以运行在 SPARC CPU 平台上外,还可以运行在 x86 CPU 平台上。在服务器市场上,Sun 的硬件平台具有高可用性和高可靠性,是市场上处于支配地位的 UNIX 系统。

对于难以接触到 Sun SPARC 架构计算机的用户来说,可以通过使用 Solaris x86 来体验世界知名大厂的商业 UNIX 风采。当然,Solaris x86 也可以用于实际生产应用的服务器,在遵守 Sun 的有关许可条款的情况下,Solaris x86 可以免费用于学习研究或商业应用。

FreeBSD 源于美国加利福尼亚大学伯克利分校开发的 UNIX 版本,它由来自世界各地的志愿者开发和维护,为不同架构的计算机系统提供了不同程度的支持。FreeBSD 在 BSD 许可协议下发布,允许任何人在保留版权和许可协议信息的前提下随意使用和发行,并不限制将 FreeBSD 的代码在另一协议下发行,因此商业公司可以自由地将 FreeBSD 代码融入它们的产品中。苹果公司的 OS  X 就是基于 FreeBSD 的操作系统。



 

FreeBSD 与 Linux 的用户群有相当一部分是重合的,二者支持的硬件环境也比较一致,所采用的软件也比较类似。FreeBSD 的最大特点就是稳定和高效,是作为服务器操作系统的不错选择;但其对硬件的支持没有 Linux 完备,所以并不适合作为桌面系统。

其他UNIX版本因应用范围相对有限,在此不做过多介绍。

Linux 的那些往事

Linux 内核最初是由李纳斯•托瓦兹(Linus Torvalds)在赫尔辛基大学读书时出于个人爱好而编写的,当时他觉得教学用的迷你版 UNIX 操作系统 Minix 太难用了,于是决定自己开发一个操作系统。第 1 版本于 1991 年 9 月发布,当时仅有 10 000 行代码。



 

李纳斯•托瓦兹没有保留 Linux 源代码的版权,公开了代码,并邀请他人一起完善 Linux。与 Windows 及其他有专利权的操作系统不同,Linux 开放源代码,任何人都可以免费使用它。

据估计,现在只有 2% 的 Linux 核心代码是由李纳斯•托瓦兹自己编写的,虽然他仍然拥有 Linux 内核(操作系统的核心部分),并且保留了选择新代码和需要合并的新方法的最终裁定权。现在大家所使用的 Linux,我更倾向于说是由李纳斯•托瓦兹和后来陆续加入的众多 Linux 好者共同开发完成的。

李纳斯•托瓦兹无疑是这个世界上最伟大的程序员之一,何况,他还搞出了全世界最大的程序员交友社区 GitHub (开源代码库及版本控制系统)。

关于 Linux Logo 的由来是一个很有意思的话题,它是一只企鹅。



 

为什么选择企鹅,而不是选择狮子、老虎或者小白兔?有人说因为李纳斯•托瓦兹是芬兰人,所以选择企鹅,有人说因为其他动物图案都被用光了,李纳斯•托瓦兹只好选择企鹅。

我更愿意相信以下说法,企鹅是南极洲的标志性动物,根据国际公约,南极洲为全人类共同所有,不属于世界上的任何国家,可国家都无权将南极洲纳入其版图。Linux 选择企鹅图案作为 Logo,其含义是:开放源代码的 Linux 为全人类共同所有,可公司无权将其私有。

UNIX与Linux的亲密关系

二者的关系,不是大哥和小弟,"UNIX 是 Linux 的父亲"这个说法更怡当。之所以要介绍它们的关系,是因为要告诉读者,在学习的时候,其实 Linux 与 UNIX 有很多的共通之处,简单地说,如果你已经熟练掌握了 Linux,那么再上手使用 UNIX 会非常容易。

二者也有两个大的区别:

  1. UNIX系统大多是与硬件配套的,也就是说,大多数 UNIX 系统如 AIX、HP-UX 等是无法安装在 x86 服务器和个人计算机上的,而 Linux 则可以运行在多种硬件平台上;
  2. UNIX是商业软件,而Linux是开源软件,是免费、公开源代码的。


Linux 受至旷大计算机爱好者的喜爱,主要原因也有两个:

  1. 它属于开源软件,用户不用支付可费用就可以获得它和它的源代码,并且可以根据自己的需要对它进行必要的修改,无偿使用,无约束地继续传播;
  2. 它具有 UNIX 的全部功能,任何使用 UNIX 操作系统或想要学习 UNIX 操作系统的人都可以从 Linux 中获益。


开源软件是不同于商业软件的一种模式,从字面上理解,就是开放源代码,大家不用担心里面会搞什么猫腻,这会带来软件的革新和安全。

另外,开源其实并不等同于免费,而是一种新的软件盈利模式。目前很多软件都是开源软件,对计算机行业与互联网影响深远。

开源软件本身的模式、概念比较晦涩,本教程旨在指导读者应用 Linux,大家简要理解即可。

近年来,Linux 已经青出于蓝而胜于蓝,以超常的速度发展,从一个丑小鸭变成了一个拥有庞大用户群的真正优秀的、值得信赖的操作系统。历史的车轮让 Linux 成为 UNIX 最优秀的传承者。

UNIX/Linux系统结构

UNIX/Linux 系统可以粗隨地抽象为 3 个层次(所谓粗糙,就是不够细致、精准,但是便于初学者抓住重点理解),如图 2 所示。底层是 UNIX/Linux 操作系统,之为系统内核(Kernel);中间层是 Shell 层,即命令解释层;高层则是应用层。



图 3 UNIX/Linux 系统结掏层次概要

1) 内核层

内核层是 UNIX/Linux 系统的核心和基础,它直接附着在硬件平台之上,控制和管理系统内各种资源(硬件资源和软件资源),有效地组织进程的运行,从而扩展硬件的功能,提高资源的利用效率,为用户提供方便、高效、安全、可靠的应用环境。

2) Shell层

Shell 层是与用户直接交互的界面。用户可以在提示符下输入命令行,由 Shell 解释执行并输出相应结果或者有关信息,所以我们也把 Shell 称作命令解释器,利用系统提供的丰富命令可以快捷而简便地完成许多工作。

3) 应用层

应用层提供基于 X Window 协议的图形环境。X Window 协议定义了一个系统所必须具备的功能(就如同 TCP/IP 是一个协议,定义软件所应具备的功能),可系统能满足此协议及符合 X 协会其他的规范,便可称为 X Window。

现在大多数的 UNIX 系统上(包括 Solaris、HP-UX、AIX 等)都可以运行 CDE (Common Desktop Environment,通用桌面环境,是运行于 UNIX 的商业桌面环境)的用户界面;而在 Linux 上广泛应用的有 Gnome(见图  4)、KDE 等。



图 4 Gnome图形界面


X Window 与微软的 Windows 图形环境有很大的区别:

  • UNIX/Linux 系统与 X Window 没有必然捆绑的关系,也就是说,UNIX/Linux 可以安装 X Window,也可以不安装;而微软的 Windows 图形环境与内核捆绑密切。
  • UNIX/Linux 系统不依赖图形环境,依然可以通过命令行完成 100% 的功能,而且因为不使用图形环境还会节省大量的系统资源。


作为服务器部署,绝大多数 Linux 并不安装或并不启用图形环境,本教程的讲解也基本上为 Linux 命令行下的操作。

 

1.3 Linux系统的优缺点

本节,我们介绍一下 Linux 系统的优缺点。Linux 不可比拟的优势如下。

1) 大量的可用软件及免费软件

Linux 系统上有着大量的可用软件,且绝大多数是免费的,比如声名赫赫的 Apache、Samba、PHP、MySQL 等,构建成本低廉,是 Linux 被众多企业青睐的原因之一。当然,这和 Linux 出色的性能是分不开的,否则,节约成本就没有任何意义。

但不可否认的是,Linux 在办公应用和游戏娱乐方面的软件相比 Windows 系统还很匮乏,所以,即便打游戏、看影片用的也是 Windows,至于 Linux,就把它用在擅长的服务器领域吧。

2) 良好的可移植性及灵活注

Linux 系统有良好的可移植性,它几乎支持所有的 CPU 平台,这使得它便于裁剪和定制。我们可以把 Linux 放在 U 盘、光盘等存储介质中,也可以在嵌入式领域广泛应用。

如果读者希望不进行安装就体验 Linux 系统,则可以在网上下载一个 Live DVD 版的 Linux 镜像,刻成光盘放入光驱或者用虚拟机软件直接载入镜像文件,设置 CMOS/BIOS 为光盘启动,系统就会自动载入光盘文件,启动进入 Linux 系统。

3) 优良的稳定性和安全性

著名的黑客埃里克•雷蒙德(EricS.Raymond)有一句名言:“足够多的眼睛,就可让所有问题浮现”。举个例子,假如笔者在演讲,台下人山人海,明哥中午吃饭不小心,有几个饭粒粘在衣领上了,分分钟就会被大家发现,因为看的人太多了;如果台下就稀稀落落两三个人且离得很远,那就算明哥衣领上有一大块油渍也不会被发现。

Linux 开放源代码,将所有代码放在网上,全世界的程序员都看得到,有什么缺陷和漏洞,很快就会被发现,从而成就了它的稳定性和安全注。

提到 Linux 的安全性,我们可以做一个实验:在一台计算机上,在安装了 Windows 系统后不安装杀毒软件联网一个月,看看会有什么情况;同样,在安装了 Linux 系统后不安装杀毒软件联网一个月,我们比较一下,大家就明白了什么是 Linux 的安全性。Windows 系统不安装杀毒软件,相信大家都知道会有什么下场吧……

4) 支持几乎所有的网络协议及开发语言

经常有初学的朋友问我,Linux 是不是对 TCP/IP 协议支持不好、是不是 Java 开发环境不灵之类的问题。前面在 UNIX 发展史中已经介绍了,UNIX 系统是与 C 语言、TCP/IP 协议一同发展起来的,而 Linux 是 UNIX 的一种,C 语言又衍生出了现今主流的语言 PHP、Java、C++ 等,而哪一个网络协议与 TCP/IP 无关呢?所以,Linux 对网络协议和开发语言的支持很好。

Linux 的优点在此不一一列举,只说明这几点供读者参考。诚然,Linux 不可能没有缺点,如桌面应用还有待完善、Linux 的标准统一还需要推广、开源软件的盈利模式与发展还有待考验等,不过,瑕不掩瑜。

 

1.4 Linux发行版本详解

新手往往会被 Linux 众多的发行版本搞得一头雾水,我们首先来解释一下这个问题。

从技术上来说,李纳斯•托瓦兹开发的 Linux 只是一个内核。内核指的是一个提供设备驱动、文件系统、进程管理、网络通信等功能的系统软件,内核并不是一套完整的操作系统,它只是操作系统的核心。一些组织或厂商将 Linux 内核与各种软件和文档包装起来,并提供系统安装界面和系统配置、设定与管理工具,就构成了 Linux 的发行版本。

在 Linux 内核的发展过程中,各种 Linux 发行版本起了巨大的作用,正是它们推动了 Linux 的应用,从而让更多的人开始关注 Linux。因此,把 Red Hat、Ubuntu、SUSE 等直接说成 Linux 其实是不确切的,它们是 Linux 的发行版本,更确切地说,应该叫作"以Linux为核心的操作系统软件包"。

Linux 的各个发行版本使用的是同一个 Linux 内核,因此在内核层不存在什么兼容性问题,每个版本有不一样的感觉,只是在发行版本的最外层(由发行商整合开发的应用)才有所体现。

Linux 的发行版本可以大体分为两类:

  • 商业公司维护的发行版本;
  • 社区组织维护的发行版本。

前者以著名的 Red Hat 为代表,后者以 Debian 为代表。

很难说大量 Linux 版本中哪一款更好,每个版本都有自己的特点。下面为大家介绍 4 款我国国内应用较多的 Linux 发行版本。

1) Red Hat Linux


 

Red Hat (红帽公司)创建于 1993 年,是目前世界上资深的 Linux 厂商,也是最获认可的 Linux 品牌。

Red Hat 公司的产品主要包括 RHEL (Red Hat Enterprise Linux, 收费版本)和 CentOS (RHEL 的社区克隆版本,免费版本)、Fedora Core (由 Red Hat 桌面版发展而来,免费版本)。

Red Hat 是在我国国内使用人群最多的 Linux 版本,资料丰富,如果你有什么不明白的地方,则容易找到人来请教,而且大多数 Linux 教程是以 Red Hat 为例来讲解的(包括本教程)。

本教程以我国国内互联网公司常用的 Linux 发行版本 CentOS 为例讲解,它是基于 Red Hat Enterprise Linux 源代码重新编译、去除 Red Hat 商标的产物,各种操作使用和付费版本没有区别,且完全免费。缺点是不向用户提供技术支持,也不负任何商业责任。有实力的公司可以选择付费版本。

2) Ubuntu Linux


 

Ubuntu 基于知名的 Debian Linux 发展而来,界面友好,容易上手,对硬件的支持非常全面,是目前最适合做桌面系统的 Linux 发行版本,而且 Ubuntu 的所有发行版本都免费提供。

Ubuntu 的创始人 Mark Shuttleworth 是非常具有传奇色彩的人物。他在大学毕业后创建了一家安全咨询公司,1999 年以 5.75 亿美元被收购,由此一跃成为南非最年轻有为的本土富翁。作为一名狂热的天文爱好者,Mark Shuttleworth 于 2002 年自费乘坐俄罗斯联盟号飞船,在国际空间站中度过了 8 天的时光。之后,Mark Shuttleworth 创立了 Ubuntu 社区,2005 年 7 月 1 日建立了 Ubuntu 基金会,并为该基金会投资 1000 万美元。他说,太空的所见正是他创立 Ubuntu 的精神之所在。如今,他最热衷的事情就是到处为自由开源的 Ubuntu 进行宣传演讲。

3) SuSE Linux


 

SuSE Linux 以 Slackware Linux 为基础,原来是德国的 SuSE Linux AG 公司发布的 Linux 版本,1994 年发行了第一版,早期只有商业版本,2004 年被 Novell 公司收购后,成立了 OpenSUSE 社区,推出了自己的社区版本 OpenSUSE。

SuSE Linux 在欧洲较为流行,在我国国内也有较多应用。值得一提的是,它吸取了 Red Hat Linux 的很多特质。

SuSE Linux 可以非常方便地实现与 Windows 的交互,硬件检测非常优秀,拥有界面友好的安装过程、图形管理工具,对于终端用户和管理员来说使用非常方便。

4) Gentoo Linux


 

Gentoo 最初由 Daniel Robbins (FreeBSD 的开发者之一)创建,首个稳定版本发布于 2002 年。Gentoo 是所有 Linux 发行版本里安装最复杂的,到目前为止仍采用源码包编译安装操作系统。

不过,它是安装完成后最便于管理的版本,也是在相同硬件环境下运行最快的版本。自从 Gentoo 1.0 面世后,它就像一场风暴,给 Linux 世界带来了巨大的惊喜,同时也吸引了大量的用户和开发者投入 Gentoo Linux 的怀抱。

有人这样评价 Gentoo,快速、设计干净而有弹性,它的出名是因为其高度的自定制性(基于源代码的发行版)。尽管安装时可以选择预先编译好的软件包,但是大部分使用 Gentoo 的用户都选择自己手动编译。这也是为什么 Gentoo 适合比较有 Linux 使用经验的老手使用。

要注意的是,由于编译软件需要消耗大量的时间,所以,如果你所有的软件都由自己编译,并安装 KDE 桌面系统等比较大的软件包,则可能需要花费很长时间。

Linux 的发行版本众多,在此不逐一介绍,下面给选择 Linux 发行版本犯愁的朋友一点建议:

  1. 如果你需要的是一个服务器系统,而且已经厌烦了各种 Linux 的配置,只是想要一个比较稳定的服务器系统,那么建议你选择 CentOS 或 RHEL;
  2. 如果你只是需要一个桌面系统,而且既不想使用盗版,又不想花大价钱购买商业软件,不想自己定制,也不想在系统上浪费太多时间,则可以选择 Ubuntu;
  3. 如果你想深入摸索一下 Linux 各个方面的知识,而且还想非常灵活地定制自己的 Linux 系统,那就选择 Gentoo 吧,尽情享受 Gentoo 带来的自由快感;
  4. 如果你对系统稳定性要求很高,则可以考虑 FreeBSD;
  5. 如果你需要使用数据库高级服务和电子邮件网络应用,则可以选择 SuSE;


以上纯属个人化建议,非官方指导意见。其实 Linux 的发行版本众多,但是系统的核心——内核却系出同门,所以只要学会使用其中一种,即可触类旁通。

 

1.5 Linux的应用领域

Linux 似乎在我们平时的生活中很少看到,那么它应用在哪些领域呢?其实,在生活中随时随地都有 Linux 为我们服务着。

网站服务器

用事实说话!访问国际知名的 Netcraft 网站 "http:// www.netcraft.com",在 "What's that site running?" 的地址栏内输入想了解信息的网站地址,单击箭头图标即可搜索到相关信息,如图 1 所示。



图 1 Netcraft


在搜索结果中会看到网站的操作系统信息。例如,搜索兄弟连网站 "www.itxdl.cn",可以看至 OS 显示为 Linux。

Netcraft 可以理解为一个基于 Web 页面的扫描器,至于扫描,就好像小偷踩点。小偷在偷东西之前拿一堆小广告的宣传单,每天在想要盗窃的户门上插小广告,连续一周,之后去观察,哪家门上7张广告怎么插上的还怎么放在那儿,就要倒霉了,一直没人;哪家门上两张,地下三张,剩下的两张不知道哪儿去了,尽量不下手,不确定什么时候有人;哪家门上和地下都很干净,打死都不能下手,保不齐门一撬开,四个彪形大汉正在打麻将呢!这门技术对窃贼来说叫作踩点,网站扫描和小偷踩点的道理类似……

所以黑客攻击别人电脑的第一个步骤也叫踩点,我们做网络的安全扫描检测与此原理相同,只不过不是发小广告观察结果,而是向对方电脑发数据包,根据返回的应答数据包分析对方电脑的信息。

验证一下哪些大型网站在使用 Linux。世界知名的网站 google.com、qq.com、新浪、网易等,无一例外地应用着 Linux。就连你输入 microsoft.com,会发现微软的下载站等也在使用 Linux。

为什么这么多大型网站会采用 Linux 而不使用 UNIX 或 Windows?其中一个重要的原因就是使用 Linux 成本较低,而 UNIX 和 Windows 都是商业软件;另一个更重要的原因是出于安全和性能方面的考虑。

电影工业

1998 年,《泰坦尼克号》那些看起来真实、恐怖的豪华巨轮与冰山相撞最终沉没的场面要归功于 Linux,归功于电影特技效果公司里终日处理数据的 100 多台 Linux 服务器。

在过去,SGI 图形工作站支配了整个电影产业,20 世纪 90 年代的影片《侏罗纪公园》中生动的恐龙正是从 SGI 上孕育出来的,SGI 的操作系统 Irix 就是 UNIX 的一种。当时所有动画制作公司都得看 SGI 的脸色。然而,从 1997 年开始,Linux 开始全面占领好莱坞,娱乐业巨擘迪士尼宣布全面采用 Linux,宣告了 SGI 时代的没落,Linux 时代走向辉煌。

好莱坞精明的电影人热情地拥抱 Linux,其中的原因不言而喻。首先,Linux 作为开源软件,可以节省大量成本;其次,Linux 具有商业软件不具备的功能定制化特点,各家电影厂商都可依据自己的制片需要铺设相关平台。到现在为止,使用 Linux 制作的好莱坞大片已经有几百部。

嵌入式应用

嵌入式系统是以应用为中心,以计算机技术为基础,并且软硬件可定制,适用于各种应用场合,对功能、可靠注、成本、体积、功耗有严格要求的专用计算机系统。它一般由嵌入式微处理器、外围硬件设备、嵌入式操作系统及用户的应用程序 4 部分组成,用于实现对其他设备的控制、监视或管理等。

嵌入式系统几乎涵盖了生活中的所有电器设备,如手机、平板电脑、电视机顶盒、游戏机、智能电视、汽车、数码相机、自动售货机、工业自动化仪表与医疗仪器等。

不得不提的是安卓系统(Android)。安卓是基于 Linux 的开源系统,主要适用于便携设备,如智能手机和平板电脑等,是Google公司为移动终端打造的真正开放和完整的移动软件。在如今的智能手机操作系统市场上,安卓系统的占有率已然是傲视群雄。

从安卓手机至智能机器人,从大型网站到美国太空站,Linux 都已涉足其中。Linux 的发展震动了整个科技界,动摇了微软一贯以来的霸权,并且为科技界贡献了一种软件制造的新方式。

Top500 (www.top500.org) 是评定全球 500 台最快的超算系统性能榜单,连续多届,在世界上 500 台超级计算机里,超过 9 成为 Linux 系统!如果你还关在家里面,认为全世界都是 Windows,则无异于坐井观天。世界那么大,出去看看吧!

 

1.6 Linux如何学(新手入门必看)

本节旨在介绍对于初学者如何学习 Linux 的建议。如果你已经确定对 Linux 产生了兴趣,那么接下来我们介绍一下学习 Linux 的方法。

如何去学习

学习大多类似鹿丁解牛,对事物的认识一般都是由浅入深、由表及里的过程,循序才能渐进。学习 Linux 同样要有一定的顺序和方法,当然这也是你学习本教程的意义。如果你是初学者,那么建议按照本教程的顺序阅读,不要跳跃,欲速则不达,揠苗也不见得能助长。

另外,强烈建议做好读书笔记,边看边记,边练习边思考,"学而不思则罔,思而不学则殆",比勤奋更重要的是思考的能力,不要傻学、死学。养成看书的好习惯,学习类的图书如果没能看成自己知识的积累,就是白读。一本书,可能看一遍是不够的,多次阅读,反复实践,才能印象深刻。笔者曾翻烂 8 本《恋爱宝典》,但是从没向任何人表白,结果不言自明。实践是检验真理的唯一标准,实践出真知。

方法有了,贵在坚持。制定好自己的学习目标,设定奖惩,确定详细的时间进度表,开始行动!保持热情,坚定目标,做好计划,希望你、不会让本教程变成你的收藏品,而是成为一套可能会改变你职场命运的技术指导教程,那将是我们最大的荣幸。

碰到问题怎么办

任何人学习和使用 Linux 或多或少会遇到问题,很多人遇到问题的第一个念头就是问人。没错!这可以快速解决问题。但是我们建议你,先尝试自己解决问题,询问别人获得答案固然好,但是对于知识的积累和提升解决问题的能力并没有帮助,不要做依赖别人帮助的懒虫。

在寻找答案的过程中,虽然会花费很多时间,也可能会遇到挫折,但久而久之你会发现,也许为了找一个问题的解答,你了解了 Linux 很多相关的知识,经验也越来越丰富。记住,你不可能永远有人问,也不可能永远有人愿意回答你。

Linux 系统的一个非常大的好处是,当命令执行错误或系统设置错误时,通常会清楚地显示错误信息,告诉你哪里出错了,只要认真观察报错信息,大概就知道问题出现在哪里,应该如何解决了。有的操作步骤复杂,出现状况时,回头检査一下,是不是前面步骤的命令敲错或配置文件改错。

Linux 的帮助文档是很好的工具,命令的选项、配置文件的设置都可以从这里找到答案;我们在提问前,一定要先在网络上寻找答案,借用一句广告语"百度一下,你就知道",没有人愿意回答网上一搜就可以找到答案的问题。

提问时,确认你已经做了上述事情,这有助于树立你不是寄生虫与浪费别人时间的形象。轻率的提问只能得到轻率的回答,或者压根儿没人理你。

有的被询问者常常不是很清楚初学者要问什么,因为初学者没有完整、清楚地描述问题。在求助他人时,说明要做什么、做了什么,列出完整的操作步骤、错误信息或错误截图,描述清晰,让别人能看懂你的问题,否则笔者就算变成超人也帮不了你。

在请教问题时,要注意礼貌。很多年轻人,多了一点理所应当,少了一些礼貌用语,你自然会感到世态炎凉,技术圈子没有人性,毕竟人家不回答你是本分,回答你是人情。

另外,千万不要问那种令人头疼的问题,如 Linux 怎么备份、Linux 权限有明陛、xx 服务怎么配置、oo 脚本帮写一个……你问饺子皮为什么这么擀会破,我可以告诉你;你问怎么包饺子,这就是你找茬儿了,先在网上找找,人生苦短,快用百度,然后照猫画虎时哪个步骤有问题你再问……

提问,也是一种智慧。

英文读不懂怎么办

每次在教授 Linux 课程时,笔者都要给读者介绍两个英文短语,一个是 "No such file or directory",另一个是 "command not found"。初学者在学习命令时问得最多的就是这两个问题:输入的
文件或目录名称错误、命令没有被发现(命令敲错了)。

能看懂 Linux 的英文提示及英文文档非常重要。其实计算机英语很简单,只要熟记了计算机专业英语单词,高中毕业的英文水平就可以轻松阅读英文文档了。即便你的英文水平实在太差了,连最简单的计算机英文文档都看不懂,那么在学习 Linux 的同时学学英语,每天从背一定量的单词开始吧!

笔者给各位读者的建议是每天背 30 个在电脑上看到的不认识的单词,30 个单词不需要你会读、会写、会念,看到单词知道意思即可,一般 3~5 个月,常见的计算机英语都能看厪。

忘记Windows的思维方式

思想的转变比暂时性的技术提高更重要,因为它能帮助你加快学习速度。很多人使用 Linux 时骨子里却还是 Windows 的思想,比如讲 Linux 安装都会有读者问:"是把 Linux 装在 C 盘吗?",可见被Windows"毒害"之深。Windows 是一个优秀的系统,它的易用性非常好,不过也正是因为易用性好,使用者往往不了解自己所做操作的原理。

大多数初学者已经习惯了使用 Windows 的图形界面来完戚喿作,可是我们在学习和日后使用 Linux 时基本上在命令行模式下,这让很多初学者很头疼也很困惑。这里的问题是"如何有效利用系统资源",X Window 本身相当消耗系统资源,这也就是在架设 Linux 服务器时不启动图形界面的原因。如果你想深入了解 Linux,就必须学习命令行操作。

所以,我们在开始学习 Linux 之前,要不被 Windows 的思想所束缚。这其实是一个使用习惯的问题,笔者常常想,如果我们第一个接触的操作系统就是 Linux,那么之后我们再学习 Windows,可能我们也会感慨"这个系统为什么必须启动图形界面才能操作",说到底,是一个习惯问题吧。

学无止境,不仅是学到的知识,还有学习的意识和方法。笔者有一句话,与诸位共勉:"让学习成为一种习惯。"

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux简介 的相关文章

  • 如何检查 emacs 是在框架中还是在终端中?

    基于这个问题 如何将emacsclient背景设置为Emacs背景 https stackoverflow com questions 9271930 how to set emacsclient background as emacs b
  • 使用 OpenCV 捕获 H264 流

    所以 一段时间以来 我一直在尝试让我的 Raspberry Pi 2 使用 OpenCV 从我的 Logitech C920 捕获 H264 流 我一直在互联网上搜寻信息 但没有运气 简短的系统描述 Raspberry Pi 2 运行 Ra
  • 如何永久设置boot2docker的环境变量

    我尝试将环境变量放在来宾计算机的 var lib boot2docker profile 文件中 然后重新启动它 导出http proxy http 代理 端口 http proxy port 然后我使用以下命令从我的主机 Windows
  • 如何将 grep 的输出通过管道传输到 cp?

    我有一个工作grep选择满足特定条件的文件的命令 我怎样才能从grep命令并将其通过管道传输到cp命令 以下尝试都失败了cp end grep r TWL exclude csv cp data lidar tmp ajp2 cp 之后缺少
  • 如何使用 shell 脚本连接 2 个 csv 文件?

    我正在尝试制作一个 shell 脚本 它将通过以下方式组合两个 csv 文件 我有两个 csv 文件 f1 csv 和 f2 csv f1 csv的格式为 startId endId roomNum f2 csv 的格式如下 startId
  • Linux Xwindow 转发上的 Visual Studio Code

    我的配置如下 OS DISTRIB ID Ubuntu DISTRIB RELEASE 14 04 DISTRIB CODENAME trusty DISTRIB DESCRIPTION Ubuntu 14 04 4 LTS NAME Ub
  • 创建一个基本的 .bashrc 文件 [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我没有 bashrc文件 我想创建一个 但是如何创建 基本的是什么 bashrc文件包含 我在Linux 薄荷 12 我想要一个 bashrc文件 因
  • 使用 vala 将 uris 插入 Gtk.Clipboard

    我目前正在尝试为我的应用程序实现复制和粘贴 问题是我只能根据文档将纯文本或图像复制到剪贴板Gtk Clipboard https valadoc org gtk 3 0 Gtk Clipboard html https valadoc or
  • 如何在 Linux 中获取“文件创建时间”

    我需要找出在 Linux 中使用 C 创建文件的时间和日期 如何获取文件的最后修改日期 http www jb man ac uk slowe cpp lastmod html struct stat attrib 1 create a f
  • 在 Bash 中打开默认文本编辑器?

    我在编写 shell 脚本时遇到了一个问题 有没有办法使用用户指定的文本编辑器打开文件 用户选择的编辑器应该位于 EDITOR 但您仍必须选择合理的默认值 EDITOR vi file txt
  • Eclipse makefile 构建速度很慢...是什么原因?

    我们是 Eclipse 的狂热粉丝 这太棒了 但我们有大约 40 个 C 项目 并且还在不断增长 当所有项目都是最新的时 构建所有这些项目大约需要半分钟 总共 如果我只是创建一个对所有 40 个项目执行 make all 的 bash 脚本
  • 使用 sed 为选项卡添加背景颜色?

    是否可以使用 sed 更改选项卡 或任何其他文本 的背景颜色 以便 例如 我可以运行如下所示的内容 somefunction sed e s some pattern set bg color 1 unset bg color g Yes
  • QThread::start(优先级) 与 Linux

    我正在使用一些QThread基于 KDE Neon 18 04 中的工作线程 基于 Ubuntu 18 04 内核 4 15 0 46 generic 工作线程干扰了我的桌面应用程序 因此我决定降低它们的优先级 Qt 文档QThread s
  • 更改正在运行的进程的环境变量

    我有一个导出环境变量并启动一些下标的脚本 export LOGLEVEL 1 home myuser bin myscript1 sh home myuser bin myscript2 sh LOGLEVEL可用于从下标启动的进程 如何更
  • Docker RUN groupadd && useradd 指令无效

    我已经使用 Dockerfile 构建了 Docker nginx 基本 映像 其片段如下 FROM ubuntu 14 04 MAINTAINER Me
  • 用 C、C++ 检测 Windows 或 Linux [重复]

    这个问题在这里已经有答案了 我正在编写一个跨平台程序 我希望这个程序能够在 Windows 和 Linux 下运行 因此我为这两个平台准备了两个不同的代码段 如果操作系统是Windows 我希望第一个代码段运行 如果是Linux 那么我希望
  • 如何从“struct linux_binprm”获取argv

    我想使用 bprm check security lsm 挂钩来检查是否允许运行具有特定参数的进程 在文档中 我看到 argv 应该在 bprm 类型为 struct linux binprm 中可用 但我没有找到任何从结构中提取 argv
  • 如何从用户空间访问(如果可能)内核空间?

    Linux 内核中用户内存和内核内存到底是如何区分的 在保证内核空间安全方面 从用户空间向内核地址空间写入的方式有哪些不同 我知道的一种方法是通过系统调用 我们可以使用多种系统调用 但最终都是系统调用 即使在系统调用中 我们也会将数据发送到
  • 如何在shell中剪切字符串的第一列(可变长度)

    如何在shell中剪切字符串的第一列 可变长度 字符串的前 23006 帮助 txt 我需要 23006 作为输出 很多方法 cut d f1
  • 哪里可以找到系统调用源代码?

    在 Linux 中 如果我有源代码树 在哪里可以找到所有系统调用的源代码 另外 如果我想查找特定系统调用的源代码和程序集 我可以在终端中输入类似的内容my system call 您需要 Linux 内核源代码才能查看系统调用的实际源代码

随机推荐

  • Mac必备的矢量图处理软件:ai2021中文版

    备受期待的Adobe Illustrator 2021 for Mac终于来啦 这是全球最著名的矢量图形软件 这次的Illustrator2021中文版提升了软件的性 能 缩短了Illustrator 2021的启动时间并加快了文件打开速度
  • 【深度学习】深入浅出详解张量自动求导机制

    转载自 PaperWeekly 作者 清川 单位 上海交通大学博士生 研究方向 联邦学习 端云协同推断 1 写在前面 深入浅出 在计算机教材界被用滥的词 总是继承着领域小白的初心和梦想 顾名思义 它既意味着理解得透彻 又要求复述得通俗 如果
  • 软件测试人员在工作中如何运用Linux

    从事过软件测试的小伙们就会明白会使用Linux是多么重要的一件事 工作时需要用到 面试时会被问到 简历中需要写到 对于软件测试人员来说 不需要你多么熟练使用Linux所有命令 也不需要你对Linux系统完全了解 你只需要学会一些常用的基本命
  • 迪杰斯特拉(Dijkstra)算法

    一 算法介绍 迪杰斯特拉算法是由荷兰计算机科学家在1956年发现的算法 此算法使用类似广度优先搜索的方法解决了带权图的单源最短路径问题 它是一个贪心算法 二 核心思想 1 选定一个点 这个点满足两个条件 1 未被选过 2 距离最短 2 对于
  • 【数字图像处理笔记(七)】之冲激和取样的傅里叶变换

    本文章由公号 开发小鸽 发布 欢迎关注 老规矩 妹妹镇楼 一 冲激和取样特性 一 连续冲激的定义 线性系统和傅里叶变换研究的核心是冲激及其取样特性 连续变量t在t 0处的单位冲激表示 满足等式 物理上 如果我们把t解释为时间 那么一个冲激可
  • [Context and Structure Mining Network for Video Object Detection]阅读笔记

    文章目录 TOC 文章目录 Abstract Introduction Related work Proposed Method 1 overview 2 Sptial temporal context Information Encodi
  • 数字图像学笔记 —— 17. 图像退化与复原(自适应滤波之「最小二乘方滤波」)

    文章目录 维纳滤波的缺点 约束最小二乘方滤波 给一个实际例子吧 维纳滤波的缺点 维纳滤波 Wiener Filter 虽然是一种非常强大的退化图像还原算法 但是从实验过程我们也发现它存在着致命的缺陷 那就是要求输入退化系统的 F u v
  • WCF学习笔记(基于REST规则方式)

    一 WCF的定义 WCF是 NET 3 0后开始引入的新技术 意为基于windows平台的通讯服务 首先在学习WCF之前 我们也知道他其实是加强版的一个面向服务 SOA 的框架技术 如果熟悉WebService就会知道WebService是
  • char* 和jstring转换

    在平时的工作 经常用到jni和const类型转换 调用例子 JNIEXPORT jstring JNICALL Java com powervision videolib jni JniNatives native 1getPpsLengt
  • 数字信号处理——DFT的一些理解

    DFT 离散傅里叶变换 的基本概念 1 对信号作DFT的过程 1 对模拟信号以一定的采样率进行采样 得到离散信号 2 将离散信号转换为离散 无穷 序列 即用序列号n代替原时间变量 3 对离散 无穷 序列进行截断 只取一部分构成离散序列 有限
  • 拆分单链表

    Copyright c 2016 烟台大学计算机与控制工程学院 All rights reserved 文件名 text html 作者 常轩 微信公众号 Worldhello 完成日期 2016年11月16日 版本号 V1 0 程序输入
  • vue项目接入unity3D模块并进行数据通信

    一 添加unity工程 unity工程师会提供一个前端可使用的包 将其放在vue项目的public下 我这里以unity文件夹命名 二 在项目中创建iframe标签并引入index html文件 三 修改public gt unity gt
  • YOLO V1 学习摘要

    YOLO V1是一种基于深度学习的目标检测算法 其原理和流程如下 1 利用卷积神经网络 CNN 提取输入图像的特征 2 将图像分割成S x S个网格 grid 每个网格负责检测其中一个特定尺寸和位置的目标 3 对于每个网格 预测一个包含5
  • Pycharm无法导入anaconda的包

    Pycharm无法导入anaconda的包 第一 检查是否设置了anaconda的环境变量 第二步 查看anaconda下面的envs是否为空包 如果是空包 便要创建虚拟环境详细过程可参照 2023最新 Python Pycharm Ana
  • 堆—特殊二叉树

    我们了解了树形结构之后 知道了二叉树 但是二叉树的具体用途我们还是不知道 今天就来看看一种特殊的二叉树 堆 它是一种完全二叉树 著名的topK问题就是用堆来求取的 可以求出一组数中的最大或者最小的元素 所使用的堆就是大根堆 小根堆 所谓大根
  • VMware安装Android-x86_64-9.0-r2系统兼容arm设置

    Android x86 64 9 0 r2虚拟机安装兼容arm的android应用程序 1 安装后WLAN提示已连接无网络 实际网络联通 终端模拟器依次输入以下命令后回车重启系统 su settings put global captive
  • Xray-基础详细使用

    一 Xray介绍 Xray 是一款功能强大的安全评估工具 由多名经验丰富的一线安全从业者呕心打造而成 可支持与AWVS BP等众多安全工具联合使用 二 Xray简易架构 说明 了解 Xray 的整体架构可以更好的理解客户端和配置文件的设置
  • for循环详解

    For循环详解 举例如图下 首先for循环相比其他循环可以把条件写在一起如图所示 这变量 条件 变化必不可少其他循环也是 但是for循环有一个点它在初始变量的时候 进入循环之前就已经执行了一次 条件是每次进入循环之前都会执行并且判断 还有当
  • 【git】git rebase -i 合并多次提交

    1 概述 git rebase i 命令用于交互式地重新应用提交历史 其中 i 选项表示以交互方式进行操作 通过使用这个命令 您可以合并 删除 编辑 重排等操作提交历史 从而修改提交的顺序或合并多次提交 下面是使用 git rebase i
  • Linux简介

    1 1操作系统是什么 操作系统概述 要讲明白 Linux 是什么 首先得说说什么是操作系统 计算机系统是指按用户的要求 接收和存储信息 自动进行数据处理并输出结果信息的系统 它由硬件子系统 计算机系统赖以工作的实体 包括显示屏 键盘 鼠标