Linux 基础学习训练教材 - RockyLinux 9.x

第 1 堂课:初次使用 Linux 与指令列模式初探

第一周就先熟悉一下 Linux 的基础操作,会用到一点点图形接口~还有云端系统的操作!

最近更新时间: 2023/02/18

Linux 是操作系统内核,RockyLinux 是 Linux 操作系统发布套件,操作系统内核的目的第一是管理硬件、第二是提供系统调用给程序员开发软件。 Linux 操作系统发布套件则更提供常用软件与工具及一个快速安装的进程,让操作者可以轻松的使用系统。理解内核、操作系统发布套件等等是很重要的! 了解这些基本数据后,再来实际操作一下 RockyLinux 的图形 (GUI) 与文本 (Command Line) 模式的运作~ 同时查找一下一般用户家目录的数据吧!Linux 的基础学习确实稍微困难,请大家从这一章仔细的开始进行操作的行为喔!

1.1:Linux 是什么

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

1.1.1:硬件与操作系统

  • 电脑硬件与数据传输

目前的电脑硬件系统主要经由底下的组件所组成:

  • 输入单元:包括键盘、鼠标、读卡机、扫描仪、手写板、触摸屏幕等等一堆;
  • 主机部分:这个就是系统单元,被主机机壳保护住了,里面含有一堆板子、CPU 与主内存等;
  • 输出单元:例如屏幕、打印机等等

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

图1.1.1-1、电脑硬件系统的示意图,请特别注意数据传输流程!
图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 服务器)。目前 (2023) 无论 Intel 还是 AMD 在个人电脑市场都推出多内核的 CPU,一般入门级 CPU 就具有 4 内核以上的配备, 底下为 Intel 第 13 代桌面型处理器以及 AMD Ryzen 7000 桌面型系统的规格简介: 以 AMD 为例,最高端台式机 Ryzen Threadripper 型号,就具有 64 内核 128 线程的配备,在服务器市场则可以具有两路的 EPYC 64 内核两颗,亦即可组成 128 内核 256 线程的设备,对于 CPU bound 的需求来说,相当具有吸引力。
  • ARM 手持式设备:由安谋公司所开发的 ARM CPU ,由于其架构较为精简,且可授权其他公司开发,因此目前很多厂商均针对 ARM 架构进行自身的 CPU 开发。ARM 通常使用于手持式设备,包括手机、平板等等,其他像是单板电脑 (Raspberry pi, Xapple pi 等) 亦使用此架构。
  • 硬件与操作系统

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

图1.1.1-2、硬件与操作系统相关性
图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 个文本终端机连接。不过当用户过多时,需要等待才能够使用电脑系统。
    图1.1.2-1、多元程序处理系统的进程概念
    图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 之 Unix 操作系统。这个系统最特别的地方是, 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 发布
  • 2022年:Linux kernel version 6.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 维护,且在 2022 年已经发布了 6.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
RockyLinux
OpenSuSE
Debian
B2D
Gentoo

一般用途在个人电脑 (包括笔记本电脑) 的使用,建议可以使用 Ubuntu / Fedora / OpenSuSE 等,若用在 Server 上, 建议可以使用 RockyLinux 或 Debian。

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

例题 1.1.5-1:

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

就一般常见的 Linux distribution 来说,两大主要流派就是 RHEL 含衍生品,以及 Debian 含衍生品~基本上, 这两个版本的衍生品最好都学习一下,那你的 Linux 功力就很强大了!

1.1.6:Linux 的常见用途

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

  • 网络服务器
  • 关键任务的应用(金融数据库、大型企业网管环境)
  • 学术机构的高性能计算任务

个人的使用则有:

  • 台式机
  • 手持系统(PDA、手机、平板电脑、精简电脑等)
  • 嵌入式系统 (如 raspberry pi / Xapple pi 等内置的 Linux 系统)

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

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

超级电脑可以说是一个国力的展现,而 top500 每年会有两次去调查全世界跑得最快的超级电脑,台湾在 2022/11 的调查中,有一部超级电脑名列 64 名, 在 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 系统,系统示意图如下所示:

图1.2.1-1、Goucloud 画面示意图
图1.2.1-1、Goucloud 画面示意图

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

图1.2.1-2、Goucloud 注册画面示意图
图1.2.1-2、Goucloud 注册画面示意图

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

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

