二维码

初次使用Linux 与指令列模式初探

823 人阅读 | 时间:2021年12月17日 23:10

1.1:Linux 是什么

这个问题,以标准答案来说,Linux 是一个操作系统'核心 (kernel)'的部份,目的除管理硬件分配资源之外,还需要提供软件开发者一个可以遵循的开发标准, 让程序开发人员可以在这个核心上面开发出人们所需要的软件,诸如服务器软件、生产力软件等等。 由于 Linux 核心的主要目的是在管理硬件, 因此,当然我们得要先来了解一下什么是电脑的硬件,以及相关的硬件分类,这样才比较好入门 Linux 的学习!

1.1.1:硬件与操作系统

  • 电脑硬件与数据传输

当前计算机硬件系统主要经由下面的组件组成:

  • 输入单元:包括键盘、鼠标、读卡器、扫描仪、手写板、触控屏幕等等一堆;

  • 主机部分:这个就是系统单元,被主板保护住了,里面含有一堆板子、CPU 与主内存等;

  • 输出单元:例如屏幕、打印机等等

上述主机部份是整体系统最重要的部份,该部份的组成为:控制单元、算术逻辑单元以及内存单元(含主内存、外部储存装置)等, 相关的组成图标有点像底下这样:

初次使用Linux 与指令列模式初探
图1.1.1-1、电脑硬件系统的示意图,请特别注意资料传输流程!

一般来说,上述的各个组件会以主板为媒介,将所有的元件整合起来:

  • 主板上面最重要的 CPU,则同时涵盖'控制单元'与'算术逻辑单元'这两个部份

  • 主内存则主要是提供CPU元件在处理资料时,所访问的数据存放处。 但是主内存资料是'挥发性'的,关机就不见了。

  • 为了让用户的数据可以保存,因此有外部存储设备,或称为辅助内存,这个就是一般常见的磁盘或网络磁盘

  • 包括键盘、鼠标、触控屏等,都属于输入单元

  • 包括屏幕、打印机等,都属于输出单元

模拟普通用户打开电脑准备使用浏览器的机制而言,首先电脑开机后,加载作业系统,将硬件驱动并且准备好用户的操作界面, 接下来,用户登录系统后,操作鼠标 (输入单元) 去点击浏览器,这时操作系统会从硬盘(辅助内存)将数据加载到主内存 (记忆单元), 等到数据加载完毕后,这时算术逻辑单元与控制单元就会开始去主内存存取程序与影音文字资料, 并且操作各项硬件,如显卡与声卡, 最后将处理完毕的数据输出到屏幕(输出单元)。

例题 1.1.1-1:

硬件系统最灵魂的部份当然就是 CPU 了。 但是, CPU 要有数据访问才能够逻辑的告知我们有用的数据数据。 因此,这两个部份(CPU与内存)哪个比较快,或哪个比较忙,就显得很重要。 请先阅读1.6 参考数据内关于 CPU bound 与 I/O bound 的相关文件后, 分析在一般服务器的环境下,电脑五大单元的哪个组件可能是相对比较重要的?

  • 不同的 CPU 类型

当前计算机硬件架构主要均由中央处理单元 (CPU) 所定义的各项链接组件所组成,而当前世界上消费市场中,最常见到的 CPU 架构大概可以分为两大类:

  • X86 个人电脑:由 Intel / AMD 为主要制造厂商,此架构通用于个人电脑 (包括笔记本电脑) 以及商用服务器市场上 (亦即 x86 服务器)。 目前(2020)无论Intel还是AMD在个人电脑市场都推出多核心的CPU,一般入门级CPU就具有6核心6线程的配备,AMD最高阶桌上型电脑,就具有64核心128线程的配备,在服务器市场则可以具有两路的EPYC 64核心两颗,亦即可组成128核心256执行绪的设备,对于CPU bound的需求来说,相当具有吸引力。

  • ARM 手持式设备:由安谋公司所开发的ARM CPU ,由于其架构较为精简,且可授权其他公司开发,因此目前很多厂商均针对ARM架构进行自身的CPU开发。 ARM 通常使用于手持式装置,包括手机、平板等等,其他像是单板电脑 (Raspberry pi, Xapple pi 等) 亦使用此架构。

  • 硬件与操作系统

为了简化硬件的资源操作,因此后来有开发'操作系统'来管理硬件资源的分配。 故而程序员仅须考量程序的运作流程,而无须考量内存配置、 文件系统读写、网路资料存取等,在程序开发上面较为简易。 硬件、操作系统、操作系统提供的开发界面以及应用程序的相关性,可以使用下面的图标来说明:

初次使用Linux 与指令列模式初探
图1.1.1-2、硬件与操作系统相关性
  • 硬件:例如 x86 个人电脑以及 ARM Raspberry pi 即是两种不同的硬件。 但 x86 个人电脑与 x86 笔记本电脑,两者则是相同的硬件架构喔。 不同的硬件架构具有不同的微程序指令集,驱动方式与资源分配方式会有所不同,因此需要有不同的操作系统去驱动与管理。

  • 核心:就是操作系统最基本的部份! 该系统内部涵盖文件系统、网络系统、记忆单元管理系统、硬件驱动程序、数据加密机制等等的子系统, 提供基础的硬件管理,还有资源分配的功能。

  • 系统呼叫:可视为核心提供的一系列函式库,程序员只要参考此部分的系统呼叫即可设计相关的应用程序,而不用去考虑核心所管理的各项子系统。 例如撰写 java 程序时,你可以仅针对 java 程序的语法去撰写,而无须考虑 CPU 的伫列、内存的分配放置、档案存取的方式等等,开发当然变得更简单。

  • 应用程序:就是在该系统呼叫的环境中,撰写代码编译而成的 binary code 程序。

现代的操作系统主要的目的就是在控管硬件的资源,并且提供一组开发环境让其他第三方第三方可以方便的在该操作系统上面开发相关的软件。 故操作系统主要包含的部份是:'核心+系统呼叫'

例题 1.1.1-2:
  1. 运用图 1.1.1-2 的四个同心圆,尝试说明当年为何从 windows XP 转到 Vista 时,很多应用程序无法运作?

  2. 除了云端软件之外 (一般云端软件,如 office 365) ,大部分的操作系统软件在贩售时,会告知适合的硬件等级, 而一般应用软件则会告知适用的操作系统,其主要的原因为何?

  3. 桌上型 Linux 操作系统发布套件的 binary code 安装光盘,能不能拿来安装到手机硬件上? 说明为什么?

现代的 Linux 操作系统主要以可跨硬件平台的 C 程序语言所写成,且 Linux 自从 3.x 以来的核心版本已经支持了 ARM 的 CPU 架构,因此 Linux 可以轻松的在不同的硬件平台间编译后安装。 但你依旧不可以直接拿 x86 架构的编译好的 Linux 去安装在 ARM 的平台上! 因为两者对个别硬件的设计还是不太相同的!

1.1.2:Linux 操作系统的发展沿革

Linux 并非凭空撰写而来,其发展有一定的历史背景。 由于这些历史背景,目前 Linux 是自由软件,可以自由的使用、学习、修改、编译、再发行, 而且是相对稳定的操作系统。

1965年以前的计算机系统:
最早的硬件没有操作系统的概念,后来为了管理方便,因此有了'多元程序处理系统', 更于后来以多元程序处理系统的概念再开发出了分时兼容系统。 当时的硬件主要是通过大型主机系统,内含分时兼容系统,并提供大约 16 个文字终端机连线。 不过当用户过多时,需要等待才能够使用电脑系统。

