1.1:Linux 是什么

Linux 是安装在电脑硬体系统上面的一套作业系统,目的是用来管理电脑硬体的!所以我们得要先了解一下硬体的常见组成,以及常见的硬体分类, 这样才好入门Linux 喔!

1.1.1:硬体与作业系统

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

  • 输入单元:包括键盘、滑鼠、读卡机、扫描器、手写板、触控萤幕等等一堆;
  • 主机部分:这个就是系统单元,被主机机壳保护住了,里面含有一堆板子、CPU 与主记忆体等;
  • 输出单元:例如萤幕、印表机等等

上述主机部份是整体系统最重要的部份,该部份的组成为:控制单元、算术逻辑单元以及记忆体单元(含主记忆体、外部储存装置)等。

例题:
请说明:
  1. 一般电脑硬体主机组成的五大单元,以及
  2. 图示出这五大单元的连结图。
  3. 最后说明哪个元件对于伺服器来说,是比较重要的?

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

  • X86 个人电脑:由Intel / AMD 为主要制造厂商,此架构通用于个人电脑(包括笔记型电脑) 以及商用伺服器市场上(亦即x86 伺服器)。目前(2017) Intel 在个人电脑市场推出单个CPU 封装内含4 核8 绪的个人电脑CPU,商用伺服器则已经推出10 核20 绪以上的Xeon 商用x86 CPU。
  • ARM 手持式装置:由安谋公司所开发的ARM CPU ,由于其架构较为精简,且可授权其他公司开发,因此目前很多厂商均针对 ARM 架构进行自身的CPU 开发。ARM 通常使用于手持式装置,包括手机、平板等等,其他像是单板电脑(Raspberry pi, Xapple pi 等) 亦使用此架构。

为了简化硬体的资源操作,因此后来有开发作业系统来管理硬体资源的分配。因此程式设计师仅须考量程式的运作流程,而无须考量记忆体配置、 档案系统读写、网路资料存取等,在程式开发上面较为简易。硬体、作业系统、作业系统提供的开发界面以及应用程式的相关性,可以使用底下的图示来说明:

硬体与作业系统相关性
图1.1-1、硬体与作业系统相关性
  • 硬体:例如x86 个人电脑以及ARM Raspberry pi 即是两种不同的硬体。但x86 个人电脑与x86 笔记型电脑,两者则是相同的硬体架构喔!
  • 核心:就是作业系统!该系统内部涵盖档案系统、网路系统、记忆单元管理系统、硬体驱动程式、资料加密机制等等的子系统
  • 系统呼叫:可视为核心提供的一系列函式库,程式设计师只要参考此部份的系统呼叫即可设计相关的应用程式,而不用去考虑核心所提供的子系统。
  • 应用程式:就是在该系统呼叫的环境中,撰写程式码编译而成的binary code 程式。
例题:
运用图1.1-1 的四个同心圆,尝试说明当年为何从windows XP 转到Vista 时,很多应用程式无法运作?

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

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

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


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

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

  • 1965年以前的电脑系统:
    最早的硬体没有作业系统的概念,后来为了管理方便,因此有了『多元程式处理系统』,更于后来以多元程式处理系统的概念再开发出了分时相容系统。当时的硬体主要是透过大型主机系统,内含分时相容系统,并提供大约16个文字终端机连线。不过当使用者过多时,需要等待才能够使用电脑系统。
  • 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也在当时成立。
  • 2005年:Google收购Android公司
    从2003年开始,加州的一家公司开始发展Android系统在手机上面。后来Google于2005年收购该公司,并将Android在Linux核心上开发,以发展可以让手持式装置使用的作业系统。首个商用手机Android作业系统则在2008年由HTC推出!
  • 2012年:教育市场的Raspberry pi 
    为了让小朋友能够轻松愉快的学习程式语言,一个小型的单板电脑制造基金会依据ARM的架构开发了一版大约与笔记型硬碟差不多大小的主机板,内嵌入所有电脑系统所需要的硬体,这就是树莓派(Raspberry pi)。Raspberry pi的预设作业系统即是搭配Linux核心所开发的小型作业系统。