图1.2.1-3、Goucloud 登录后的画面示意图
图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 软件,直接下载安装即可。 目前 (2023/02) 最新的版本为 11.0 版,请安装 64 比特的版本,如下链接所示:(点击『Win x64 MSI (gpg)』那个项目即可!) https://virt-manager.org/download.html
  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
    另外,我们系统同时也提供了 VNC 的连接,因此也可以直接使用 VNC 连接即可。
  3. Linux 操作系统:如果是 Red Hat 系列的 (RHEL/Fedora/RockyLinux) ,直接安装 virt-viewer 软件即可。 安装方式为(有启动网络的情境下):『yum install virt-viewer』,启动方式为 (须有图形界面的环境下):『remote-viewer』
  4. Android 平板:目前 Android 平板也能够支持 gocloud 的连接了,不过需要于 play.google.com 下载 aSpice 才能够连接 (不是 remote-viewer 软件)。

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

图1.2.1-4、学生端电脑连接到 Gocloud 的 remote viewer 软件示意图
图1.2.1-4、学生端电脑连接到 Gocloud 的 remote viewer 软件示意图

当学生打开虚拟机后,将虚拟机所在的网址拷贝到上述箭头所指定的方框中,即可达成连接。

1.2.2:启动与管理虚拟机

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

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

图1.2.2-1、利用 Gocloud 系统启动云端虚拟机的示意图
图1.2.2-1、利用 Gocloud 系统启动云端虚拟机的示意图

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

图1.2.2-2、Gocloud 系统上面已经启动了云端虚拟机的示意图
图1.2.2-2、Gocloud 系统上面已经启动了云端虚拟机的示意图
图1.2.2-3、以 Remote viewer 软件取得 Gocloud 上的云端虚拟机
图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』,看看画面是否已经变成全屏幕状态
  4. 将鼠标光标移动到整个画面的中央正上方,这时画面正上方会出现一个小按钮,如下所示,下图中,1 号箭头表示可以回到原本的小窗口画面, 2 号箭头则是直接关掉这个虚拟机。请点击 1 号箭头,回到原本的小窗口中。
    图1.2.2-4、熟悉 remote-viewer 软件
    图1.2.2-4、熟悉 remote-viewer 软件
  5. 点击『Send key』、『Ctrl + Alt + F2』,然后再点击『Ctrl + Alt + F1』,看看画面的变化情境。
  6. 承上,请将鼠标移动到 remote-viewer 的窗口内,然后分别点击『Ctrl + Alt + F2』与『Ctrl + Alt + F1』, 看看画面的变化。

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

1.3:第一次登录 RockyLinux 9

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

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

1.3.1:图形界面操作 RockyLinux

图1.2.2-3 的画面中,如果是一片漆黑的画面时,随意动一下鼠标或键盘,就会出现等待登录的画面,如下所示:

图1.3.1-1、RockyLinux 9 图形界面登录示意图
图1.3.1-1、RockyLinux 9 图形界面登录示意图

你可以:

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

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

实际练习:首次登录 RockyLinux 图形界面
请第一次登录系统,并且处理好中文的操作界面!同时,家目录底下的文件文件名,最好不要有中文存在。
答:
  1. 登录:根据教材提供的帐号密码登录系统:选择 student 帐号,然后输入密码,如下图所示:
    图1.3.1-2、图形界面登录流程
    图1.3.1-2、图形界面登录流程
    图1.3.1-3、图形界面登录流程
    图1.3.1-3、图形界面登录流程
    如果最终登录成功,并且不要浏览说明文档,就会出现如下的图标了:
    图1.3.1-4、图形界面登录流程
    图1.3.1-4、图形界面登录流程
    • 1:Activities(概览):可以查看虚拟桌面、菜单等功能,相当于『开始程序集』的按钮
    • 2:就是菜单的画面,九个原点按钮可以列出所有工具小图标
    • 3:可以将设置、注销、网络功能等功能窗口下拉下来
    • 4:Power Off/Log Out:可以关机、注销等
    • 5:Settings:可以进入设置!等等要按这个项目!
  2. 语系选择:我们的教材缺省选择英文语系,因此,进入画面缺省是英文!现在,让我们来设置整体用户界面画面为中文吧! 在上面的图标当中,按下『Settings』的项目,然后依据如下的画面来操作即可:
    图1.3.1-5、选择中文语系流程
    图1.3.1-5、选择中文语系流程
    图1.3.1-6、选择中文语系流程 图1.3.1-6、选择中文语系流程
    图1.3.1-6、选择中文语系流程
    图1.3.1-7、选择中文语系流程
    图1.3.1-7、选择中文语系流程
    如上所示,按下『Restart』的按钮,你就会被要求注销,如下所示,按下『 Logout 』之后,再次以 student 身份登录,就会出现如下画面:
    图1.3.1-7、选择中文语系流程
    图1.3.1-7、选择中文语系流程

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