初次使用Linux 与指令列模式初探
图1.1.2-1、多元程序处理系统的程序概念
  • 1969年以前:一个伟大的梦想--Bell,MIT与GE的'Multics'系统:

    Multics计划希望能够改善以前的大型主机系统,提供至少 300 个以上的文字终端机。 最终虽然成功的开发出 Multics 系统, 但是相对于 Unix 而言,Multics 的使用率并不高。

  • 1969年:Ken Thompson的小型file server system
    参与过 Multics 计划的 Thompson 为了移植一套游戏,通过组合语言编程撰写一套昵称 Unics 的软件,该软件可以控制 PDP-7 这个硬件主机, 提供了小型的档案系统管理功能等。

  • 1973年:Unix的正式诞生,Ritchie等人以C语言写出第一个正式Unix核心
    Thompson 与 Ritchie 合作,Ritchie 撰写 C 程序语言后,再以 C 改写 Thompson 的 Unics ,最后编译成为一套操作系统。 此系统就被称为 Unix。 由于使用 C 高阶程式语言撰写,人们很容易看得懂代码,因此改写、移植程序就变得很简单。

  • 1977年:重要的Unix分支--BSD的诞生
    柏克莱大学的Bill Joy 在取得了Unix的核心源代码后,着手修改成适合自己机器的版本, 并且同时增加了很多工具软件与编译程序,最终将它命名为Berkeley Software Distribution (BSD)。

  • 1979年:重要的 System V 架构
    与版权宣告 Bell lab. (贝尔实验室) 的母企业为AT&T公司,AT&T在1979开发最新的SystemV之Ux操作系统。 这个系统最特别的地方是, SystemV 可以支持当时没有多任务环境的 x86 个人电脑。 此外,AT&T在1979年发行的第七版Unix中,特别提到了'不可对学生提供源代码'的严格限制!

  • 1984年之一:x86架构的Minix操作系统开始撰写并于两年后诞生
    因为 SystemV 之后,大学老师不可以教授 Unix 核心源代码,因此 Andrew Tanenbaum 自己动手写了 Minix 这个 Unix Like 的核心程序! 同时搭配 BBS 新闻群组与相关书籍来贩售 Unix Like 的代码。 因为强调的是学习代码,因此改版的速度相当缓慢。

  • 1984年之二:GNU计划与FSF基金会的成立
    Richard Mathew Stallman(史托曼)在1984年发起的 GNU 计划,目的是想要恢复以前'知识分享的黑客文化',因此强调代码需要公开以利学习的自由软件概念, 并开发出 bash, gcc, glibc, emacs 等脍炙人口的软件。 Stallman 将所有的软件都上网,但是没有互联网的朋友也能够通过邮件请 Stallman 寄送软体磁带,Stallman 经由这样贩售 emacs 的'服务费用'(Stallman 认为协助人们烧录软件,花费他很多的时间成本) 赚了点钱,然后成立了自由软件基金会 (FSF, Free Software Foundation),同时与律师共同签署了 GNU 的通用公共许可证(General Public License, GPL), 该授权让用户可以自由的使用软件,且软件的授权可以可持续的存在。

  • 1988年:图形界面XFree86计划
    为了解决图形用户界面 (Graphical User Interface, GUI) 的需求,于是有 XFree86 这个组织的形成。 XFree86 是由 X Window System + Free + x86 所组成的,目的在提供 server/client 的图形画界面。

  • 1991年:芬兰大学生Linus Torvalds的一则
    简讯 Torvalds 在 1991 年于 BBS 上面公告他透过 GNU 的 bash, gcc 等,通过学习 Minix 系统,在 x86 (386) 上面成功的开发一个小型的操作系统, 并且放在 Internet 上面提供提供大家自由下载。 同时,还鼓励大家告知 Torvalds 自己,这个系统还有哪些部份可以值得继续修改等的讯息。 这就是 Linux 的起源!

  • 1992年:Linux distributions发行
    : 为了让用户更方便安装与操作 Linux,于是有了 Linux 开发套件的软件释出,就称为 Linux distribution 了。 一开始于 1992 年就有 Softlanding Linux System(SLS), Yggdrasil Linux 等版本。

  • 1994年:Linux kernel version 1.0
    释出: 1994 年 Linux 核心释出 1.0 版本,同时目前世上最知名的 Linux 商业公司 Red Hat 也在当时成立。

  • 1996年:Linux kernel version 2.0 释出,此核心版本可以支持多核心 CPU 的运作 (SMP)

  • 2004年:X.Org 基金会接管 XFree86 团队,开始加快 X window system 的开发

  • 2005年:Google 收购 Android 公司
    从 2003 年开始,加州的一家公司开始发展 Android 系统在手机上面。 后来 Google 于 2005 年收购该公司,并将 Android 在 Linux 核心上开发, 以发展可以让手持式设备使用的操作系统。 首个商用手机 Android 操作系统则在 2008 年由 HTC 推出!

  • 2011年:Linux kernel version 3.0 发布

  • 2012年:教育市场的Raspberry pi
    为了让小朋友能够轻松愉快的学习编程语言,一个小型的单板电脑制造基金会依据ARM的架构开发了一版大约与笔记本电脑盘差不多大小的主板, 内嵌入所有电脑系统所需要的硬件,这就是树莓派(Raspberry pi)。 Raspberry pi 的默认操作系统即是搭配 Linux 核心所开发的小型操作系统。

  • 2013年:Android 占据大约 75% 的智能手机市场

  • 2015年:Linux kernel version 4.0 发布

  • 2019年:Linux kernel version 5.0 发布

例题 1.1.2-1:
  1. 参考图 1.1.2-1 并尝试说明多元程序处理系统需要可以 I/O 与 CPU 分离运作的主要架构,是透过内存内的哪些程序状态达成的? 且这些程序的状态运作情况为何?

  2. 昵称'最纯种的 UNIX '指的是那两套 Unix 操作系统?

  3. 上网找出: (1)GNU 计划的全名; (2)GNU 计划的官网; (3)GNU 的吉祥物; (4)GNU 的核心名称为何?

1.1.3:GNU 的 GPL 与 Opensource 开放源代码授权

GNU 的 GPL 授权主要强调自由的学习,Free Software(自由软件)是一种自由的权力,并非是『价格!』 举例来说,你可以拥有自由呼吸的权力、你拥有自由发表言论的权力,但是,这并不代表你可以到处喝'免费的啤酒! (free beer)', 也就是说,自由软件的重点并不是指'免费'的,而是指具有'自由度, freedom'的软件,史托曼进一步说明了自由度的意义是: 用户可以自由的执行、复制、再发行、学习、修改与强化自由软件。

GNU 的 GPL 授权有底下的权力与义务:

  • 取得软件与源代码:你可以根据自己的需求来执行这个自由软件;

  • 复制:你可以自由的复制该软件;

  • 修改:你可以将取得的源代码进行程序修改工作,使之适合你的工作;

  • 再发行:你可以将你修改过的程序,再度的自由发行,而不会与原先的撰写者冲突;

  • 回馈:你应该将你修改过的代码反馈于社群!

  • 不可修改授权:你不能将一个GPL授权的自由软件,在你修改后而将他取消GPL授权~

  • 不可单纯贩卖:你不能单纯的贩卖自由软件。

由于自由软件使用的英文为free software,这个free在英文是有两种以上不同的意义,除了自由之外,免费也是这个单字! 因为有这些额外的联想,因此许多的商业公司对于投入自由软件方面确实是有些疑虑存在的! 许多人对于这个情况总是有些担心~