例题:
上网找出多元程式处理系统需要可以I/O 与CPU 分离运作的主要架构,是透过记忆体内的哪些程序状态达成的?且这些程序的状态运作情况为何?

例题:
昵称『最纯种的UNIX 』指的是那两套Unix 作业系统?

例题:
上网找出: (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 的软体。

  • 公布原始码且用户具有修改权:用户可以任意的修改与编译程式码,这点与自由软体差异不大;
  • 任意的再散布:该程式码全部或部份可以被贩售,且程式码可成为其他软体的元件之一,作者不该宣称具有拥有权或收取其他额外费用。
  • 必须允许修改或衍生的作品,且可让再发布的软体使用相似的授权来发表即可。
  • 承上,用户可使用与原本软体不同的名称或编号来散布。
  • 不可限制某些个人或团体的使用权
  • 不可限制某些领域的应用:例如不可限制不能用于商业行为或者是学术行为等特殊领域等等
  • 不可限制在某些产品当中,亦即程式码可以应用于多种不同产品中。
  • 不可具有排他条款,例如不可限制本程式码不能用于教育类的研究中,诸如此类。
例题:
如果你自己开发的软体未来可能会有商业化的可能,但目前你希望使用Open source 的方式来提供大家使用。另外,也希望未来能够有一支保有开放源码软体的分支,那最好使用GPL 还是BSD 呢?


1.1.4:Linux kernel

Linux kernel 主要由http://www.kernel.org 维护,目前的版本已经出现到4.x 版。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.9 即为一个长期维护版本,这个版本的程式码会被持续维护,若程式码有bug 或其他问题, 核心维护者会持续进行程式码的更新维护。

例题:
使用google 搜寻引擎或wiki 等,找出底下的相关资料:
  • Android 的版本搭配的Linux 核心版本为何?
  • 由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 也是同样的作法)。

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


1.1.6:Linux 的常见用途

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

  • 网路伺服器
  • 关键任务的应用(金融资料库、大型企业网管环境)
  • 学术机构的高效能运算任务

个人的使用则有:

  • 桌上型电脑
  • 手持系统(PDA、手机、平板电脑、精简电脑等)
  • 嵌入式系统(如raspberry pi / Xapple pi 等内建的Linux 系统)
例题:
超级电脑可以说是一个国力的展现,而top500 每年会有两次去调查全世界跑得最快的超级电脑。请上网查询后回答下列问题: (1) top500 的官网网址?(2)超级电脑的比较排序方式,是以那一种计算来考虑的?(3)根据现在的时间,找到最近一次排序的结果, 第一名的超级电脑使用了多少个CPU 核心(cores), (4)该系统最快可达到多快的计算(说明其单位)?(5)若以一度电5 元台币计算, 该系统开机一天要花费多少钱?

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


1.2:登入与操作Gocloud 云端系统

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

本教材预设使用Gocloud 这套云端系统来进行教与学的任务,请教师事先于Gocloud 上建置好学生需要的实际操作环境, 该环境的取得请参考本教材的电子资料,或与作者/出版社联系。

1.2.1:注册gocloud 与登入

请依据贵单位的环境设定(网际网路IP 或主机名称),直接以浏览器来连线到Gocloud 系统,系统示意图如下所示:

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

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

Goucloud 画面示意图
图1.2.2、Goucloud 注册画面示意图

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

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