图1.3.1-9、图形界面登录流程
图1.3.1-9、图形界面登录流程
  • 图形界面组件认识

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

图1.3.1-10、图形界面画面认识
图1.3.1-10、图形界面画面认识

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

  1. 概览:就有点像是整个画面叫出活动范围的按钮,要看到上图的画面,就得点击『概览』才行
  2. 功能表:有点像以前的开始功能集,你需要的软件,大部分都在这里。例如上面画面中,有浏览器、文件总管、软件仓库、求助(救生圈)、终端机与程序集等。 点下各个按钮,即可启动该软件。另外,你也可以在每个软件上面按下右键,还有额外的选项可以挑选呢。
  3. 虚拟桌面:RockyLinux 9 跟以前的版本不一样,以前的版本我们可以自行预先定义出所需要的虚拟桌面,这一版则是当你有需要,才点下新的虚拟桌面即可。 如上图所示,画面正中央是第一个虚拟桌面,如果你点画面中右侧的壁纸样式的地点,就会出现下一个虚拟桌面喔!
  4. 控制台:这里的项目有很多,包括亮度挑选、网络是否启动与关闭、用户名与注销功能、直接进入控制台功能、直接关机或休眠等, 相关内容有点像底下这样:
    图1.3.1-11、图形界面画面认识
    图1.3.1-11、图形界面画面认识
  5. 此虚拟桌面运行的软件:这个与 3 号箭头有关,亦即当你选择虚拟桌面之后,在该虚拟桌面的软件全部会展示出来,此时你就可以选择你要运行的软件了。

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

例题 1.3.1-1:使用图形化界面进行文件管理操作
  1. 先启动文件总管的软件
  2. 查看画面,主要分为那三个区块 (上/左/右)
  3. 要显示详细数据,应该点击哪个项目?
  4. 详细数据还想要有:拥有者、群组、权限等数据,该如何设置?
  5. 想浏览整个系统的文件,要点击哪里?
  6. 持续点击『电脑』、『etc』、『passwd』这个文件,选择拷贝,再到家目录去粘贴,查看一下文件的相关属性是否相同?
  7. 持续点击『电脑』、『root』,能不能进入该目录?为啥?
例题 1.3.1-2:调整中文输入法与激活文本编辑器
  1. 按下画面右上角之后,点击『设置值』项目,然后点击左侧的『Keyboard』按钮
  2. 在『输入来源』部份,点击『+』之后,选择适合你的输入法。我们这边缺省使用『新注音』
  3. 随便启动一个软件,例如我们的终端机画面,然后勾选右上角『en』的项目变成『中』,就可以输入中文了!
  4. 调用出『文本编辑器』软件
  5. 随意在该软件上面输入一些中文本
  6. 按下『保存』,将档保存在『家目录』的名为『text1.txt』的文件中,并关闭文本编辑器
  7. 前往文件总管看看是否有该文件的存在。
例题 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! 要注意的是,缺省的图形画面中,tty1 都是用来提供『图形界面登录』的环境,所以,你实际操作的图形界面, 很可能会在 tty2 以后的任何一个终端界面中喔!

  • [Ctrl] + [Alt] + [F1] ~ [F6] :tty1 ~ tty6 终端机
实际练习:在 tty6 使用 student 帐号身份登录:
  1. 通过 remote-viewer 的『 Send key 』切换,或者将鼠标移动到 remote-viewer 的软件内,按下 [alt]+[shift]+[F6] 皆可。
  2. 你会发现到整个画面有点像底下这样:
    Rocky Linux 9.1 (Blue Onyx)
    Kernel 5.14.0-162.6.1.el9_1.x86_64 on an x86_64
    
    Active the web console with: systemctl enable --now cockpit.socket
    
    localhost login: student
    Password: <==这里输入你的密码
    Last login: Sun Mar 1 16:37:30 on tty2<==上次登录的情况
    [student@localhost ~]$ _ <==光标闪烁,等待你的指令输入
    
  3. 基本上,这就是所谓的文本界面!与图形界面取得终端机的方式的差别在于:须不须要输入帐号与密码而已!