为了解决这个困扰,1998 年成立的'开放源代码促进会 (Open Source Initiative)」提出了开放源代码 (Open Source,亦可简称开源软件) 这一名词! 另外,并非软件可以被读取源代码就可以被称为开源软件喔! 该软件的授权必须要符合底下的基本需求,才可以算是 open source 的软件。

  • 公布源代码且用户具有修改权:用户可以任意的修改与编译代码,这点与自由软件差异不大;

  • 任意的再散布:该代码全部或部份可以被贩售,且代码可成为其他软件的组件之一,作者不该宣称具有所有权或收取其他额外费用。

  • 必须允许修改或衍生的作品,且可让再发布的软件使用相似的授权来发表即可。

  • 承上,用户可使用与原本软件不同的名称或编号来散布。

  • 不可限制某些个人或团体的使用权

  • 不可限制某些领域的应用:例如不可限制不能用于商业行为或者是学术行为等特殊领域等等

  • 不可限制在某些产品当中,亦即代码可以应用于多种不同产品中。

  • 不可具有排他条款,例如不可限制本代码不能用于教育类的研究中,诸如此类。

例题 1.1.3-1:

如果你自己开发的软件未来可能会有商业化的可能,但目前你希望使用 Open source 的方式来提供大家使用。 另外,也希望未来能够有一支保有开放源码软件的分支,那最好使用 GPL 还是 BSD 呢?

1.1.4:Linux kernel

Linux kernel 主要由http://www.kernel.org维护,且在 2019 年已经释出了 5.0 版。 Linux kernel 1.0 在 1994 年释出, 在 1996 年释出 2.0 版,在 2.0 之后,核心的开发分为两个部份,以当时广为使用的 2.6 来说明的话,主要的分类有:

  • 2.6.x:所谓的偶数版,为稳定版,适用于商业套件上;

  • 2.5.x:所谓的奇数版,为发展测试版,提供工程师一些先进开发的功能。

这种奇数、偶数的编号格式在 2011 年 3.0 核心推出之后就失效了。 从3.0版开始,核心主要依据主线版本(MainLine)来开发,开发完毕后会往下一个主线版本进行。 例如4.9就是在4.8的架构下继续开发出来的新的主线版本。

旧版本在新的主线版本出现之后,会有两种机制来处理,一种机制为结束开发(End of Live,EOL),亦即该代码已经结束,不会有继续维护的状态。 另外一种机制为保持该版本的持续维护,亦即为长期维护版本 (Longterm)! 例如 4.14 即为一个长期维护版本,这个版本的代码会被持续维护,若代码有 bug 或其他问题,核心维护者会持续进行代码的更新维护。

例题 1.1.4-1:
  1. Android 的版本搭配的 Linux 核心版本为何?

  2. 由 Linux kernel 官网的'Releases'相关说明,找出现阶段的 Linux Mainline, Stable, Longterm 版本各有哪些?

1.1.5:Linux distributions

为了让用户能够接触到Linux,于是很多的商业公司或非营利团体,就将Linux Kernel(含tools)与可运行的软件整合起来, 加上自己具有创意的工具程序,这个工具程序可以让用户以光盘/DVD或者透过网络直接安装/管理Linux系统。 这个'Kernel + Softwares + Tools + 可完整安装程序'的咚咚,我们称之为Linux distribution, 一般中文翻译成可完整安装套件,或者Linux发布商套件等。

常见的 Linux distributions 分类有:


RPM 软件管理DPKG 软件管理其他未分类
商业公司RHEL (Red Hat 公司)
SuSE (Micro Focus)
Ubuntu (Canonical Ltd.)
社群单位Fedora
CentOS
OpenSuSE
Debian
B2D
Gentoo

一般用途在个人电脑的使用,建议可以使用 Ubuntu / Fedora / OpenSuSE 等,若用在 Server 上, 建议可以使用 CentOS 或 Debian。

CentOS 的产生较为有趣,他是取自 Red Hat 的 RHEL 操作系统,将源代码中与 Red Hat 相关的注册商标或其他著作相关的资料移除, 改以自己的'企业商用社群版本操作系统'取名,然后再次发行。 因此CentOS的版本与RHEL是亦步亦趋的! (包括 Oracle Linux 与 Scientific Linux 也是同样的作法)。

例题 1.1.5-1:

为什么CentOS社群可以直接取用RHEL的代码来修改后释出? 这样做有没有任何法律的保护呢?

1.1.6:Linux 的常见用途

用在企业环境与学术环境中,最常见到的应用有:

  • 网络服务器

  • 关键任务的应用(金融数据库、大型企业网管环境)

  • 学术机构的高效能运算任务

个人的使用则有:

  • 桌上型电脑

  • 手持系统(PDA、手机、平板电脑、精简电脑等)

  • 嵌入式系统 (如 raspberry pi / Xapple pi 等内置的 Linux 系统)

物连网 (Internet of Things, IoT) 的使用:

  • 由于目前物连网的需求广泛,例如空气盒子以及各种相关的侦测器组件,这都需要一些操作系统进行数据收集与传输, 因此导致类似树莓派的流行。 这树莓派的内置操作系统,就是Linux。

例题 1.1.6-1:

超级计算机可以说是一个国力的展现,而 top500 每年会有两次去调查全世界跑得最快的超级计算机,台湾在 2019/11 的调查中,有一部超级计算机名列 21 名, 在https://www.top500.org/system/179590 ,查询一下该系统: (1)拥有几颗 CPU 核心 (2)使用多少容量的内存 (3)使用什么操作系统呢? (4)耗电量若以一度电 5 元台币计算,系统运作一天要花多少钱?

例题 1.1.6-2:

前往 Dell 官网,调查其支持的 Linux distribution 主要是那几种? 另外,请思考这个查询的意义为何? (https://linux.dell.com/files/supportmatrix/)

1.2:登入与操作 Gocloud 云端系统 (鸟哥教室专用)

为方便教师/学生可以在任何地方学习 Linux 操作系统,一个教学环境是需要事先建置的。 除了使用物理机器原生的 Linux 之外, 虚拟化的环境更方便教师制作教学单元。 因为虚拟化的环境软/硬件可以模拟的完全一致,对于教师与学生的实作练习以及错误重现,都有很大的帮助。

本教材默认使用的 Gocloud 云端系统为鸟哥在自己的课堂上面搭建的小型云服务器,对于同学无间断的学习是很有帮助的。 不过因为系统硬件资源太少了, 所以仅开放给鸟哥实际课程的同学们使用,实际并未对互联网开放,在此跟大家说声抱歉! 如果您是自学的朋友,那只好请参考书上的光盘数据, 使用 VirtualBox 软件作为自学磁盘的系统了!

(ps. 除了 Gocloud 系统之外,老师们也可以选择 Ovirt (https://ovirt.org/) 作为教学训练的环境建置, 或者单纯在原有的教室 windows 系统上面建置 virtualbox 的环境来教学即可。 关于 virtualbox 的建置,可以参考光盘附件。 如果预计使用 ovirt, 可以参考如下的链接:https://www.ovirt.org/documentation/install-guide/Installation_Guide.html)

1.2.1:注册 gocloud 与登入

除非贵单位有购买与安装 Gocloud 系统,否则请以光盘内容的 virtualbox 环境取代底下的说明。 如果安装 Gocloud 系统, 请依据贵单位的环境设置( 互联网 IP 或 主机名),直接以浏览器连接到 Gocloud 系统,系统示意图如下所示:

初次使用Linux 与指令列模式初探
图1.2.1-1、Goucloud 画面示意图

如果是第一次使用的学生,那就请先来注册一下! 按下如上图的箭头指向的地方,点下去就会出现注册的项目了,如下所示:

初次使用Linux 与指令列模式初探
图1.2.1-2、Goucloud 注册画面示意图

一般来说,如果是学校单位,鸟哥建议如上述画面所示,最好请学生依据自己的学号作为账号,真实姓名作为姓名填写, 这样老师比较知道学生与账号的对应,在考试出题与作答时,会比较清楚对应。 如果没有强调这一点,那学生注册的姓名可能会比较伤脑筋。 等到注册完毕后,还要等老师将你的账号开通之后才能够使用。 因此,此时请稍微等待一小段时间喔!

等到老师将你的账号开通,并且假设老师已经将硬盘制作好给你了,此时请回到图 1.2.1-1去输入帐号与密码字段, 并按下登入系统或 [Enter],那就能够登入系统了。 登录系统会出现如下的图标:

初次使用Linux 与指令列模式初探
图1.2.1-3、Goucloud 登入后的画面示意图

画面中最上方为学生可以操作的系统功能,其中比较常用的是:

  • 启动/关闭主机:让学生可以 (1)启动云端虚拟机,并打开 gocloud 的防火墙,取得连接的 URL; (2)虚拟机运作中,可以抽换光盘; (3)可以强制关机 (直接断电)。

  • 课程磁盘复原:在虚拟机器关机的状态下,可以将个人的磁盘复原到最原始的状态,所以学生可以实际多操作数次,做完直接复原即可。

  • 软件下载:其实主要是针对 Windows 系统喔! 可以安装连接软件,如此你的 windows/Linux 就可以使用 remote-viewer 这套软件来获取云端虚拟机的终端界面。

实际练习:安装 remote-viewer

课程的 Linux 操作系统需要用到虚拟机,您计算机与网络云里面操作系统是需要连接软件的支持的。 gocloud 目前提供的是使用 remove-viewer 这套软件来连线, 底下会介绍常见的操作系统安装 remote-viewer 的过程,请依据你的环境来安装。

除非贵单位有购买与安装 Gocloud 系统,否则请以光盘内容的 virtualbox 环境取代底下的说明。 如果安装 Gocloud 系统, 请登录系统后,根据你自己家用 (或计算机教室中) 的操作系统,下载正确的 remote-viewer 软件,并且安装后启动该软件。

  1. Windows 操作系统:virt-viewer 为自由软件,网络有提供已经预编译好的 windows 软件,直接下载安装即可。 目前(2020/03)最新的版本为 8.0 版,请安装 64 位的版本,如下链接所示:(点选'Win x64 MSI (gpg)』那个项目即可! ) https://virt-manager.org/download/

  2. Mac OSX 操作系统:有两种方式可以安装 virt-viewer,第一种是安装比较旧版,但是动作相对简单的 0.5.7 版,如底下的 A 链接,直接下载安装即可。 另一种则是前往 spice 官网,使用自己编译的方式编译出最新的 virt-viewer 版本,但是过程非常繁复。 因此,建议直接下载第一个档案来安装即可,较简单。

    1. https://people.freedesktop.org/~teuf/spice-gtk-osx/dmg/

    2. https://www.spice-space.org/osx-client.html

  3. Linux 操作系统:如果是 Red Hat 系列的 (RHEL/Fedora/CentOS) ,直接安装 virt-viewer 软件即可。 安装方式为(有启动网络的情境下):'yum install virt-viewer',启动方式为 (须有图形界面的环境下):『remote-viewer』

  4. Android 平板:目前 Android 平板也能够支持 gocloud 的连线了,不过需要于 play.google.com 下载 aSpice 才能够连接 (不是 remote-viewer 软件)。

这里假设学校的电脑大多为 windows 操作系统,因此当安装完软件后,可以在'开始'-->'所有程序'-->'VirtViewer'找到' Remote Viewer '这套软件。 点击此软件后,就可以得到如下的画面:

初次使用Linux 与指令列模式初探
图1.2.1-4、学生端电脑连接到 Gocloud 的 remote viewer 软件示意图

当学生开启虚拟机后,将虚拟机器所在的网址复制到上述箭头所指定的方框中,即可达成连线。

1.2.2:启动与管理虚拟机

除非贵单位有购买与安装 Gocloud 系统,否则请以光盘内容的 virtualbox 环境取代底下的说明。

若有安装 Gocloud 系统, 在你登录 Gocloud 网站系统后,点击'启动/关闭主机'后,应该会得到如下的画面。 如果一切顺利的话,那么你应该会取得至少一个以上的硬盘环境。 如下图的 2 头箭头处。 如果找不到任何硬盘,请与您的授课教师联系。 选择正确的磁盘后,请按下'开启机器'的按钮来启动云端虚拟机。

初次使用Linux 与指令列模式初探
图1.2.2-1、利用 Gocloud 系统启动云端虚拟机的示意图

如果一切顺利,那么你就会得到如下的画面示意图,基本上,我们最重要的是取得如下图 1 号箭头指的方框处的 URL (spice 开头那项), 请复制该项目,并且将他贴上图1.2.1-4所需要指定的 URL 方框中,按下连线 (Connect) 即可取得如图1.2.2-3的云端虚拟机器窗口了!

初次使用Linux 与指令列模式初探
图1.2.2-2、Gocloud 系统上面已经启动了云端虚拟机器的示意图
初次使用Linux 与指令列模式初探
图1.2.2-3、以 Remote viewer 软件获取 Gocloud 上的云端虚拟机

remote viewer 软件左上方主要有两个基本功能可以选择:

  • View:可以将整个画面放大到'全屏幕(Full Screen)',要取消只要按下键盘功能键 [F11] 即可复原,也能够放大、缩小画面。

  • Send key:可以传送组合按键给虚拟机,避免由于直接按下按键导致 windows 或客户端自己其他操作系统的困扰。

另外请注意,由于目前你应该有两个完全独立的系统,一个是你自己的系统,一个是 Gocloud 的云端虚拟机, 若要操作 Gocloud 的云端虚拟机器时,你应该要将鼠标移动到 remote viewer 的窗口内,这样才能够完整的使用虚拟机的资源!

实际练习:尝试熟悉 remote-viewer 软件
  1. 依据上述的说明,取得你的云端虚拟机;

  2. 在 remote-viewr 的软件左上方,点选'view'、'zoom'、'zoom in | zoom out | normal size',测试一下画面的变化情境

  3. 点选'View'、'Full screen',看看画面是否已经变成全屏幕状态

    将鼠标光标移动到整个画面的中央正上方,这时画面正上方会出现一个小按钮,如下所示,下图中,1 头箭头表示可以回到原本的小窗口画面, 2 号箭头则是直接关掉这个虚拟机。 请点击 1 头箭头,回到原本的小窗口中。

    初次使用Linux 与指令列模式初探
    图1.2.2-4、熟悉 remote-viewer 软件
  4. 点选'Send key'、'Ctrl + Alt + F2',然后再点选'Ctrl + Alt + F1',看看画面的变化情境。

  5. 承上,请将鼠标移动到 remote-viewer 的窗口内,然后分别点选'Ctrl + Alt + F2'与'Ctrl + Alt + F1', 看看画面的变化。

另外请注意,如果是使用 remote-viewer 的方式来进行云端虚拟机的连接时,由于 remote-viewer 的使用与网络带宽很有关系, 所以,如果带宽不太足够的情况下 (不论是服务器端还是客户端),可能会导致 remote-viewer 的连线中断。 但是很可爱的是,离线中断后, remote-viewer 会一直呈现离线那一刻的画面... 所以就会造成用户误以为系统宕机的情况。 此时只要关闭remote-viewer,并重新连线一次, 就可以再次取得连线的画面了。

1.3:第一次登录CentOS 8

取得云端 Linux 机器后,就能够开始操作 Linux 系统了。 接下来先来学习如何登入 Linux、了解图形界面、文字界面的操作差异, 并建立好'良好的操作行为',这对于未来的帮助会很大的

本教材预计在训练学员们了解 Linux 在服务器的使用上,应该如何操作与学习,因此使用了 CentOS 这套 Linux 操作系统来学习。 请大家依据教材的内容慢慢实做练习,以理解整个系统的操作!

1.3.1:图形界面操作 CentOS

图1.2.2-3的画面中,(1)使用鼠标左键将屏幕向上拉动,(2)或者是随意在键盘上面输入任意键, 就会出现等待登入的画面,如下所示:

初次使用Linux 与指令列模式初探
图1.3.1-1、CentOS 8 图形界面登录示意图

你可以:

  • 点击出现的人名 (你的账号),然后输入密码,即可登录系统;

  • 点选『Not listed?』 :接下来出现『Username』请填写帐号,按下 [Next] 出现『Password:』请输入正确的密码, 然后按下 [Sign In] 即可登入系统。

本教材提供虚拟机的账号与密码为'student/mystdgo',请依据此帐号密码来登入系统。

实际练习:首次登录CentOS图形界面
请第一次登录系统,并且处理好中文的操作界面! 同时,家目录底下的档案文件名,最好不要有中文存在。
答:

登录:根据教材提供的帐号密码登录系统:选择 student 帐号,然后输入密码,如下图所示:

初次使用Linux 与指令列模式初探
图1.3.1-2、图形界面登入流程

语系选择:第一次登录时,会出现选择用户语系的画面,以符合每个操作者的习惯语系界面。 本教材默认使用英文界面, 所以,这里请改变语系,改变的方法请点击最底下的未知(三个直立的小数点),然后输入 taiwan 的 t ,系统会主动拉出台湾! 如下所示:

初次使用Linux 与指令列模式初探
图1.3.1-3、图形界面登入流程

初次使用Linux 与指令列模式初探
图1.3.1-4、图形界面登入流程
  1. 输入法选择:选择默认的输入法为『英语(美式)』即可按下 [下一步];

  2. 初次使用Linux 与指令列模式初探
    图1.3.1-5、图形界面登入流程

    隐私权与帐号关联性:由于我们的虚拟机器就是个云端的机器,因此网络位置以及线上账号,都可以选择略过,如下所示:

    初次使用Linux 与指令列模式初探
    图1.3.1-6、图形界面登入流程

    初次使用Linux 与指令列模式初探
    图1.3.1-7、图形界面登入流程

    准备开始使用:接下来还会出现两个画面,一个是'开始使用 CentOS Linux (S)'的画面,一个则是'Getting Started'的画面, 第一画面个只是告知设定完毕,第二个画面则是初次进入系统的指引。 你可以每个指引都查看,也可以直接略过,我们这里选择略过, 直接按下右上方的'X'即可。

    查阅画面与注销:此时画面依旧是英文,你可以点击左上角的'Activities'按钮,然后点选左侧最下方的按钮列程序集 (九个小点合成的按钮), 就会出现如下画面。 之后,点选右上角的开关按钮,然后在你的账号(student)点一下,就会出现'Log Out'按钮,点下去! 有点像这样:

    初次使用Linux 与指令列模式初探
    图1.3.1-8、图形界面登入流程

    接下来你有 60 秒的时间可以等待是否注销,如果要立即注销,就点选'Log Out'按钮,如下所示:

    初次使用Linux 与指令列模式初探
    图1.3.1-9、图形界面登入流程

    再次登入与确认家目录的子目录文件名:再次以图 1.3.1-2的画面,使用 student 帐号登录系统, 登录之后,由于文件名与语系不同,因此 CentOS 会再次询问你的意愿。 建议保留英文,未来比较好操作,如下所示:

    初次使用Linux 与指令列模式初探
    图1.3.1-10、图形界面登入流程

如果一切处理顺利,那就可以出现图形化窗口。 现在,请在登入的画面上,按下左上角的'概览'按钮,然后在左侧的'终端机'点一下, 就会出现如下画面的环境了!

初次使用Linux 与指令列模式初探
图1.3.1-11、图形界面登入流程
  • 图形界面元件认识

现在,请先按下'概览'按钮,然后将鼠标向右移到窗口的边界,就会看到类似如下的画面:

初次使用Linux 与指令列模式初探
图1.3.1-12、图形界面画面认识

上述的各个组件大致上是这样功能:

  1. 概览:就有点像是整个画面叫出活动范围的按钮,要看到上图的画面,就得点选'概览'才行

  2. 菜单:有点像以前的开始功能集,你需要的软件,大部分都在这里。 例如上面画面中,有浏览器、档案总管、软件仓库、求助(救生圈)、终端机与程序集等。 点下各个按钮,即可启动该软件。 另外,你也可以在每个软件上面按下右键,还有额外的选项可以挑选呢。

  3. 虚拟桌面:CentOS 8 跟以前的版本不一样,以前的版本我们可以自行预定义出所需要的虚拟桌面,这一版则是当你有需要,才点下新的虚拟桌面即可。 如上图所示,你在第 3 个箭头处,有目前的桌面 (聚焦外环的项目),以及另一个就是新的虚拟桌面,亦即有需要才有新的桌面的意思。

    控制台:这里的项目有很多,包括亮度挑选、网络是否启动与关闭、用户名称与注销功能、直接进入控制台功能、直接关机或休眠等, 相关内容有点像底下这样:

    初次使用Linux 与指令列模式初探
    图1.3.1-13、图形界面画面认识
  4. 此虚拟桌面执行的软件:这个与 3 号箭头有关,亦即当你选择虚拟桌面之后,在该虚拟桌面的软件全部会展示出来,此时你就可以选择你要执行的软件了。

整个图形界面大致如上介绍,底下请你自己探索一下整个系统内容吧:

例题 1.3.1-1:使用图形化界面进行档案管理操作
  1. 先启动档案管理的软件

  2. 查看屏幕,主要分为那三个区块 (上/左/右)

  3. 要显示详细资料,应该点击哪个项目?

  4. 详细资料还想要有:所有者、群组、权限等资料,该如何设定?

  5. 想浏览整个系统的档案,要点击哪里?

  6. 持续点击'电脑'、'etc'、'passwd'这个档案,选择复制,再到家目录去贴上,查看一下档案的相关属性是否相同?

  7. 持续点击'电脑'、'root',能不能进入该目录? 为啥?

例题 1.3.1-2:调整中文输入法与启用文字编辑器
  1. 由于教学系统原本仅使用英文环境,因此默认并没有安装相关的中文输入法,因此我们得要开启网络后安装相关软件,因此,第一步请启动网络

  2. 启用终端,同时切换身份成为 root 管理器(管理员密码 myCentOS8)

  3. 输入' yum install ibus-libzhuyin '这段代码,开始安装软件

  4. 输入' exit'两次,离开终端机

  5. 再次注销后,重新登录,以更新输入法模块

  6. 由右上角进入控制台,然后在'地区与语言'的地方新增新注音即可。

  7. 呼叫出'文本编辑器'软件

  8. 随意在该软件上面输入一些中文字

  9. 按下'储存',将文件储存在'家目录'的名为'text1.txt'的档案中,并关闭文字编辑器

  10. 前往档案总管看看是否有该档案的存在。

例题 1.3.1-3:

由于我们是虚拟机,因此在云里面是不需要屏幕的,因此似乎无须屏幕保护功能,请关闭屏幕保护功能。 此外,也请自行调整屏幕分辨率, 以配合你自己的屏幕与上课所需要的环境!

由于使用图形界面时,会在用户的家目录建立相当多的图形界面操作设定文件与暂存档。 不过在系统管理员 (root) 的角色下, 我们希望不要有太多杂乱的资料,因此建议'不要在图形环境下使用 root 的帐号登录系统'喔! 你可以在其他的登录界面使用 root 的帐号! 如下一个小节的纯文字模式介绍~

1.3.2:文字/图形界面的切换

Linux默认的情况下会提供六个Terminal来让用户登录, 切换的方式为使用:[Ctrl] + [Alt] + [F1]~[F6]的组合按钮。

系统会将[F1] ~ [F6]命名为tty1 ~ tty6的操作界面环境。 也就是说,当你按下[ctrl] + [Alt] + [F1]这三个组合按钮时 (按着[ctrl]与[Alt]不放,再按下[F1]功能键), 就会进入到tty1的terminal接口中了。 同样的[F2]就是tty2! 按下[Ctrl] + [Alt] + [F1]就可以回到原本的 X 图形界面中。 整理一下登入的环境如下:

  • [Ctrl] + [Alt] + [F2] ~ [F6] :文本接口登录 tty2 ~ tty6 终端机;

  • [Ctrl] + [Alt] + [F1] :图形界面桌面。

实际练习:在 tty2 使用 student 帐号身份登录:
  1. 透过 remote-viewer 的' Send key '切换,或者将鼠标移动到 remote-viewer 的软件内,按下 [alt]+[shift]+[F2] 皆可。

  2. 你会发现到整个画面有点像底下这样:

    CentOS Linux 8 (Core)
    Kernel 4.18.0-147.el8.x86_64 on an x86_64
    
    localhost login: studentPassword: <==這裡輸入你的密碼Last login: Sun Mar 1 16:37:30 on :0 <==上次登入的情況[student@localhost ~]$ _ <==游標閃爍,等待你的指令輸入
  3. 基本上,这就是所谓的文字界面! 与图形界面取得终端的方式的差别在于:须不须要输入帐号与密码而已!

上面显示的内容为:

  1. CentOS Linux 8 (Core)
    显示Linux distribution 的名称 (CentOS) 与版本(8);

  2. Kernel 4.18.0-147.el8.x86_64 on an x86_64
    显示 Linux 核心的版本为 4.18.0-147.el8.x86_64,且目前这部主机的硬件等级为x86_64。

  3. localhost login:

    localhost 是主机名。 至于login:则是一支可以让用户登录的程序。 你可以在login:后面输入你的账号后,按下 [enter] 就可以开始准备下个动作。

  4. Password:
    这一行的出现必须要在上个动作按 [enter] 之后才会出现。 在输入密码的时候,屏幕上面'不会显示任何的字样! 』 这是为了担心用户输入密码时,被偷看到『输入的密码长度』之故。

  5. Last login: Sun Mar 1 16:37:30 on :0
    当用户登录系统后,系统会列出上一次这个帐号登录系统的时间与终端名称!

  6. [student@localhost ~]$ _
    这一行则是正确登录之后才显示的讯息, 最左边的 student 显示的是『目前用户的帐号』,而@之后接的 localhost 则是『主机名称』,至于最右边的『 ~ 』则指的是 『目前所在的目录』,那个 $ 则是『提示字符』

上述比较重要的数据在第 6 行,CentOS 的 bash 提示字符通常的格式就是『 [用户帐号@本主机名 工作目录]提示字符 』。 其中比较重要的项目是:

  • ~ 符号代表的是『用户的家目录』的意思,他是个『变量!』。 举例来说,root的家目录在/root, 所以 ~ 就代表/root的意思。 而student的家目录在/home/student, 所以如果你以student登入时,他看到的 ~ 就会等于/home/student

  • 提示字符方面,在Linux当中,默认root的提示字符为 # ,而常规身份用户的提示字符为 $ 。

另外,文字界面等待登录画面的第一、第二行的内容其实是来自于/etc/issue这个档案!

那么如何离开系统呢? 其实应该说'注销Linux'才对! 注销很简单,直接这样做:

[student@localhost ~]$ exit

就能够注销Linux了。 但是请注意:'离开系统并不是关机!' 基本上,Linux本身已经有相当多的工作在进行,你的登入也仅是其中的一个'工作'而已, 所以当你离开时,这次这个登入的工作就停止了,但此时Linux其他的工作是还是继续在进行的!

例题 1.3.2-1:多重登入与观察登入帐号
  1. 重新以 student 的身份登入在 tty3 的位置上

  2. 输入 w (who 的缩写) 查看用户在干什么

  3. 为什么有 tty3, :1 等,那是什么?

1.4:简易的文字指令操作

站在服务器角度的立场来看,使用纯文字模式来进行系统的操作是很重要的! 毕竟服务器通常不会启用图形界面。 因此,第一堂课接触过 Linux 与登录过 Linux 之后,让我们来使用简单的指令查询一下用户家目录里面有哪些资料,以及如何查询自己曾经下达过的指令吧!

1.4.1:ls 与 ll 检查自己目录的文件名资料

请使用一般用户的身份登录 Linux 系统,同时启动一个终端在桌面上。 现在让我们来执行两只指令,确认一下如何操作系统与观察输出的数据。

[student@localhost ~]$ lsDesktop  Documents  Downloads  Music  Pictures  Public  Templates  text1.txt  Videos

使用 ls 可以单纯的列出文件名,就是上面列出的'Desktop Documents Downloads...'等等的资料。 不过并没有显示这个文件名相关的各项档案权限信息,包括时间、容量等等。 若需要查阅比较详细的信息,需要使用 ll (LL 的小写) 来处置。

[student@localhost ~]$ lldrwx------. 2 student student  6  3月  1 15:35 Desktop
drwx------. 2 student student  6  3月  1 15:35 Documents
drwx------. 2 student student  6  3月  1 15:35 Downloads
drwx------. 2 student student  6  3月  1 15:35 Music
drwx------. 2 student student  6  3月  1 15:35 Pictures
drwx------. 2 student student  6  3月  1 15:35 Publicdrwx------. 2 student student  6  3月  1 15:35 Templates
-rw-r--r--. 1 student student 22  3月  1 16:12 text1.txt
drwx------. 2 student student  6  3月  1 15:35 Videos

第一堂课的此时,你需要注意的是最右边的三个参数,分别是档案容量、档案最后被修改的日期、文件名信息。 以'Pictures'文件名为例,该文件名的容量有 6bytes,而最后被修改的日期为『 3月 1 15:35 』。 至于年份则是本年度的意思。

如果想要查阅根目录 (类似 windows 的'电脑'项目),则使用如下的指令:

[student@localhost ~]$ ll /總計 24
lrwxrwxrwx.   1 root root    7  5月 11  2019 bin -> usr/bin
dr-xr-xr-x.   6 root root 4096  2月 26 09:15 boot
drwxr-xr-x.  20 root root 3260  3月  1 16:44 dev
drwxr-xr-x. 135 root root 8192  3月  1 16:49 etc
drwxr-xr-x.   3 root root   21  2月 26 09:10 home
lrwxrwxrwx.   1 root root    7  5月 11  2019 lib -> usr/lib
lrwxrwxrwx.   1 root root    9  5月 11  2019 lib64 -> usr/lib64
......

此时屏幕上显示的为根目录底下的文件名,而不是 student 的家目录了。 这个练习在让操作者了解到,指令后面可以加参数 (parameters)。 而如果想要知道 student 家目录底下有没有『隐藏文件』时,可以使用如下的指令:

[student@localhost ~]$ ll -a總計 36
drwx------. 15 student student 4096  3月  1 16:47 .
drwxr-xr-x.  3 root    root      21  2月 26 09:10 ..
-rw-------.  1 student student   44  3月  1 16:44 .bash_history
-rw-r--r--.  1 student student   18 11月  9 00:21 .bash_logout
-rw-r--r--.  1 student student  141 11月  9 00:21 .bash_profile
-rw-r--r--.  1 student student  312 11月  9 00:21 .bashrc
drwx------. 11 student student  244  3月  1 15:56 .cache
drwx------. 14 student student 4096  3月  1 16:36 .config
drwx------.  2 student student    6  3月  1 15:35 Desktop
......

可以发现多了相当多以小数点开头的文件名,这些文件名在 ls 或 ll 时并不会出现,但加上' -a '这个' 选项 (Option) '之后, 就会开始出现了。 这个练习在让操作者了解到,指令后面可以加'选项'来改变指令的处理行为。

最后,如果你想要知道根目录本身的权限,而不是根目录底下的文件名,则应该要使用下面的指令:

[student@localhost ~]$ ll -d /dr-xr-xr-x. 17 root root 224  2月 26 09:02 /

你将在屏幕上发现到只有根目录 (/) 这个文件名存在,而不像刚刚' ll / '出现一堆文件名资料。 亦即一般情况下,ll 是'浏览目录内的文件名资讯',而不是看目录本身。

以 windows 的档案总管来说,通常文件名的浏览画面中,左侧为「目录」而右侧为「该目录下的文件名」,所以,' ll'代表鼠标点左边的目录, 而屏幕输出右边的文件名资料之意。

例题 1.4.1-1:清除屏幕以及查阅档案权限参数
  1. 在终端机界面中输入' clear '会有什么效果?

  2. 检查一下 /var/spool/mail 这个目录 (1)里面有几个文件? (2)这个目录本身所修改的时间是什么时候?

1.4.2:历史命令功能

Linux 的文字界面中,可以用几个简单的方式去检查你曾经下达过的指令,最简单的方法就是使用方向键'上与下', 不但能够呼叫出之前的指令,也能够再透过方向键'左与右',与键盘上的'home/end'按键,直接在一行指令的最前面与最后面直接再修改。 熟悉这个作法,可以让你快速的编辑一行指令。

但是如果是太久之前做的指令,此时就能够透过历史命令' history '来呼叫出来。

实际练习:呼叫以前下达过的指令,同时重复执行该指令
  1. 使用 student 的身份,下達 history 這個指令:

    [student@station10-101 ~]$ history......
        6  w
        7  ls
        8  ll    9  ll /
       10  ll -a
       11  ll -d /
       12  clear
       13  ll /var/spool/mail
       14  ll -d /var/spool/mail
       15  ll /var/spool
       16  history
  2. 观察上述指令,可以发现 ll/是在第 9 个号码上面,亦即曾经执行过的第 9 个指令。 重复上述的指令,可以使用' !9 '即可! 亦即惊叹号加上指令号码,且惊叹号与 9 中间没有空格喔! 如下:

    [student@station10-101 ~]$ !9ll /        <==這裡會將指令的完整下達方式顯示一次喔!總計 24
    lrwxrwxrwx.   1 root root    7  5月 11  2019 bin -> usr/bin
    dr-xr-xr-x.   6 root root 4096  2月 26 09:15 boot
    drwxr-xr-x.  20 root root 3260  3月  1 16:44 dev
    drwxr-xr-x. 135 root root 8192  3月  1 16:49 etc
    drwxr-xr-x.   3 root root   21  2月 26 09:10 home
    lrwxrwxrwx.   1 root root    7  5月 11  2019 lib -> usr/lib
    ......
  3. 除了' !数字 '可以重复执行某个指令外,我们也能够透过指令前导字符来重复执行某个指令。 以上面的输出来看,我们曾经输入过 clear 这个指令。 如果我想要重复执行这个指令,可以直接输入 !cl 即可! 因为cl开头的指令,最近只有 clear (从 16 号往前推的结果)。

    [student@station10-101 ~]$ !cl

在CentOS 8底下,预设历史命令会纪录1000笔,你下次登录后,系统会将上次的历史命令汇入,亦即:假设上次你下达过50笔纪录,则下次启用终端机后,第一个指令会纪录在51笔。 因此,经常查询 history 可以让操作者了解以前曾经下达过哪些指令。

1.4.3:离开系统与关闭系统

基本上,所谓的'离开系统'应该也能称为'关闭某个软件'的意思。 以CentOS 8来说,图形界面是个软件,终端机是个软件,浏览器也是个软件。 离开浏览器、离开控制台,都可以直接点击该软件右上角的' X'即可关闭。 但是对于终端机来说,由于终端机环境底下,你可能会有其他同步工作的任务在, 因此,要离开终端机或图形界面,不建议直接点击' X ',最好可以输入' exit '或' logout '或者是在没有输入任何资料的情况下, 按下 [ctrl]+d 来关闭该软件。 注意,是关闭该软件,不是关机喔! 底下为关闭终端的建议方式:

  • exit

  • logout

  • [ctrl]+d

要关闭图形界面,就点选注销 (logout) 即可,注销前,最好按下'概览'看一下所有的桌面,是否所有的软件都已经关闭了? 最好全部都关闭再注销比较好! 那如果要关机呢? 最好先检查看看有没有任何用户在系统上? 如果有,先让该用户注销, 等到全部都登出了,再关机比较好。 观察系统正上线的用户,可以使用之前讲过的 w 来查阅:

[student@localhost ~]$ w
 20:48:08 up  4:03,  3 users,  load average: 0.00, 0.00, 0.00
 20:48:08 up  4:03,  3 users,  load average: 0.00, 0.00, 0.00
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
student  :1       :1               16:47   ?xdm?  54.99s  0.02s /usr/libexec/gdm-x-session gnome-session
student  tty3     -                16:46    4:01m  0.03s  0.03s -bash
student  pts/0    172.16.200.254   20:45    0.00s  0.04s  0.01s w

看起来有个 student 在 tty3 登入了! 我们先去到 tty3 注销后,再回到图形界面来关机吧! 从上面的结果我们也可以知道, 终端界面使用的软件为 bash,而图形界面则是使用 gdm-x-session 这个软件的意思。

至于 pts/0 则可能是 (1)在图形界面启动的终端,或 (2)透过网络连线进来的终端机。 并非本机的 tty1~tty6 。

从上表看来,目前确实仅有 student 在线上,若本机器并非服务器,则此时应该可以进行关机的行为。 关机可以使用如下的指令:

[student@localhost ~]$ poweroff[student@localhost ~]$ halt[student@localhost ~]$ shutdown -h now[student@localhost ~]$ systemctl poweroff

上述的任何一个指令均可关机。 但无论使用哪个指令关机,其实最终都是呼叫最后一个,亦即' systemctl poweroff '进行关机的行为。

在本地 tty1~tty6 登录系统的帐号,无论系统管理员或一般账号,均可 poweroff 本机。 但如果是通过网络联机进来的,则无法关闭 Linux, 除非使用管理员帐号,才有办法透过网络关机。

1.5:课后练习操作

  • 上课的课后练习,非作业:

  1. 请在进行底下动作之前,先将系统整个关机 (poweroff),之后再由 gocloud 或者是 virtualbox 的环境启动上课教材硬盘

  2. 先使用 student 登入图形界面,然后开启终端机,输入 w 之后,查看一下目前的登录状态

  3. 由于第一个图形界面应该是 :0,第二个则是 :1 以此类推,上述的情况可能会看到非 :0 的状态。 此时,该如何判断图形界面在哪一个 tty 呢?

  4. 此时网络是否有正常运作? 请自行查阅看看。

  5. 判断一下屏幕保护程序是否关闭了?

  6. 查看屏幕分辨率目前的设定

  7. 查看一下输入法有没有新注音

  8. 请使用档案总管,将 /etc/group 复制到 student 的家目录去。

  9. 切换到 tty6 ,并同时使用 student 身份登入

  10. 承上,查看曾经输入过的指令

  11. 找到曾经下达过得' ll /var/spool '或者是' ll / ',将这个指令 (随意取一个) 重新执行一次。

  12. 列出 /etc 底下的所有文件名,并且需要有日期资料的列出

  13. 你会发现到 tty6 的屏幕画面无法容纳所有的资料,这时没鼠标可用,该如何是好?

  14. 如何查看 /etc/pam.d 这个文件名的相关属性,包括建立的时间等 (在 tty6 的环境下)

  15. 查看 student 家目录的所有档案权限,包括隐藏文件。

  16. 将 tty6 画面清除,然后回到图形界面的环境。

  17. 注销 student 之后,关机

做完之后,可以到参考解答查看一下你的答案是否合理喔!

  • 作业 (不提供学生答案,仅提供教师参考答案)

作业硬盘操作帮助:

  • 开启云端虚拟机前,请务必确认你开启的硬盘是'unit01',否则就会做错题目

  • 若要使用图形界面,请务必使用 student 身份登入,若需要切换身份,再启用终端机处理。

  • 若有简答题需要使用中文,请自行以第一堂课的动作自行处理输入法安装。

  • 每部虚拟机均有独特的网卡地址,请勿使用他人硬盘上传,否则计分为 0 分。

  • 每位同学均有自己的 IP 尾数,请先向老师询问您的 IP 尾数,才可以进行作业上传。

  • 最终上传作业结果,请务必使用 root 身份上传。

  • 进入操作硬盘后,先用 root 身份执行 vbird_book_setup_ip, 执行流程请参考:vbird_book_setup_ip

作业当中,某些部份可能为简答题~若为简答题时,请将答案写入 /home/student/ans.txt 当中,并写好正确题号,方便老师订正答案。 请注意,文件名写错将无法上传!


  1. (15%)计算机概论基础:

    1. 电脑组成的五大单元中,(a)指的是哪五个单元? (b) CPU 主要包含那两个单元?

    2. 简单说明 I/O bound 与 CPU bound 代表什么意思? (就是五大单元的哪一个部份比较忙碌)

    3. 查询 DDR4 2666 的传输带宽与一般 SSD SATA 3 理论带宽的传输速度分别是多少 (用 Mbytes/s 为单位)

    4. 一般传统网络服务器,大多是I/O bound,那请问如果要让此 server 效能较好,应该是(a)加大哪个组件? (b)加快哪个组件?

    5. 消费性市场的 CPU 当中,(a)台式机与(b)手机常用的 CPU 分别是哪种类型?

  2. (15%) Unix 基础:

    1. 图1.1.1-2的数据中,请以'Oracle Solaris'、'GNOME'、'POSIX'、'SPARC 工作站'说明个四个东西各属那一层?

    2. 贝尔实验室(Bell lab.)的那两个高级黑客用C写成了第一版的ux操作系统?

    3. 从那一个 Unix 版本开始,Unix 终于可以支持 x86 个人电脑?

    4. 号称自由软件之父是哪位先生? 而自由软件(free software)又是那一个授权的名称?

    5. 我们开玩笑说,纯种的 UNIX 系统,指的是哪两个 OS?

  3. (15%) Linux 基础:

    1. Torvalds 是参考那一个 Unix-like 的系统而撰写 Linux 的?

    2. 查一下网络资料,列出三种以上的Open source授权

    3. 所谓的 Linux distributions 大概包括那四个组件?

    4. Raspberry pi 的主要操作系统名称为 Raspbian,这个操作系统是基于哪一个 Linux distribution 改版而来?

    5. 查询一下目前 Linux kernel 最新主线 (mainline) 底下的稳定版本是第几版 (每隔几个月,答案就不一样)?

  4. (30%) CentOS 8 的基础操作:

    1. 除了使用图形界面的档案管理之外,如果你要查询 /home/student 底下有哪些文件(列出目录下档名),可以在终端使用哪个指令加参数? 假设你并不在 student 的家目录底下。

    2. 承上,那么想要列出所有隐藏文件的文件名时,可以使用什么指令搭配什么选项与参数?

    3. 在默认情况下,你可以输入哪些组合按钮来进入不同的终端界面 (TTY),例如,你要如何进入到 tty4 呢?

    4. 说明终端机的提示字符中,最后一个字符是 $ 与 # 分别代表什么意思?

    5. 终端机的提示字符内,有个'~'符号,请说明该符号的意义,同时说明 student 与 root 的 ~ 分别在哪里?

    6. 想要查询自己输入的历史命令,可以使用什么指令?

    7. 在终端机界面中输入' clear '会有什么效果?

    8. 在终端查询目前的线上登录者,可以使用哪个指令?

    9. 登录取得终端机后,要离开终端应该使用哪些指令或组合按钮? (至少写两个)

    10. 在终端机当中想要关机 Linux 时,可以用 root 身份执行哪些指令? (至少写两个)

  5. (25%) CentOS 8 的基础操作,底下为连锁题,要注意操作!

    1. 在 /opt 底下有个隐藏文件,请写下该文件的文件名

    2. 该文件是一个目录文件,请查询该目录底下有几个文件( 写下个数)

    3. 上面这几个文件中,哪一个档案容量最大? 写下文件名

    4. 上面这几个文件中,哪一个档案日期最新? 写下文件名

    5. 上面这几个文件中,哪一个档案的所有者,明显与其他档案不同? 写下文件名

作业结果传输:请以 root 的身份执行 vbird_book_check_unit 指令上传操作结果。 正常执行完毕的结果应会出现【XXXXXX_aa:bb:cc:dd:ee:ff_unitNN】字样。 若需要查阅自己上传资料的时间, 请在操作系统上面使用浏览器查询: http://192.168.251.254 检查相对应的课程档案。 相关流程请参考: vbird_book_check_unit


取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

©著作权归作者所有:来自ZhiKuGroup博客作者没文化的原创作品,如需转载,请注明出处,否则将追究法律责任 来源:ZhiKuGroup博客,欢迎分享。

评论专区
  • 昵 称必填
  • 邮 箱选填
  • 网 址选填
◎已有 0 人评论
搜索
作者介绍
30天热门
×
×
关闭广告
关闭广告
本站会员尊享VIP特权,现在就加入我们吧!登录注册×
»
会员登录
新用户注册
×
会员注册
已有账号登录
×