Goucloud 画面示意图
图1.3.3、Goucloud 登入后的画面示意图

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

  • 启动/关闭主机:让学生可以(1)启动云端虚拟机器,并打开gocloud 的防火墙,取得连线的URL; (2)虚拟机器运作中,可以抽换光碟; (3)可以强制关机(直接断电)。
  • 课程磁碟复原:在虚拟机器关机的状态下,可以将个人的磁碟复原到最原始的状态,所以学生可以实际多操作数次,做完直接复原即可。
  • 软体下载:其实主要是针对Windows 系统喔!可以安装连线软体,如此你的windows/Linux 就可以使用remote-viewer 这套软体来取得云端虚拟机器的终端界面。
例题:
请登入系统后,根据你自己家用(或电脑教室中) 的作业系统,下载正确的remote-viewer 软体,并且安装后启动该软体。
答:
  • Windows作业系统:如果你目前操作的系统是Windows作业系统,那么可以直接到Gocloud的『软体下载』画面中,选择『用户端Windows为64位元版本』的超连结来下载。最好不要使用IE来下载,因为IE会自动更改安装档的档名,所以下载后还需要更改副档名成为.msi才能够安装。使用chrome或firefox则无此问题。此外,你也可以自行到internet下载最新版的软体:https://virt-manager.org/download/
  • Linux 作业系统:如果是Red Hat 系列的(RHEL/Fedora/CentOS) ,直接安装virt-viewer 软体即可。(yum install virt-viewer)
  • Mac OSX 作业系统:现在remote-viewer 也支援OSX 了!详情请参考底下的网址。目前(2017) 最新版为RemoteViewer-0.5.7-1.dmg,请自行下载安装。
  • Android 平板:目前Android 平板也能够支援gocloud 的连线了,不过需要于play.google.com 下载aSpice 才能够连线(不是remote-viewer 软体)。
这里假设学校的电脑大多为windows 作业系统,因此当安装完软体后,可以在『开始』-->『所有程式』-->『VirtViewer』找到『 Remote Viewer 』这套软体。点选此软体后,就可以得到如下的画面:
Goucloud 画面示意图
图1.2.4、学生端电脑连线到Gocloud 的remote viewer 软体示意图
当学生开启虚拟机器后,将虚拟机器所在的网址复制到上述箭头所指定的方框中,即可达成连线。


1.2.2:启动与管理虚拟机器

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

Goucloud 画面示意图
图1.2.5、利用Gocloud 系统启动云端虚拟机器的示意图

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

Goucloud 画面示意图
图1.2.6、Gocloud 系统上面已经启动了云端虚拟机器的示意图

Goucloud 画面示意图
图1.2.7、以Remote viewer 软体取得Gocloud 上的云端虚拟机器

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

  • View:可以将整个画面放大到『全萤幕(Full Screen)』,要取消只要按下键盘功能键[F11] 即可复原,也能够放大、缩小画面。
  • Send key:可以传送组合按键给虚拟机器,避免由于直接按下按键导致windows 或用户端自己其他作业系统的困扰。

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


1.3:第一次登入CentOS 7

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

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

1.3.1:图形界面操作CentOS

图1.2.7的画面中,使用滑鼠左键将萤幕向上拉动,就会出现等待登入的画面,如下所示:

CentOS 7 图形界面登入示意图
图1.3.1、CentOS 7 图形界面登入示意图

你可以:

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

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

例题:
请第一次登入系统,并且处理好中文的操作界面!同时,家目录底下的档案档名,最好不要有中文存在。
答:
  1. 根据教材提供的帐号密码登入系统:选择student 帐号,然后输入密码;
  2. 第一次登入时,会出现选择用户语系的画面,请点选最底下的未知(三个直立的小数点),然后将画面拉动到最下方,即可看到『汉语台湾』,选择后,在画面的右上方按下[下一步];
  3. 选择预设的输入法为『英语(美式)』即可按下[下一步];
  4. 点选『开始使用CentOS Linux』
  5. 出现第一次的使用说明(Getting Started),可以直接忽略按下右上方的关闭(X) 即可。
  6. 此时画面依旧是英文,请选择萤幕右上方的三角形按钮,点选『Student』这个身份按钮,画面会出现『 Log out 』的项目,点选『Log Out』登出;
  7. 再次以student 帐号登入系统,即可取得正确的中文操作环境。