上面显示的内容为:

  1. Rocky Linux 9.1 (Blue Onyx)
    显示Linux distribution 的名称 (RockyLinux) 与版本(9.1);
  2. Kernel 5.14.0-162.6.1.el9_1.x86_64 on an x86_64
    显示 Linux 内核的版本为 5.14.0-162.6.1.el9_1.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 则是『主机名称』,至于最右边的『 ~ 』则指的是 『目前所在的目录』,那个 $ 则是『提示字符』

上述比较重要的数据在最后一行,RHEL 衍生的系统之 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 的身份登录在 tty5 的位置上
  2. 输入 w (who 的缩写) 查看用户在干什么

1.4:简易的文本指令操作

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

1.4.1:ls 与 ll 检查自己目录的文件名数据

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

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

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

[student@localhost ~]$ ll
drwxr-xr-x. 2 student student  6 Feb 17 13:49 Desktop
drwxr-xr-x. 2 student student  6 Feb 17 13:49 Documents
drwxr-xr-x. 2 student student  6 Feb 17 13:49 Downloads
drwxr-xr-x. 2 student student  6 Feb 17 13:49 Music
drwxr-xr-x. 2 student student  6 Feb 17 13:49 Pictures
drwxr-xr-x. 2 student student  6 Feb 17 13:49 Public
drwxr-xr-x. 2 student student  6 Feb 17 13:49 Templates
-rw-r--r--. 1 student student 44 Feb 17 14:51 text1.txt
drwxr-xr-x. 2 student student  6 Feb 17 13:49 Videos

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

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

[student@localhost ~]$ ll /
dr-xr-xr-x.   2 root root    6 May 16  2022 afs
lrwxrwxrwx.   1 root root    7 May 16  2022 bin -> usr/bin
dr-xr-xr-x.   6 root root 4096 Feb 17 10:30 boot
drwxr-xr-x.  20 root root 3440 Feb 17 12:15 dev
drwxr-xr-x. 130 root root 8192 Feb 17  2023 etc
drwxr-xr-x.   3 root root   21 Feb 16 11:51 home
lrwxrwxrwx.   1 root root    7 May 16  2022 lib -> usr/lib
lrwxrwxrwx.   1 root root    9 May 16  2022 lib64 -> usr/lib64
......

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

[student@localhost ~]$ ll -a
total 32
drwx------. 14 student student 4096 Feb 17 15:11 .
drwxr-xr-x.  3 root    root      21 Feb 16 11:51 ..
-rw-------.  1 student student    5 Feb 17 15:11 .bash_history
-rw-r--r--.  1 student student   18 Nov  2 00:47 .bash_logout
-rw-r--r--.  1 student student  141 Nov  2 00:47 .bash_profile
-rw-r--r--.  1 student student  492 Nov  2 00:47 .bashrc
drwxr-xr-x. 10 student student 4096 Feb 17 14:48 .cache
drwx------. 12 student student 4096 Feb 17 14:58 .config
drwxr-xr-x.  2 student student    6 Feb 17 13:49 Desktop
......

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

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

[student@localhost ~]$ ll -d /
dr-xr-xr-x. 18 root root 235 Feb 16 11:43 /

你将在屏幕上发现到只有根目录 (/) 这个文件名存在,而不像刚刚『 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
    ......
        4  ll /
        5  ll -a
        6  ll -d /
        7  clear
        8  ll /var/spool/mail/
        9  ll -d /var/spool/mail
       10  ll /var/spool/
       11  history
    
  2. 观察上述指令,可以发现 ll -d / 是在第 6 个号码上面,亦即曾经运行过的第 6 个指令。重复上述的指令,可以使用『 !6 』即可! 亦即惊叹号加上指令号码,且惊叹号与 6 中间没有空格喔!如下:
    [student@station10-101 ~]$ !6
    ll -d /        <==这里会将指令的完整下达方式显示一次喔!
    dr-xr-xr-x. 18 root root 235 Feb 16 11:43 /
    
  3. 除了『 !数字 』可以重复运行某个指令外,我们也能够通过指令前导字符来重复运行某个指令。以上面的输出来看,我们曾经输入过 clear 这个指令。 如果我想要重复运行这个指令,可以直接输入 !cl 即可!因为 cl 开头的指令,最近只有 clear (从 11 号往前推的结果)。
    [student@station10-101 ~]$ !cl
    