如果一切处理顺利,那就可以出现图形化视窗。你可以先到『应用程式』-->『喜好』-->『终端机』点选,点出一个终端机界面, 然后再到画面右上角的三角形点选,就能够看到一些设定值的项目,如下所示:

CentOS 7 图形界面操作示意图
图1.3.2、CentOS 7 图形界面操作示意图

例题:
在图形界面下先尝试进行目录与档案的管理,这时请使用在最上方工作列『应用程式』隔壁的『位置』选单,点选『家目录』的项目,之后进行如下的动作测试:
  • 改变显示的档案资讯,在『缩图』与『详细资料』当中切换测试;
  • 在『详细资料』的画面中,如果要显示更多的资料,可以勾选哪些设定?
  • 若需要离开家目录到其他目录,勾选左侧『电脑』的项目,看看有哪些基本的目录存在
  • 依序点选『var』-->『spool』-->『mail』,看看出现什么资料呢?档案总管最上方出现的档名方式排列为何呢?
  • 尝试找到『电脑-->etc-->passwd』这个档案,将他复制后,变更路径到『电脑-->tmp』底下,然后贴上去!
  • 承上题,你能不能将『电脑-->etc-->shadow』复制到『电脑-->tmp』呢?

例题:
预设的中文输入法似乎怪怪的,没有办法正确的输入中文。你该如何设定中文输入法呢?
  1. 点选右上方三角形按钮,出现的视窗中左下角的螺丝工具图案点选下;
  2. 在『个人』的项目中,点选『地区和语言』的项目;
  3. 一开始只会看到『英语(美式)』与『汉语』,点选『+』之后,选择『汉语(台湾)』,再选『汉语(Chewing)』,最终按『加入』
  4. 将原本的『汉语』项目移除
之后就可以正常的使用注音输入法了。

例题:
  1. 如何关掉进入萤幕保护程式的状态?
  2. 如何观察与启动网路?
  3. 将student 登出系统

Tips 鸟哥的图示由于使用图形界面时,会在使用者的家目录建立相当多的图形界面操作设定档与暂存档。不过在系统管理员(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] :图形介面桌面。
例题:
请使用student 的身份在tty2 的画面中登入系统
CentOS Linux 7 (Core)
Kernel 3.10.0-327.el7.x86_64 on an x​​86_64

localhost login: student 
Password: <==这里输入你的密码 
Last login: Thu Apr 14 19:46:30 on :0 <==上次登入的情况 
[student@localhost ~]$ _ <==游标闪烁,等待你的指令输入

上面显示的内容为:

  1. CentOS Linux 7 (Core)
    显示Linux distribution的名称(CentOS)与版本(7);
  2. Kernel 3.10.0-327.el7.x86_64 on an x86_64
    显示Linux核心的版本为3.10.0-327.el7.x86_64,且目前这部主机的硬体等级为x86_64。
  3. localhost login:
    localhost是主机名称。至于login:则是一支可以让用户登入的程式。你可以在login:后面输入你的帐号后,按下[enter]就可以开始准备下个动作。
  4. Password:
    这一行的出现必须要在上个动作按[enter]之后才会出现。在输入密码的时候,萤幕上面『不会显示任何的字样!』这是为了担心使用者输入密码时,被偷看到『输入的密码长度』之故。
  5. Last login: Thu Apr 14 19:46: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其他的工作是还是继续在进行的!

例题:
请分别以图形界面以及文字界面登入系统(使用tty1 及tty2 登入),登入后,请使用w 这个指令查询谁在系统上?并请以你看到的资料说明哪些使用者透过哪些tty 登入系统。(有个:0 的终端机,那个是什么?)

1.4:简易的文字指令操作

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

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

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

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

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