在 RockyLinux 9 底下,缺省历史命令会纪录 1000 笔,你下次登录后,系统会将上次的历史命令导入,亦即:假设上次你下达过 50 笔纪录, 则下次激活终端机后,第一个指令会纪录在 51 笔。因此,经常查找 history 可以让操作者了解以前曾经下达过哪些指令。

1.4.3:离开系统与关闭系统

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

  • exit
  • logout
  • [ctrl]+d

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

[student@localhost ~]$ w
 15:25:16 up  3:17,  3 users,  load average: 0.00, 0.00, 0.00
USER     TTY        LOGIN@   IDLE   JCPU   PCPU WHAT
student  tty2      13:59     ?     0.04s  0.04s /usr/libexec/gnome-session-binary
student  tty5      15:12    9:04   0.02s  0.02s -bash
student  pts/1     15:16    1.00s  0.04s  0.01s w

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

至于 pts/1 则可能是 (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. 由于图形界面也被认为是 tty[1-6] 了,此时,该如何判断图形界面在哪一个 tty 呢?
  4. 此时网络是否有正常运作?请自行查阅看看。
  5. 判断一下屏幕保护程序是否关闭了?
  6. 查看屏幕分辨率目前的设置
  7. 查看一下输入法有没有新注音
  8. 请使用文件总管,将 /etc/group 拷贝到 student 的家目录去。
  9. 切换到 tty6 ,并同时使用 student 身份登录
  10. 承上,查看曾经输入过的指令
  11. 找到曾经下达过得『 ll /var/spool 』或者是『 ll / 』,将这个指令 (随意取一个) 重新运行一次。
  12. 列出 /etc 底下的所有文件名,并且需要有日期数据的列出
  13. 如何查看 /etc/pam.d 这个文件名的相关属性,包括创建的时间等 (在 tty6 的环境下)
  14. 查看 student 家目录的所有文件权限,包括隐藏档。
  15. 将 tty6 画面清除,然后回到图形界面的环境。
  16. 注销 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. 查找底下物品、总线的相关速度: 理论带宽的传输速度分别是多少 (用 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 写成了第一版的 unix 操作系统?
    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%)RockyLinux 9 的基础操作:
    1. 除了使用图形界面的文件总管之外,如果你要查找 /home/student 底下有哪些文件(列出目录下文件名),可以在终端机使用哪个指令加参数? 假设你并不在 student 的家目录底下。
    2. 承上,那么想要列出所有隐藏档的文件名时,可以使用什么指令搭配什么选项与参数?
    3. 在缺省情况下,你可以输入哪些组合按钮来进入不同的终端界面 (TTY),例如,你要如何进入到 tty4 呢?
    4. 说明终端机的提示字符中,最后一个字符是 $ 与 # 分别代表什么意思?
    5. 终端机的提示字符内,有个『~』符号,请说明该符号的意义,同时说明 student 与 root 的 ~ 分别在哪里?
    6. 想要查找自己输入的历史命令,可以使用什么指令?
    7. 在终端机界面中输入『 clear 』会有什么效果?
    8. 在终端机查找目前的在线登录者,可以使用哪个指令?
    9. 登录取得终端机后,要离开终端机应该使用哪些指令或组合按钮?(至少写两个)
    10. 在终端机当中想要关机 Linux 时,可以用 root 身份运行哪些指令?(至少写两个)
  5. (25%)RockyLinux 9 的基础操作,底下为连锁题,要注意操作!
    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

修改历史:
  • 2023/02/17:修改自 CentOS 8.x 版本的第一章,针对 RockyLinux 9 重新抓图,但课后作业尚未处理
  • 2023/02/18:修改一下作业数据,同时更新硬盘分析结果!
2023/02/17 以来统计人数
计数器
其他链接
环境工程模式篇
鸟园讨论区
鸟哥旧站

今日 人数统计
昨日 人数统计
本月 人数统计
上月 人数统计