[student@localhost ~]$ ll
drwxr-xr-x. 2 student student 6 3月7 19:18 Desktop
drwxr-xr-x. 2 student student 6 3月7 19:18 Documents
drwxr-xr-x. 2 student student 6 3月7 19:18 Downloads
drwxr-xr-x. 2 student student 6 3月7 19:18 Music
drwxr-xr-x. 2 student student 6   3月7 19:18 Pictures
drwxr-xr-x. 2 student student 6 3月7 19:18 Public
drwxr-xr-x. 2 student student 6 3月7 19:18 Templates
drwxr-xr-x. 2 student student 6 3月7 19:18 Videos

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

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

[student@localhost ~]$ ll /
总计32
lrwxrwxrwx. 1 root root 7 2月18 02:54 bin -> usr/bin
dr-xr-xr-x. 4 root root 4096 2月18 03:01 boot
drwxr-xr-x. 20 root root 3320 4月19 03:59 dev
drwxr-xr-x. 129 root root 8192 4月19 03:59 etc
drwxr-xr-x. 3 root root 20 4月14 19:46 home
lrwxrwxrwx. 1 root root 7 2月18 02:54 lib -> usr/lib
lrwxrwxrwx. 1 root root 9 2月18 02:54 lib64 -> usr/lib64
......

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

[student@localhost ~]$ ll -a
总计24
drwx------. 14 student student 4096 3月7 21:32 .
drwxr-xr-x. 3 root root 21 1月3 22:27 ..
-rw-r--r--. 1 student student 18 8月3 2016 .bash_logout
-rw-r--r--. 1 student student 193 8月3 2016 .bash_profile
-rw-r--r--. 1 student student 231 8月3 2016 .bashrc
drwx------. 11 student student 226 3月7 22:12 .cache
drwxr-xr-x. 15 student student 276 3月7 21:29 .config
drwxr-xr-x. 2 student student 6 3月7 19:18 Desktop
......

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

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

[student@localhost ~]$ ll -d /
dr-xr-xr-x. 17 root root 4096 2月18 03:01 /

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

Tips 鸟哥的图示以windows 的档案总管来说,通常档名的浏览画面中,左侧为『目录』而右侧为『该目录下的档名』,所以,『 ll 』代表滑鼠点左边的目录, 而萤幕输出右边的档名资料之意。

例题:
在终端机界面中输入『 clear 』会有什么效果?

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

1.4.2:历史命令功能

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

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

例题:
让student 呼叫出历史命令,观察一下曾经执行过ll / 的指令是『第几个』,若想要再次执行,应该如何处理?

除了『 !数字』可以重复执行某个指令外,也能够直接透过底下的方式来重复执行历史命令:

例题:
student 曾经输入过ls 这个指令,那我想要重新执行一次以ls 为开头的指令该如何处理?

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


1.4.3:离开系统与关闭系统

离开系统,以终端机界面来说,直接输入exit 或者logout 都可以。以图形界面来说,画面中右上角三角形部份点选后, 出现登入者(student) 的文字,点选后选择『登出』即可。但登出不是关机。关机时,最好能够确认系统上面没有其他工作的用户。因此关机前,建议检查系统上面的用户状态。

[student@localhost ~]$ w
 04:59:07 up 1:53, 3 users, load average: 0.00, 0.01, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
student :0 :0 03:59 ?xdm? 23.56s 0.14s gdm-session-worker
student pts/0 :0 03:59 59:31 0.03s 0.03s bash

上面表格中,『USER』栏位为登入的使用者,『TTY』就是前面小节谈到的终端机,通常为tty1~tty6。但是在tty1 使用图形界面登入时, 会显示为『 :0 』,亦即图形界面使用终端机名称为:0 之意。另外,每行最后的『WHAT』为该终端机目前使用的指令为何。所以图形界面为透过gdm-session-worker 指令而来,而终端机则使用bash 这个程式。

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

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

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

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

Logo

更多推荐