第一部分 Linux的规则与安装 笔记

第0章 计算机概论

0.1 电脑:辅助人脑的好工具

1.什么是电脑?
电脑就是一种计算机,而计算机其实是:接受用户输入的命令与数据,经由中央处理器的算术与逻辑单元运算后,产生或存储成有用的信息。

0.1.1 电脑硬件的五大单元

2.依据外观可以把电脑分成几部分?包括哪些?
输入单元:键盘、鼠标、读卡器、扫描仪、手写板、触控屏幕等
主机部分:就是系统单元,被主机机箱保护着,包含主板、CPU与内存等
输出单元:屏幕、打印机

3.如何定义中央处理器(CPU)?
CPU为一个具有特定功能的芯片,里面含有指令集,如果想要主机进行什么样的操作就要求主机必须有相应的指令集功能,就需要查看下主机是否具备这样的指令集才行。

4.CPU的主要功能是管理和运算,如果按照这个可以吧CPU分为哪些单元?各个单元所负责的功能?
算术逻辑单元:负责程序运算与逻辑判断
控制单元:主要协调各周边组件与各单元间的工作

5.电脑是由几个单元组成的?
输入单元、输出单元、CPU、内部的控制单元、算术逻辑单元、内存

6.内存的工作原理?
基本上数据都是通过内存再流出去的。

0.1.2 一切设计的起点:CPU的架构

7.目前世界上最常见的CPU架构?以及他们的差异性?
精简指令集(RISC):CPU的设计中指令集较为简单,指令的运算时间都很短,完成的操作也很简单,指令的性能也好,但是如果需要执行复杂的事情需要由多个指令来执行。
世界上使用最广泛的精简指令集:ARM CPU系列。
复杂指令集(CISC):指令的每个小指令集可以执行一些低级的硬件操作,指令数目多切复杂,每条指令的长度而且不一样。因为执行的指令比较复杂所以花费的时间很长,但是每个指令可以处理的工作比较丰富。

8.为什么普通PC机无法识别超过4GB内存?
64位CPU代表CPU一次可以读写64位的数据信息,32位CPU则是CPU一次能读取32位的意思。32位的CPU读取的最大数据量就是不超过4GB。
CPU每次能够处理的数据量被称为字节(word size),字长依据CPU的设计而有32位与64位。我们通常所说的电脑是32位或64位主要是依据这个CPU解析的字长而来的。

9.多媒体、虚拟化、省电功能各有哪些重要的指令集?
多媒体指令集:MMX、SSE、SSE2、SSE3、SSE4、SS
虚拟化指令集:Intel VT-x、AMD-V
省电功能:Intel SpeedStep、AMD PowerNow!
64/32位兼容技术:AMD AMD64、Intel 64

0.1.3 其他单元的设备

10.其他单元的设备
系统单元:系统单元包含CPU与内存及主板相关组件。
存储单元:包含内存(Main Memory、RAM)与辅助存储(硬盘、软盘、光盘、磁带等)
输入、输出单元:同时具备输入、输出功能的设备就是触摸屏了。

0.1.4 运作过程

11.如何理解CPU、内存、硬盘、主板、各项接口设备、显卡、主机电源的作用?
CPU=脑袋
内存=脑袋中存放在被思考的数据的区块
硬盘=脑袋中存放回忆的记忆区块
主板=神经系统
各项接口设备=人体与外界沟通的手、脚、皮肤、眼睛等
显卡=脑袋中的影像
主机电源(Power)=心脏

0.1.5 电脑的分类

12.电脑如何进行分类?特点?主要应用的领域?
超级计算机(Supercomputer):计算速度快,维护与使用成本高。国防军事、气象预测、太空技术等等
大型计算机(Mainframe Computer):具有多个高速的CPU功能,大型企业的主机、政权企业等等
迷你计算机(Minicomputer):具有大型计算机的特性,科学研究、工程分析、工厂的生产系统等等
工作站(WorkStation):价格比迷你计算机便宜,针对特殊用途的人员设计的,工作站的性能/价格比是所有电脑当中最佳的,常用于学术研究与工程分析等
微电脑(Microcomputer):体积小、价格低、功能全面,又分为:桌面型(台式)、笔记型(笔记本)等

0.1.6 电脑上面常用的计算单位(容量、速度等)

13.了解容量进度率?
电脑对进度的判断主要是通电中来电的记录信息,理论上只认识0和1.

1字节=8位
1024字节=1MB
1024MB=1GB
1024GB=1TB
1024TB=1PB
1024PB=1EB

但是通常我们购买的存储设备比如U盘、硬盘、移动硬盘等等,他们并不是按照我们理论上的存储单元来划分容量单元。
比如:500GB硬盘我们电脑读取出来的容量只有465.66GB,我们可以按照如下方式进行计算:
500×1000×1000×1000÷1024÷1024÷1024=465.66GB(1000是容量单位比率,1GB=1000MB;1MB=10000B;)
1000×1000×1000×1000×10000÷1024÷1024÷1024=931GB(1000是容量单位比率,1GB=1000MB;1MB=10000B;)

14.什么是进制?
常用的进制10进制,且每个位置上只有1个数值且不能大于9,如果大于10那么就用A代表,A就是10,B就是11,C就是12,以此类推。

15.计算机的速度单位?
CPU的命令周期常使用MHz或是GHz之类的单位,意思就是次数/秒的意思。
网络传输的单位是Mbit/s是Mbits per second,就是指每秒多少Mbit。

0.2 个人电脑架构与相关设备组件

16.南北桥功能与作用?
北桥:负责连接速度较快的CPU、内存与显卡等组件
南桥:负责连接速度较慢的设备接口,包括硬盘、USB设备、网卡等。
目前北桥的内存控制器已经整合到CPU当中,所以现在已经不存在北桥了。(这样做得目的只是为了加快电脑内存的读写能力)

0.2.1 执行脑袋运算与判断的CPU

17.升级主板时候需要考虑哪些问题?
CPU型号大多具有不同的针脚,所搭配的主板芯片组也不同,所以升级主机的时候不能单纯地只考虑CPU,也应该考虑下主板所支持的CPU型号。

18.什么是外频?什么是倍频?
外频:指的就是CPU与外部组件进行数据传输时的速度;
倍频:指的是CPU内部用来加速工作性能的一个倍数;
外频与倍频相乘才是CPU的频率速度。
例如:Intel Core 2 E8400的频率为3.0GHZ,外频是222MHZ,因此倍频就是9倍。计算方式如下:
3.0G=333M*9

19.什么是超频?
将CPU的倍频或是外频通过主板提供的设置功能更改成较高频率的一种方式。

20.如何提升内存的传输速率?
在新的设计方案中,已经把内存控制器整合到CPU内部,Intel使用了OPI与DMI技术,而AMD使用了Hyper Transport技术,这些技术都可以让CPU直接与内存、显卡等设备分别进行通信,而不需要通过外部的连接芯片。

21.什么叫前端总线速度?

22.软件的兼容性
软件具有向下兼容无法向上兼容,意思就是一个低版本软件可以往低版本设备上安装,但是不能往高版本设备上安装。

23.什么叫做超线程(Hyper-Threading,HT)
意思就是在一个CPU中运行多个程序而只共享一个CPU的资源,理论上需要像两颗CPU一样在同一时间段执行两个线程。

0.2.2 内存

24.什么叫挥发性内存?
缓存/运行内存/sync

25.DDR3、DDR3L主要区别在哪里?
主要区别就是电压功率的区别,DDR3的电压是1.5V;DDR3L的电压是1.35V。

26.为什么说内存的容量比CPU的速度更重要?
如果内存容量不是足够大,运行与执行速率大打折扣。

27.为什么使用双通道?
为了加大位宽所以芯片厂商将两个内存集合在一起,提高内存的运行速率提升电脑的性能。

28.双通道?三通道?四通道的目的?
提升计算机的运算能力

29.为什么主板上要安装CMOS电池?
主板上集成内置了网卡或显卡,该功能是否要启动与该功能的各项参数,被记录到主板上面的CMOS芯片中,这个CMOS芯片必须要借助额外的电源来使用记录。

30.什么是BIOS?
写死到主板上面的存储芯片中,这个存储芯片在没有通电时也能够记录数据,这就是只读存储器。

0.2.3 显卡

31.什么叫显卡?什么叫显存?什么是GPU?
显卡:又被称为VGA,显示重点在于分辨率与颜色深度。
显存:每个图像显示的颜色会占用内存,因此显卡上面的集成内存被称为显存。
GPU:显卡上添加一个3D加速的芯片,被称为GPU。

32.除了显卡外还有其他的连接接口?
D-sub(VGA接口):主要为15针的接口,是模拟信号输出所使用。
DVI:四种以上的接口,常见的有DVI-D、以及整合数字与模拟信号的DVI-I两种。
HDMI
DisplayPort

0.2.4 硬盘与存储设备

33.电脑上的主要存储设备?
硬盘、软盘、MO、CD、DVD、磁带机、U盘、蓝光光驱、SAN、NAS等等

34.硬盘的组成部分有哪些?
硬盘其实由许多的圆形碟片、机械手臂、磁头、主轴马达所组成。

35.硬盘的工作原理?
读写主要通过机械手臂上的磁头(head)来完成,主轴马达转碟片转动,然后机械手臂可伸展让磁头在碟片上线进行读写的操作。

36.什么叫扇区?什么叫磁道?什么叫柱面?
扇区:这个小区块就是磁盘的最小物理存储单位
磁道:同一个同心圆的扇区组合成的
柱面:由于磁盘里面可能会有多个碟片,因此在所有的碟片上面的同一个扇区组合成的圆

37.常见的传输接口?以及传输速率多少?
SATA、SAS、IDE、SCSI、USB、eSATA等,目前IDE、SCSI都被淘汰了。
固态硬盘:相较于传统的SATA和IDE,固态硬盘没有马达不需要转动,数据通过闪存直接写入硬盘,因此也不存在延迟和速率的问题。

版本 带宽(Gbit/s) 速度(MB/s)
SATA 1.0 1.5 150
SATA 2.0 3 300
SATA 3.0 6 600
SAS 1 3 300
SAS 2 6 600
SAS 3 12 1200
USB 1.0 12 1.5
USB 2.0 480 60
USB 3.0 5G 500
USB 3.1 10G 1000

38.什么叫每秒读写操作数(IOPS)?
数值越大,代表可操作次数较高,性能也越好。

39.选购与使用硬盘多注意的事项?
SSD(OS)+HDD(DATE)
桌面电脑硬盘转速为每分钟7200,笔记本电脑硬盘转速为每分钟5400.

0.2.5 扩展卡与接口
40.常见的扩展卡和接口?
PCI、AGP、PCI-X、PCie等等

0.2.6 主板

41.DMI 2.0的传输速率是4GB/S,换算成文件传输量时,大约为2GB/S的速度,PCle 2.0*8的理论速率达到4GB/s,但是与CPU的数据带宽竟然仅有2GB,性能的瓶颈就这样发生在CPU于南桥的带宽上面。

42.CMOS与BIOS的主要功能与区别?
CMOS主要的功能是记录主板上面的重要参数,包含了系统时间、CPU电压、频率、各项设备的I/O地址与IRQ等,由于这些数据的记录要用点,因此主板上面才有电池。BIOS是写入到主板上某一块flash或EEPROM的程序,它可以在计算机重启的时候执行,以加载CMOS当中的参数,并尝试调用存储设备中的引导程序,进一步进入操作系统当中。

43.连接外部设备的接口类型?
PS/2接口
USB接口:USB3.0的插槽为蓝色。
声音输出、输入与麦克风
RJ-45网络头
HDMI

0.2.7 主机电源

44.输出功率/输入功率
电源在使用的时候也会被电源(Power)本身使用一定的电

0.2.8 选购须知

45.什么情况下会导致操作系统运行不稳定?
(1)系统超频
(2)主机电源不稳
(3)内存无法负荷
(4)系统过热

0.3 数据表示方式

0.3.1 数字系统

46.如何计算数字的二进制?
通电就是1,不同点就是0.英文称为binary。所谓的十进制指的就是逢十进一,而二进制就是逢二进一。

0.3.2 字符编码系统

47.常用的编码系统以及介绍?
常用的英文编码表为ASCII系统,中文编码系统中;台湾使用Big5,大陆使用GB2312或GBK编码。

48.如何解决各种语言的编码错误问题?
国际组织ISO/IEC制定了Unicode编码系统,也被称为UTF-8或万国码的编码。

0.4 软件程序运行

0.4.1 机器语言程序与编译型程序

49.如何了解机器语言程序?
(1)需要了解机器语言
(2)需要了解所有硬件的相关功能函数
(3)程序不具有可移植性
(4)程序具有专一性

0.4.2 操作系统

50.什么叫操作系统?什么叫内核?
操作系统:就是一组程序,他的功能就是管理电脑的所有活动和驱动系统中所有的硬件。
内核程序放在内存中的区块是受保护的,并且启动后就一直常住在内存中。

51.如何解决操作系统对文件的调用?
为了更加方便工程师对系统硬件的使用,所以工程师开发了一套应用程序接口(Application Programming Interface,API)给程序员开发软件。

52.操作系统在硬件中扮演着什么样的角色?
(1)操作系统内核层直接参考硬件规格写成,所以同一个操作系统程序不能够在不一样的硬件架构下运行。
(2)操作系统只是管理整个硬件资源,包括CPU、内存、输入输出设备及文件系统等。
(3)应用程序的开发都是参考操作系统提供的API,所以该应用程序只能在该操作系统上面运行而已,不可以在其他操作系统上运行。

53.内核必须有哪些功能?
系统调用接口(System call interface)
进程管理(Process control)
内存管理(Memory management) 当内存不足时候可以提供交换分区(swap)的功能。
文件系统管理(Filesystem managment)
设备驱动(Device drivers)

54.操作系统与驱动必须注意哪几点?
操作系统必须要能够驱动硬件,如此应用程序才能够使用该硬件功能。
一般来说,操作系统会提供API,让开发商编写他们的驱动程序。
要使用新硬件功能,必须要安装厂商提供的驱动程序才行。
驱动程序是由厂商提供的,与操作系统无关。

0.4.3 应用程序

0.5 重点回顾

0.6 本章习题

第1章 Linux是什么与如何学习

1.1 Linux是什么

1.1.1 Linux是什么?操作系统/应用程序?

55.操作系统在硬件中扮演着什么样的角色?

如果把计算机系统比喻为人的话,那么硬件是大脑,而软件是思想。硬件可以看得见,摸得着,软件是控制硬件的中枢神经。
依据图中可以看出,Linux就是内核与系统调用接口那两层。

56.什么叫做软件移植?
就是把不同硬件平台运行的软件重新编译后在不同的硬件平台上运行,比如把MAC平台上的软件移植到Windows平台上。

1.1.2 Linux之前,UNIX的历史

57.什么叫做兼容分时系统(Compatible Time-Sharing System,CTSS)?
就是让大型主机通过提供多个终端(Terminal)以连接进入主机,利用主机的资源进行运算工作。

上图为早期的客户端仅仅具备输入\输出功能,不具备任何运算的功能。

58.Thompson的File server system对文件系统的重要概念?
所有的程序或系统设备都是文件
不管程序本身还是附属文件,所写的程序只有一个目的,且要有效地完成目标。

59.操作系统与硬件和内核的关系?
操作系统的内核(kernel)必须要跟硬件配合,与提供及控制硬件的资源进行良好的工作。

60.Linux的发展阶段
1969年,MIT和GE的“Multics”系统;
1969年,Ken Thompson的小型file server systemm
1973年,UNIX诞生。
1977年,BSD的诞生。
1979年,System V架构与版权声明、
1984年,X86架构的Mini操作系统开始编写并于两年后诞生。
1984年,GNU计划与FSF基金会的成立。
一个人分享;使用UNIX开发阶段;GNU计划的推广;GNU的通用公共许可证。
通用公共许可证(GPL),有几个重要的软件;Emacs、gcc、glibc、Bash shell
1988年,图形用户界面模式XFree86计划
1991年,芬兰大学生linus Torvalds独自完成linux的原始内核。

1.1.3 关于GNU、自由软件与开放源代码

70.自由软件的版权GNU GPL?
为了避免自己开发出来的开源(Open source)自由软件被拿去当专利软件,所以提出自由软件声明。版权是促进社会进步的手段,版权本身不是自然的权力。

71.自由(Free)的真谛是什么?
自由软件(Free Software)所指的自由意义指的是,拥有一定的自由度;用户可以自由的执行、复制、再发行、学习、修改、强化自由软件。

72.GPL对于自由软件的作者有什么优点?
软件安全性较好
软件运行性能较好
软件排错时间较短
贡献的源代码永远都存在

73.什么样的软件算的上开源软件?
(1)只要开发者公布了源代码,用户都能对源代码进行修改和编译。
(2)可以把别人发布的源代码修改后再以自己的名义发布,但是发布后必须带上源代码原作者相关信息。
(3)发布的源码必须同意别人能够对你的源代码可以修改和再发布。
(4)不能限制任何个人和组织以及机构组织领域使用你的源代码。
(5)不能具有任何排他条款。

74.闭源软件/专利软件(close source);Freeware;Shareware

1.2 托瓦兹的Linux的发展

1.2.1 与Minix之间

1.2.2 对386硬件的多任务测试

1.2.3 初次发布的Linux 0.02

1.2.4 Linux的发展:虚拟团队的产生

1.2.5 Linux的内核版本

奇数、偶数版本分类
主、次版本为奇数:开发中版本(development)
主、次版本为偶数:稳定版本(stable)
主线版本、长期维护版本(longterm version)
Linux内核版本与Linux发行版本

1.2.6 Linux发行版

75.什么样才算是发行版本的Linux系统?
Linux+各种软件就算是一个完整的操作系统。
内核+软件+工具+可完全安装程序被称为Linux distribution(Linux发行版或者Linux发布的商业套件)

76.Linux发行版主要分为那两大类?
一种是使用RPM方式安装软件的系统,包括Red Hat、Fedora、SUSE等
一种是使用Debian的dpkg方式安装软件的系统,包含Debian、Ubuntu、B2D等。

77.依据计算机主机的用途来分类型怎么划分Linux类型?
用于企业环境:
用于个人或教学的服务器环境
用于个人的计算机

1.3 Linux当前应用的角色
1.3.1 企业环境的使用

78.Linux常见的使用环境?
网络服务器
关键任务的应用(金融数据库、大型企业网络环境)
学术机构的高性能计算任务

1.3.2 个人环境的使用

79.桌面计算机环境
网页浏览、即时通信、公文处理、网络工具的公文处理系统、办公软件(Office Software)处理数控、收发电子邮件

80.手持系统(PDA、手机)、嵌入式系统

1.3.3 云端应用

1.4 Linux该如何学习

1.4.1 从头学习Linux基础

80.如何学习Linux基础?
计算机概论与硬件相关知识
先从Linux的安装与命令学起
Linux操作系统的基础技能
Shell与Shell脚本的学习
一定要学会软件管理
网络基础的建立
如果连网络基础都通过了,那么网站的搭建对你来说,简直就是太简单了。

1.4.2 选择一本易读的工具书

1.4.3 实践再实践

1.4.4 发生问题怎么处理
81.如何解决学习中遇到的问题?
在自己的主机\网络资料库上查询HOW TO或FAQ
注意信息的输出,自行解决疑难杂症
查找过后,注意网络礼节,讨论区大胆的发言
Netman大大给的建议

1.4.5 鸟哥的建议(重点在solution的学习)

82.如何提升自己的学习动力?
成就感与兴趣

第2章 主机规划与磁盘分区

2.1 Linux与硬盘的搭配

2.1.1 认识计算机的硬件设备

2.1.2 选择与Linux搭配的主机设备

82.而且较早期的硬件设备也可能由于保存的问题或是电子元件老化的问题,导致这样的计算机系统反而非常容易在运行过程中出现不明的宕机情况。

83.怎么选择支持Linux系统的硬件设备?
CPU:
内存:越大越好
硬盘:由于数据量与数据读写频率的不同,对于硬盘的要求也不相同。
显卡:对于不需要X-Windows的服务器来说,显卡算是最不重要的组件。
网卡:服务器上最重要的组件之一。
光盘:
软盘:
键盘:
鼠标:

84.常见的硬件类型与区别?

一般小型主机且不含X-Windows系统
用途:家用NAT主机(地址转换)或小型企业的非图形用户界面模式小型主机。
CPU:5年之内的
内存:<512MB最好是<1GB为好
网卡:一般的以太网即可
显卡:能够被识别即可
硬盘:20GB以上即可

桌面型(Desktop)Linux系统/含X-Windows
用途:Linux的练习机或办公室工作机。
CPU:I5、I7为好
内存:大于1GB为佳
网卡:普通以太网即可
显卡:256MB入门级为佳
硬盘:越大越好,不低于60GB

中型以上Linux服务器
用途:中小企业或学校的FTP、邮件、网页等网络服务主机。
CPU:等级高点,I5、I7多核为佳
内存:大于1GB以上,大于4GB更好
网卡:Broadcom或Intel
显卡:64MB的显存显卡
硬盘:越大越好,最好使用磁盘阵列RAID功能。
中型以上Linux服务器最好是购买品牌商用服务器。

2.1.3 各硬件设备在Linux中的文件名

85.在Linux系统中,每个设备都被当成一个文件来对待。

2.1.4 使用虚拟机学习

86.目前Linux系统大多使用KVM这个虚拟化软件。

2.2 磁盘分区

2.2.1 磁盘连接方式与设备文件名的关系

87.个人计算机常见的接口类型?
分别是SATA和SAS。

88.正常的物理机器大概使用的都是/dev/sd[a-p]的磁盘文件名,至于虚拟机环境中,为了加速,可能就会使用/dev/vd[a-p]这种设备文件名。

89.由于SATA、USB、SAS等磁盘接口都是使用SCSI模块来驱动的,因此这些接口的磁盘设备文件都是/dev/sd[a-p]的格式。

90.如何判断设备的文件名?
根据Linux内核检测到磁盘的顺序来命名。

91.磁盘的碟片如何分类?
碟片上面可细分为扇区(Sector)与磁道(Track)两种单位,其中扇区的物理大小设计有两种,分别是512字节与4K字节。

92.早期磁盘的扇区信息?现在的磁盘信息?
早期的磁盘信息被称为MBR(Master Boot Record)格式
现在的磁盘信息格式被称为GPT(GUID partition table)。
这两种格式限制文件都是由区别的

2.2.2 MBR(MS-DOS)与GPT磁盘分区表(partition table)

93.分区表有几种格式?以及有哪些限制?
MBR(MS DOS)分区表格式与限制
早期的Linux为了兼容Windows所以支持Windows的MBR(Master Boot Record,主引导记录)的方式来处理启动引导程序与分区表。
主引导记录(Master Boot Record,MBR ):可以安装启动引导程序的地方,有446字节;
分区表(partition table):记录整块硬盘分区的状态,有64字节。
由于分区表所在的区块仅有64字节容量,因此最多仅能有四组记录区,每组记录区记录了该区段的起始与结束的柱面号码。

94.磁盘分区表的作用示意图

假设上面的硬盘设备文件名为/dev/sda时,那么这四个分区在Linux系统中的设备文件名如下所示,重点在于文件名后面会再接一个数字,这个数字与该区所在的位置有关。
P1:/dev/sda1
P2:/dev/sda2
P3:/dev/sda3
P4:/dev/sda4
以上的信息可以看出来几个重要的信息:
其实所谓的分区只是针对那个64字节的分区表inxing设置而已
硬盘默认的分区表仅能写入四组分区信息
这四组划分信息我们被称为主要(Primary)或扩展(Extended)分区。
分区的最小单位通常为柱面(Cylinder)
当系统要写入磁盘时,一定会参考磁盘分区表,才能针对某个分区进行数据的处理。

95.为什么磁盘要进行分区
(1)数据的安全性:如果每个分区都是分开的,确保了数据的安全。
(2)系统的性能考虑:
扩展分区的意思就是:既然第一个扇区所在的分区表只能记录四组数据,那我可利用额外的扇区来记录更多的信息。

96.扩展分区的目的是什么?
扩展分区的目的就是使用额外的扇区来记录分区信息,扩展分区本身并不能被拿来格式化。

97.MBR主要分区、扩展分区与逻辑分区的特性我们做个简单的定义?
主要分区与扩展分区最多可以有4个(硬盘的限制)
扩展分区最多只有1个(操作系统的限制)
逻辑分区是由扩展分区持续划出来的分区
能够被格式化后作为数据存取的分区是主要分区与逻辑分区,扩展分区无法格式化。
逻辑分区的数量依据操作系统而不同,在Linux系统中SATA硬盘已经可以突破63个以上的分区限制。
如果扩展分区被破坏,所有逻辑分区就会被删除。

98.过去的MBR分区表的限制中可以发现如下问题?
操作系统无法使用2.2TB以上的磁盘容量;
MBR仅有一个区块,若被破坏后,经常无法使用或很难恢复。
MBR内的存放启动引导程序的区块仅446字节,无法存储较多的程序代码。

99.现在的MBR默认使用高达128组记录,而在Linux本身的内核设备记录中,针对单一磁盘来说,虽然过去最多只能到达15个分区,不过由于Linux内核通过udev等方式的处理,现在Linux已经没有这个限制。此外,GPT分区已经没有所谓的主、扩展、逻辑分区的概念,既然每组记录都可以独立存在,当然每个都可以视为主要记录分区,每一个分区都可以被拿来格式化使用。

2.2.3 启动流程中的BIOS与UEFI启动检测程序

100.BIOS搭配MBR/GPT的启动流程?
这个BIOS就是在启动的时候,计算机系统会主动执行的第一个程序。

101.BIOS如何启动系统?
该硬盘里面去读取第一个扇区的MBR位置,MBR这个仅有446字节的硬盘容量里面会放置最基本的启动引导程序。
这个启动引导的贺新年在于加载(load)内核文件。

102.整个启动过程到系统的过程如何?
(1)BIOS:启动流程到操作系统之前的过程应该有这样的。
(2)MBR:第一个可启动设备的第一个扇区内的主引导记录块,内含启动引导代码;
(3)启动引导程序(boot loader);一个可读取内核文件来执行的软件;
(4)内核文件:开始启动操作系统

103.Boot loader的主要任务?
(1)提供选项:用户可以选择不同的启动选项,这也是多重引导的重要功能;
(2)加载内核文件:直接指向可使用的程序区段来启动操作系统
(3)转交其他引导程序;将启动管理功能转交给其他启动引导程序负责。

104.每块硬盘不止只有一个MBR,启动引导程序之外还可以安装在MBR之外,还可以安装在每个分区的启动扇区(boot sector)

105.启动引导程序的工作执行示意图:

MBR引导程序提供两个选项,选项一(M1)可以直接加载Windows的内核文件来开机;选项二(M2)则是将开机管理工作交给第二个分区的启动扇区(boot sector)。
当用户开机的时候选择二时,那么整个开机管理工作就会给第二分区的启动引导程序。当第二个启动引导程序启动后,该引导程序内仅有一个启动选项,因此就能够使用Linux的内核文件来启动。
总计下上图内容:
每个分区都拥有自己的启动扇区(boot sector)
图中的系统分为第一及第二分区
实际可启动的内核文件是放置到各分区中的
启动可引导只会认识自己的系统分区内的可启动的内核文件,以及其他启动引导程序而已;
启动引导程序可直接指向huo's 间接将管理权转交给另一个管理程序。

106.UEFI BIOS搭配GPT启动的流程
GPT可以提供64位寻址能力,但是BIOS其实不懂GPT。
UEFI其实是一个比较低级的操作系统,在特定的环境中UEFI也能执行一些特定的功能。UEFI也增加了一些安全性的功能,所以介入UEFI的设备必须要经过安全验证才能被正常使用。
如果不能经过UEFI的安全验证那么可以关闭UEFI的secure boot的功能,才能顺利进入Linux系统。

2.2.4 Linux安装模式下,磁盘分区的选择(极重要)

107.目录树(directory tree)的作用?
在整个Linux系统中最重要的地方就是目录树架构,所谓的目录树就是以根目录为主,然后向下呈现为分支状的目录结构的一种文件架构。所以整个目录树最重要的就是那个根目录(root),这个根目录的表示方法为一条斜杠“/”。

目录树相关性示意图

108.什么叫挂载?
就是利用一个目录当成进入点,将磁盘分区的数据放置在该目录下,也就是说进入该目录就可以读取该分区的意思。

Windows挂载和Linux挂载
Windows下的挂载比如:电脑上使用U盘、移动硬盘等等;Linux下的挂载把一个新的未使用的硬盘挂载到一个根目录下。

Windows挂载格式:桌面\我的计算机\E:\我的文件
Linux:/media/cdrom/我的文件

109.如何规划使用挂载点和磁盘分区

110.什么叫“自定义安装(Custom)”?
自定义安装又被称为“专家模式”,首次安装Linux,只要划分“/”及“交换分区”即可。
首次安装用最大的分区“/”来安装系统,这样做得好处就是不用担心分区错误导致不能安装系统。如果你是初次安装系统可以划分“/与交换分区”
建议分区的办法:预留一个备用的剩余磁盘容量。

2.3 安装Linux前的规划

2.3.1 选择适当的Linux发行版

2.3.2 主机的服务规划与硬件的关系

111.如何打造Linux和Windows共享环境?
(1)NAT(完成IP分享器的功能)
(2)SAMBA(加入Windows网络邻居)
Windows系统之间如何传输数据?就是通过网络邻居来完成的。
数据分享功能对于网卡的要求比较高,所以尽量用性能比较好的网卡。
(3)Mail(邮件服务器)
邮件服务器比较在意的就是硬盘容量和网卡速度。
(4)web(WWW服务器)
(5)DHCP(提供客户端自动获取IP的功能)
(6)FTP

2.2.3 主机硬盘的主要规划

112.如何让硬盘的数据安全?
当主机系统的硬件出现问题后,你的数据是否可以安全的保存起来。

113.基本的硬盘分区模式?
(1)最简单的分区办法练习之用。
再预留一些剩余的磁盘空间以供后续的练习之用。
(2)稍微麻烦一点的方式
在默认的CentOS环境中,下面的目录死比较符合容量大且(或)读写频繁的特征的目录:
/boot
/
/home
/var
swap
必须要注意您的服务种类,然后才进行硬盘的规划。

2.3.4 鸟哥的两个实际案例

114.家用的小型Linux服务器,IP共享与文件共享中心。
家用一般提供家用联机共享、NAT功能、数据存放功能:Samba功能(提供网络邻居的网络驱动器的功能)。

115.提供Intel的PC集群(Cluster)
提供模型仿真的软、硬件平台,主要提供的服务并非因特网服务,而是研究室内部的研究工作分析。

第3章 安装CentOS 7.x

3.1 本练习机的规划(尤其是分区参数)

116.Linux的主机角色定位?选择适合的Linux发行版?计算机系统硬件设备?内存?硬盘?网卡?其他输入/输出设备?
角色定位:主要用于练习Linux的相关技术,需要消耗很多的系统资源X Windows System。
Linux版本:兼容于商业版RHEL的社区版本CentOS.
计算机系统硬件设备:Linux原生的虚拟系统管理器,使用本机的CPU类型。
内存:通过虚拟化大概需要1.2GB。
硬盘:使用一块40GB的Virtio接口的磁盘,因此磁盘文件名应该会是/dev/vda。同时提供一块2GB左右的IDE接口的磁盘,这块磁盘仅是作为测试用,不当作系统盘,因此还有一块/dev/sda。
网卡:使用Bridge(桥接)方式设置对外的网卡,网卡同样使用了virtio接口,因为CentOS本身提供了驱动程序,能够识别网卡。
显卡:QXL显卡,60MB左右的显存。
其他输入\输出设备:例如:鼠标、USB键盘以及显示器等等。

117.硬盘分区如何配置?
在目前的Linux环境下,如果磁盘超过了2TB。那么默认是会使用MBR分区表格式。

118.预计的容量分区大小?
所需目录/设备 磁盘容量 文件系统 分区格式
BIOS boot 2MB 系统自定义 主要分区
/boot 1GB xfs 主要分区
/ 10GB xfs LVM方式
/home 5GB xfs LVM方式
交换分区 1GB swap LVM方式

3.2 开始安装CentOS 7
3.2.1 调整BIOS与虚拟机创建流程

119.Windows和Linux下如何安装Linux系统?
Windows使用了类似的UNetbootin或是ISOtoUSB等软件来处理。
Linux使用了U盘启动:#假设你的USB设备为/dev/sdc,而ISO文件名为centos7.iso的话。
[root@study~]#dd if=centos7.iso of=/dev/sdc

120.为什么光盘启动会导致系统无法启动?
(1)计算机硬件不支持
(2)光驱会挑盘
(3)光盘有问题

3.2.2 选择安装模式与启动(inst.gpt)

121.如何选择以Linux系统 GPT格式来安装硬盘系统
开机按Tab按键,将光标移动到下图末尾在.check quiet后加入inst.gpt。

输入“inst.gpt”后系统会检测你的硬件,这段画面的流畅性取决于你的光驱、硬件复杂度。

122.选择你熟悉的语言“中文简体(中国)”,“统一按钮展示的安装界面”。

3.2.3 设置时区、语言与键盘布局

123.“日期和时间”默认选择“亚洲/上海时区”,“键盘”里面的“布局切换选项”快捷键按钮选择“Ctrl+Shirt”。

注意:这个快捷键一般可以根据自己的个人喜欢进行设置。

3.2.4 安装源设置与软件选择

124.选择准备要被安装的软件所在媒介

如果你在局域网里设置好了安装服务器,那么使用网络安装的速度比其他方式会更快(理论上可以达到100MB/S,这个速度是DVD和SUDB 2.0所不及的)

125.接下来完成后就需要选择“软件选择”的界面了:

注意:默认的是[最小安装]的模式,这个模式下只能安装最简单的功能,不适合初学者。初学者应该安装图形界面并选择如下选项:
(1)带GUI的服务器(GUI就是用户图形用户界面模式,默认搭载GNOME);
(2)GNOME桌面;Linux常见的图形用户界面软件;
(3)KDE Plasma Workspaces:另一个常见的图形用户界面软件;

3.2.5 磁盘分区与文件系统设置

126.如何进行磁盘分区?

上图可以看出磁盘的安装目录位置以及本地标准磁盘空间,可以单独添加硬件、对本地的磁盘进行自我分区以及可以让系统就进行自动分区。

提前设置好网络,然后可以选择“安装源”在网络上安装下载后再安装系统。

如何磁盘分区格式使用GPT,那么在进行硬盘分区的时候就应该分一个名字为“biosboot”的分区方便GPT便签进行系统引导。

127.设备类型如何进行区分?
(1)标准分区:就是我们一直谈的分区,类似/dev/vda1之类的分区。
(2)LVM:这是一种可以弹性增加或缩小文件系统容量的分区。
(3)LVM精简配置(Thin Provisioning)可以理解为LVM的高级版

128.如何区分ext2、ext3、ext4?
这是Linux早期的文件系统类型。ext3、ext4文件系统多了日志功能,相对于系统的恢复比较快。如果磁盘容量比较大,ext速度也快不到哪里去,目前如果你磁盘有特殊需求否则不建议使用ext格式。

129.什么是swap(交换分区)?
swap就是磁盘模拟为内存的交换分区。但是交换分区并不会使用到目录树的挂载,所以用交换分区就需要使用挂载点了。

130.BIOS Boot的作用是什么?
GPT分区表可能会使用到的东西,若你使用MBR分区,就不需要BIOS Boot。

131.xfs有什么作用和功能?
xfs是CentOS默认的文件系统,早期为大型服务器而开发。目前大容量磁盘越来越多,所以针对于处理大容量磁盘空间xfs文件系统的性能发挥越来越优越。

132.vfat有什么作用和功能?
能够同时被Windows和Linux两大系统所支持的文件系统类型,如果你使用的是双系统(WIN+LINUX)建议可以使用vfat文件系统类型。

133.帐号密码如果设置比较弱的口令如何才能设置成功?

第一次输入密码:123456会显示“密码未通过字典检查-过于简单化\系统化”等字样,没关系我们需要多点几次“完成”就可以通过。
注意:实际的生产环境中严禁使用诸如:123456等等这样的弱口令。

134.Linux系统中如何进行分区?
Linux磁盘分区中依次有三大主要的项目:/boot、/、swap(交换分区)三个项目。
还有biosboot(只针对于磁盘格式是GPT的,如果磁盘格式不是GPT不需要划分biosboot)。
/boot、/、/swap都是使用LVM磁盘管理方式的。
如果你目前创建的是一个未来长久使用的测试机,请您最好要给您的服务器预留一些多余的磁盘空间以便以后测试使用。

135.swap(内存交换)的作用?
当有数据被存放在物理内存里面,但是这些数据又不是常被CPU所使用,那么这些不常用的数据会被丢到硬盘里的交换分区中,因此会释放一些空间给目前正在运行的数据使用,如果你的内存很大所以也不用再设置交换分区给系统使用。

3.2.6 内核管理与网络设置

136.什么是KDUMP?
主要是放置Linux系统出现宕机后将宕机的日志等信息保存下来,然后让Linux运维和开发人员分析判断系统宕机的原因。

137.如何设置Linux的网络配置?

3.2.7 开始安装、设置root密码与新增可切换身份之一般用户

138.如何设置密码?
密码字符的长度设置至少8个字符以上,而且含有特殊符号最好,且不要是个人的常见信息(电话号码、身份证、生日等,)。

139.为什么新建系统需要设置一个一般账号?
如果在实际工作和生产中,如果我们直接用超级管理员管理系统一不留意配置错误信息。或者不小心被黑客攻击窃取账号信息,容易导致信息泄露。
如果你正在运行一般账号想要使用超级管理员功能,可以通过命令su -或者sudo -i切换到超级管理员帐号下。

3.2.8 如何设置Linux下网络和主机名?
打开网络和主机选项后启用,打开以太网(etho)按钮。打开配置按钮后输入IP地址和相关配置参数,最后更改主机名为“study.centos.vbird”后点击“应用”即可。
在弹出的授权按钮中勾选同意,即可完成授权意见。

140.Linux系统下的帐号密码信息一般存放在哪里?
包含root的密码等,通常会被存放到/root/anaconda-ks.cfg这个文件内。

3.2.9 其他功能:RAM测试,安装笔记本电脑的内核参数(可选)

3.3 多重引导安装步骤与管理(可选)

3.3.1 安装CentOS 7.X+Windows 7的规划

3.3.2 高级安装 CentOS 7.x与Windows 7

3.3.3 恢复MBR内的启动引导程序与设置多重引导选项

第4章 首次登陆与在线求助

4.1 首次登陆系统

4.1.1 首次登陆CentOS 7.x图形用户界面模式

141.为什么Linux系统中会说登陆与注销?
因为Linux不相同与Windows系统,Linux系统是多人多任务的环境。所以系统随时都可能有很多用户在运行,如果随意的关闭系统可能会导致一些无法恢复的问题后果就很严重。

142.为什么不建议Linux系统直接用root身份来登录系统?
因为如果我们不小心产生误操作或者不可恢复的操作会导致极其严重的后果,所以我们在使用root帐号的时候要特别的谨慎。

4.1.2 GNHOME的操作与注销

143.了解图形界面下的一些常用按钮?
上方任务栏(control panel)、桌面、下方任务栏、上方工具栏:应用程序(Applications)、上方工具栏:位置(就是文件资源管理器)

144.常用的设置:文件资源管理器、中文输入法、设置功能、注销等

145.什么叫注销?
注销不是关机只是退出当前登录的账号,严格意思上说Linux是个多任务操作系统。普通的帐号不具备关机的权限,普通账号只具备注销权限。

4.1.3 X Windows与命令行模式的切换

146.什么叫做命令行终端?
命令行终端也被称为终端界面、Terminal、Console。Linux系统默认情况下会提供六个终端来让用户登录,切换的方法为使用:[Ctrl+Alt+F1~F6]的组合键。如果想要返回字符界面输入:init 5即可。
也可以按Ctrl+Alt+F4即可进入字符界面
Ctrl+Alt+F1F6就是登陆tty1tty6终端。

147.tty2~tty6如何产生的?
在CentOS 7环境下,当启动完成之后,默认系统只会提供给你一个tty而已,因此无论是命令行还是图形界面,都是会出现tty1。tty2~tty6其实一开始是不存在的,但是当你要切换时(按下[Ctrl+Alt+F2]组合键),系统才会产生额外的tty2、tty3。

148.什么叫做图形界面?
命令行界面加上X Windows软件。

4.1.4 在终端登录Linux

149.Linux的版本、内核版本、主机名、帐号密码、系统上次登录时间和终端名称、正确登录帐号的提示信息。

4.2 命令行模式下命令的执行

4.2.1 开始执行命令

150.记住一些比较常用的特殊字符?
command、[]、回车键、\、字符的大小写等等:
空格键是很重要的特殊字符、回车键代表着一行命令的开始启动、反斜杠后立刻接着特殊字符才能转义、在Linux系统中英文字母大小写不一样、第一个被输入的字符绝对是命令或是可执行的文件。

151.列出家目录中区别和差异?

ls -al ~

[dmtsai@study ~]$ ls -al ~
总用量 40
drwsrwsrwt. 16 dmtsai dmtsai 4096 8月 5 11:28 .
drwxr-xr-x. 3 root root 20 4月 11 2018 ..
-rw-------. 1 dmtsai dmtsai 427 8月 5 11:22 .bash_history
-rw-r--r--. 1 dmtsai dmtsai 18 8月 3 2017 .bash_logout
-rw-r--r--. 1 dmtsai dmtsai 193 8月 3 2017 .bash_profile
-rw-r--r--. 1 dmtsai dmtsai 231 8月 3 2017 .bashrc
drwxrwxr-x. 15 dmtsai dmtsai 4096 8月 4 15:40 .cache
drwxrwxr-x. 16 dmtsai dmtsai 4096 8月 4 15:48 .config
-rw-------. 1 dmtsai dmtsai 16 8月 4 15:32 .esd_auth
drwx------. 2 dmtsai dmtsai 79 8月 4 15:41 .gnupg
-rw-------. 1 dmtsai dmtsai 1864 8月 5 11:28 .ICEauthority
drwx------. 3 dmtsai dmtsai 19 8月 4 15:32 .local
drwxr-xr-x. 4 dmtsai dmtsai 39 8月 4 13:27 .mozilla
drwx------. 2 dmtsai dmtsai 6 8月 4 15:41 .ssh
-rw-rw-r--. 1 dmtsai dmtsai 1 8月 4 16:03 text.xtx
drwxr-xr-x. 2 dmtsai dmtsai 6 8月 4 15:32 公共
drwxr-xr-x. 2 dmtsai dmtsai 6 8月 4 15:32 模板
drwxr-xr-x. 2 dmtsai dmtsai 6 8月 4 15:32 视频
drwxr-xr-x. 2 dmtsai dmtsai 6 8月 4 15:32 图片
drwxr-xr-x. 2 dmtsai dmtsai 6 8月 4 15:32 文档
drwxr-xr-x. 2 dmtsai dmtsai 6 8月 4 15:32 下载
drwxr-xr-x. 2 dmtsai dmtsai 6 8月 4 15:32 音乐
drwxr-xr-x. 2 dmtsai dmtsai 6 8月 4 16:24 桌面

ls

[dmtsai@study ~]$ ls
text.xtx 公共 模板 视频 图片 文档 下载 音乐 桌面

ls -a -l ~

[dmtsai@study ~]$ ls -a -l ~
总用量 40
drwsrwsrwt. 16 dmtsai dmtsai 4096 8月 5 11:28 .
drwxr-xr-x. 3 root root 20 4月 11 2018 ..
-rw-------. 1 dmtsai dmtsai 427 8月 5 11:22 .bash_history
-rw-r--r--. 1 dmtsai dmtsai 18 8月 3 2017 .bash_logout
-rw-r--r--. 1 dmtsai dmtsai 193 8月 3 2017 .bash_profile
-rw-r--r--. 1 dmtsai dmtsai 231 8月 3 2017 .bashrc
drwxrwxr-x. 15 dmtsai dmtsai 4096 8月 4 15:40 .cache
drwxrwxr-x. 16 dmtsai dmtsai 4096 8月 4 15:48 .config
-rw-------. 1 dmtsai dmtsai 16 8月 4 15:32 .esd_auth
drwx------. 2 dmtsai dmtsai 79 8月 4 15:41 .gnupg
-rw-------. 1 dmtsai dmtsai 1864 8月 5 11:28 .ICEauthority
drwx------. 3 dmtsai dmtsai 19 8月 4 15:32 .local
drwxr-xr-x. 4 dmtsai dmtsai 39 8月 4 13:27 .mozilla
drwx------. 2 dmtsai dmtsai 6 8月 4 15:41 .ssh
-rw-rw-r--. 1 dmtsai dmtsai 1 8月 4 16:03 text.xtx
drwxr-xr-x. 2 dmtsai dmtsai 6 8月 4 15:32 公共
drwxr-xr-x. 2 dmtsai dmtsai 6 8月 4 15:32 模板
drwxr-xr-x. 2 dmtsai dmtsai 6 8月 4 15:32 视频
drwxr-xr-x. 2 dmtsai dmtsai 6 8月 4 15:32 图片
drwxr-xr-x. 2 dmtsai dmtsai 6 8月 4 15:32 文档
drwxr-xr-x. 2 dmtsai dmtsai 6 8月 4 15:32 下载
drwxr-xr-x. 2 dmtsai dmtsai 6 8月 4 15:32 音乐
drwxr-xr-x. 2 dmtsai dmtsai 6 8月 4 16:24 桌面

以上三个命令的执行方式是一模一样的执行结果。
注意在Linux环境下大小写字母是不一样的结果,也就是说在Linux环境下面,VBird与vbird这两个是完全不一样的文件。
改变了字母的大小写,显示的结果就不一样。

152.显示当前系统所支持的语系?
[dmtsai@study ~]$ locale
LANG=zh_CN.UTF-8
LC_CTYPE="zh_CN.UTF-8"
LC_NUMERIC="zh_CN.UTF-8"
LC_TIME="zh_CN.UTF-8"
LC_COLLATE="zh_CN.UTF-8"
LC_MONETARY="zh_CN.UTF-8"
LC_MESSAGES="zh_CN.UTF-8"
LC_PAPER="zh_CN.UTF-8"
LC_NAME="zh_CN.UTF-8"
LC_ADDRESS="zh_CN.UTF-8"
LC_TELEPHONE="zh_CN.UTF-8"
LC_MEASUREMENT="zh_CN.UTF-8"
LC_IDENTIFICATION="zh_CN.UTF-8"
LC_ALL=

153.如何修改当前系统的语系?

[dmtsai@study ~]$ LANG=en_US.utf8
[dmtsai@study ~]$ export LC_ALL=en_US.utf8
[dmtsai@study ~]$ locale
LANG=en_US.utf8
LC_CTYPE="en_US.utf8"
LC_NUMERIC="en_US.utf8"
LC_TIME="en_US.utf8"
LC_COLLATE="en_US.utf8"
LC_MONETARY="en_US.utf8"
LC_MESSAGES="en_US.utf8"
LC_PAPER="en_US.utf8"
LC_NAME="en_US.utf8"
LC_ADDRESS="en_US.utf8"
LC_TELEPHONE="en_US.utf8"
LC_MEASUREMENT="en_US.utf8"
LC_IDENTIFICATION="en_US.utf8"
LC_ALL=en_US.utf8

4.2.2 基础命令的操作

154.显示日期与时间的命令:date
[dmtsai@study ~]$ date
Wed Aug 5 11:40:53 CST 2020

155.显示日历的命令:cal

显示今天的日期信息
[dmtsai@study ~]$ cal
August 2020
Su Mo Tu We Th Fr Sa
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31

显示2020年全年的日期信息

[dmtsai@study ~]$ cal 2020
2020

   January               February                 March

Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa
1 2 3 4 1 1 2 3 4 5 6 7
5 6 7 8 9 10 11 2 3 4 5 6 7 8 8 9 10 11 12 13 14
12 13 14 15 16 17 18 9 10 11 12 13 14 15 15 16 17 18 19 20 21
19 20 21 22 23 24 25 16 17 18 19 20 21 22 22 23 24 25 26 27 28
26 27 28 29 30 31 23 24 25 26 27 28 29 29 30 31

    April                   May                   June

Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa
1 2 3 4 1 2 1 2 3 4 5 6
5 6 7 8 9 10 11 3 4 5 6 7 8 9 7 8 9 10 11 12 13
12 13 14 15 16 17 18 10 11 12 13 14 15 16 14 15 16 17 18 19 20
19 20 21 22 23 24 25 17 18 19 20 21 22 23 21 22 23 24 25 26 27
26 27 28 29 30 24 25 26 27 28 29 30 28 29 30
31
July August September
Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa
1 2 3 4 1 1 2 3 4 5
5 6 7 8 9 10 11 2 3 4 5 6 7 8 6 7 8 9 10 11 12
12 13 14 15 16 17 18 9 10 11 12 13 14 15 13 14 15 16 17 18 19
19 20 21 22 23 24 25 16 17 18 19 20 21 22 20 21 22 23 24 25 26
26 27 28 29 30 31 23 24 25 26 27 28 29 27 28 29 30
30 31
October November December
Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa
1 2 3 1 2 3 4 5 6 7 1 2 3 4 5
4 5 6 7 8 9 10 8 9 10 11 12 13 14 6 7 8 9 10 11 12
11 12 13 14 15 16 17 15 16 17 18 19 20 21 13 14 15 16 17 18 19
18 19 20 21 22 23 24 22 23 24 25 26 27 28 20 21 22 23 24 25 26
25 26 27 28 29 30 31 29 30 27 28 29 30 31

如果我在命令行中输入:cal 2020 13

[dmtsai@study ~]$ cal 2020 13
cal: illegal month value: use 1-12
命令行会提示我:常用的月份信息是1月-12月。

156.如何启用linux环境下的计算机功能?

[dmtsai@study ~]$ bc
bc 1.06.95
Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'.
28229+223383939
223412168

输入bc直接会弹出进入计算器的字符,然后可以直接输入数字加减乘除后直接回车键即可得到答案。

[dmtsai@study ~]$ 17181818.19191919222737377
bash: 17181818.19191919
222737377: command not found...
Linux命令下的计算器如果使用小数必会报错,scale=number即可不报错。
[dmtsai@study ~]$ bc
bc 1.06.95
Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'.
scale=3
1/3
.333
340/2349
.144
.144
.144
29292929.2222*2222333
65098643277159.3926
离开bc必须要输入quit退出。

157.显示日期的命令

[dmtsai@study ~]$ date
Wed Aug 5 11:45:51 CST 2020

158.如何让我的系统显示当前时间为[2020/8/5]z这种格式以及当前系统时间?

[dmtsai@study ~]$ date +%Y/%m/%d
2020/08/05
[dmtsai@study ~]$ date +%H:%M
11:48
从上面的信息我们可以看出来,命令行之后除了前面带[-]号信息,存在于某些特殊情况下,选项或参数前面也会带有正号[+]的情况。

159.如何显示2020年10月份的日历信息
擦了[month] [year]
[dmtsai@study ~]$ cal 10 2020
October 2020
Su Mo Tu We Th Fr Sa
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31

160.如何正确的使用命令信息?
某些命令有特殊的参数存在,若输入了错误的参数,则该命令有错误的信息的提示,通过这个提示我们可以了解命令执行错误支持。

161.从以上的信息我们可以得出以下一些结果:
这个命令会直接显示结果,然后回到命令提示字符等待下一个命令的输入;
进入这个命令环境中,直接结束该命令才回到命令行界面的环境;

4.2.3 重要的几个热键[Tab]、[Ctrl]-c、[Ctrl]-d

162.[Tab]按键
Tab按键是Linux的Bash shell最棒的功能之一。他具备命令补齐与文件补齐的功能。主要的功能是避免我们打错命令或文件名。但是Tab按键在不同的地方输入又有不同的作用。

163.ls -al ~/.bash按两个Tab按键后显示所有.Bash开头的文件名都被显示出来。

[root@study ~]# ls -al ~/.bash
.bash_history .bash_logout .bash_profile .bashrc

注意:我们按Tab键的地方如果如果在command(第一个输入的数据)后面时,代表的就是[命令不去]功能,如果接在第二个字段后面就会变成[文件补齐]的功能。但是在特殊的情况下,文件补齐的功能可能会变成[参数/选项补齐]。

164.总结下Tab按键的作用?
[Tab]接在一串命令的第一个字段后面,则为[命令补齐]。
[Tab]接在一串命令的第二个字段后面,则为[文件补齐]
若安装Bash-completion软件,则为某些命令后面使用[Tab]按键时,可以进行[选项/参数的补齐]功能;

165.如何使用[Ctrl]-c按键?
在输入命令执行后弹出一连串命令,可以使用[Ctrl]-c终端目前正在运行的命令。

166.如何使用[Ctrl]-d按键?
输入这个命令的意思就是键盘输入结束(End Of File,EOF或End Of Input)的意思,[Ctrl]-d和exit代表的意思一样。如果你想要退出当前系统可以输入exit也可以输入[Ctrl]-d。

167.如何使用[Shift]+{[Page UP]|[Page Down]}按键?
代表的意思就是向上和向下翻页

4.2.4 错误信息的查看

168.如何解决执行的错误命令?

D[dmtsai@study ~]$ DATE
bash: DATE: 未找到命令...
相似命令是: 'date'

以上命令中,如果我输入DATE系统中查找不到,但是会提示您输入的可能是date这个相似命令

4.3 Linux系统的在线求助man page与info page

4.3.1 命令的--help求助说明

169.如何使用date语法?
[dmtsai@study ~]$ date --help
用法:date [选项]... [+格式]
 或:date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]
Display the current time in the given FORMAT, or set the system date.

Mandatory arguments to long options are mandatory for short options too.
-d, --date=STRING display time described by STRING, not 'now'
-f, --file=DATEFILE like --date once for each line of DATEFILE
-I[TIMESPEC], --iso-8601[=TIMESPEC] output date/time in ISO 8601 format.
TIMESPEC='date' for date only (the default),
'hours', 'minutes', 'seconds', or 'ns' for date
and time to the indicated precision.
-r, --reference=文件 显示文件指定文件的最后修改时间
-R, --rfc-2822 以RFC 2822格式输出日期和时间
例如:2006年8月7日,星期一 12:34:56 -0600
--rfc-3339=TIMESPEC output date and time in RFC 3339 format.
TIMESPEC='date', 'seconds', or 'ns' for
date and time to the indicated precision.
Date and time components are separated by
a single space: 2006-08-07 12:34:56-06:00
-s, --set=STRING set time described by STRING
-u, --utc, --universal print or set Coordinated Universal Time (UTC)
--help 显示此帮助信息并退出
--version 显示版本信息并退出

给定的格式FORMAT 控制着输出,解释序列如下:

%% 一个文字的 %
%a 当前locale 的星期名缩写(例如: 日,代表星期日)
%A 当前locale 的星期名全称 (如:星期日)
%b 当前locale 的月名缩写 (如:一,代表一月)
%B 当前locale 的月名全称 (如:一月)
%c 当前locale 的日期和时间 (如:2005年3月3日 星期四 23:05:25)
%C 世纪;比如 %Y,通常为省略当前年份的后两位数字(例如:20)
%d 按月计的日期(例如:01)
%D 按月计的日期;等于%m/%d/%y
%e 按月计的日期,添加空格,等于%_d
%F 完整日期格式,等价于 %Y-%m-%d
%g ISO-8601 格式年份的最后两位 (参见%G)
%G ISO-8601 格式年份 (参见%V),一般只和 %V 结合使用
%h 等于%b
%H 小时(00-23)
%I 小时(00-12)
%j 按年计的日期(001-366)
%k hour, space padded ( 0..23); same as %_H
%l hour, space padded ( 1..12); same as %_I
%m month (01..12)
%M minute (00..59)
%n 换行
%N 纳秒(000000000-999999999)
%p 当前locale 下的"上午"或者"下午",未知时输出为空
%P 与%p 类似,但是输出小写字母
%r 当前locale 下的 12 小时时钟时间 (如:11:11:04 下午)
%R 24 小时时间的时和分,等价于 %H:%M
%s 自UTC 时间 1970-01-01 00:00:00 以来所经过的秒数
%S 秒(00-60)
%t 输出制表符 Tab
%T 时间,等于%H:%M:%S
%u 星期,1 代表星期一
%U 一年中的第几周,以周日为每星期第一天(00-53)
%V ISO-8601 格式规范下的一年中第几周,以周一为每星期第一天(01-53)
%w 一星期中的第几日(0-6),0 代表周一
%W 一年中的第几周,以周一为每星期第一天(00-53)
%x 当前locale 下的日期描述 (如:12/31/99)
%X 当前locale 下的时间描述 (如:23:13:48)
%y 年份最后两位数位 (00-99)
%Y 年份
%z +hhmm 数字时区(例如,-0400)
%😒 +hh:mm 数字时区(例如,-04:00)
%:😒 +hh:mm:ss 数字时区(例如,-04:00:00)
%::😒 数字时区带有必要的精度 (例如,-04,+05:30)
%Z 按字母表排序的时区缩写 (例如,EDT)

默认情况下,日期的数字区域以0 填充。
The following optional flags may follow '%':

  • (hyphen) do not pad the field
    _ (underscore) pad with spaces
    0 (zero) pad with zeros
    ^ use upper case if possible

use opposite case if possible

在任何标记之后还允许一个可选的域宽度指定,它是一个十进制数字。
作为一个可选的修饰声明,它可以是E,在可能的情况下使用本地环境关联的
表示方式;或者是O,在可能的情况下使用本地环境关联的数字符号。

Examples:
Convert seconds since the epoch (1970-01-01 UTC) to a date
$ date --date='@2147483647'

Show the time on the west coast of the US (use tzselect(1) to find TZ)
$ TZ='America/Los_Angeles' date

Show the local time for 9AM next Friday on the west coast of the US
$ date --date='TZ="America/Los_Angeles" 09:00 next Fri'

GNU coreutils online help: http://www.gnu.org/software/coreutils/
请向http://translationproject.org/team/zh_CN.html 报告date 的翻译错误
要获取完整文档,请运行:info coreutils 'date invocation'
从上面的显示可以得出,首先开始需要执行命令的语法(Usage),这个date有两种基本语法,一种是直接执行并且取得日期返回值,且可以+FORAMAT的方式
另一种方式是,加上MMDDhhmmCCYY的方式来设置日期时间,采用的格式是[月月日日时时分分年年]的格式。

4.3.2 man page

170.如何使用man page?
[dmtsai@study ~]$ LANG=“en_US.utf8”
[dmtsai@study ~]$ man date
man: can't set the locale; make sure $LC_* and $LANG are correct
[dmtsai@study ~]$ df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 481M 0 481M 0% /dev
tmpfs 497M 0 497M 0% /dev/shm
tmpfs 497M 7.4M 489M 2% /run
tmpfs 497M 0 497M 0% /sys/fs/cgroup
/dev/mapper/centos-root 9.4G 5.4G 4.0G 58% /
/dev/sda2 9.4G 179M 9.2G 2% /boot
/dev/mapper/centos-home 19G 40M 19G 1% /home
tmpfs 100M 24K 100M 1% /run/user/1000
/dev/sr0 4.3G 4.3G 0 100% /run/media/dmtsai/CentOS 7 x86_64
[dmtsai@study ~]$ man page
man: can't set the locale; make sure $LC_* and $LANG are correct
No manual entry for page

常用的数字代表的意思

代号 代表内容
1 用户shell环境中可以操作的命令或可执行文件
2 系统内核可调用的函数与工具等
3 一些常用的函数(function)与函式库(library),大部分为C的函数库(libc)
4 设备文件的说明,通常在/dev下的文件
5 配置文件或是某些文件的格式
6 游戏(games)
7 惯例与协议等,例如Linux文件系统、网络协议、ASCII代码等的说明
8 系统管理员可用的管理命令
9 跟内核有关的文件

171.man page中以NAME作为开始介绍,最后还有个SEE ALSO来作为结束,man page可以分为以下几个部分。
代号 内容说明
NAME 简短的命令,数据名称说明
SYNOPSIS 简短的命令语法(syntax)简介
DESCRIPTION 较为完整的说明,这部分最好仔细看看
OPTOONS 针对SYNOPSIS部分中,有列举的所有可用的选项说明
COMMANDS 当这个程序(软件)在执行的时候,可以在此程序(软件)中执行的命令
FILES 这个程序或数据所使用或参考或链接到某些文件
SEE ALSO 可以参考跟这个命令或数据有相关的其他说明
EXAMPLE 一些可以参考的范例

172.查看系统中还有哪些跟[man]相关的命令?

[dmtsai@study ~]$ man -f man
man: can't set the locale; make sure $LC_* and $LANG are correct
man (1) - an interface to the on-line reference manuals
man (1p) - display system documentation
man (7) - macros to format man pages

除此之外还可以利用关键词来分析查找;
左边部分:命令(或文件)以及该命令所代表的的意义(就是那个数字)
右边部分:这个命令的简单说明,

4.3.3 info page

173.info与man的区别?
都是用来查询命令的用法或是文件的格式,但是与man page一口气输出一堆信息不同的是,info page则是将文件数据拆成一个一个段落,每个段落用自己的页面来编写,并且在各个页面中还有类似网页的超链接来调动到各个不同的页面中,每个独立的页面被称为一个独立的节点(node)。
[dmtsai@study ~]$ info info
File: info-stnd.info, Node: Stand-alone Info, Next: Invoking Info, Prev: Top
, Up: Top

1 Stand-alone Info


The "Info" program described here is a stand-alone program, part of the
Texinfo distribution, which is used to view Info files on an ASCII
terminal. "Info files" are typically the result of processing Texinfo
files with the program 'makeinfo' (also in the Texinfo distribution).

Texinfo itself (*note (texinfo)Top:😃 is a documentation system that
uses a single source file to produce both on-line information and
printed output. You can typeset and print the files that you read in
Info.

GNU Emacs also provides an Info reader (just type 'M-x info' in
Emacs). Emacs Info and stand-alone Info have nearly identical user
interfaces, although customization and other details are different (this
manual explains the stand-alone Info reader). The Emacs Info reader
supports the X Window System and other such bitmapped interfaces, not
just plain ASCII, so if you want a prettier display for Info files, you
--zz-Info: (info-stnd.info.gz)Stand-alone Info, 30 lines --Top------------------
(texinfo)Top: No such file or directory
从以上信息可以看出来:
File:代表这个info page的数据是来自info.info文件所提供;
Node:代表目前的这个页面是属于Top节点的,意思是info.info内含有很多信息,而Top仅是info.info文件内的一个节点内容而已;
Next:下一个节点的名称是Getting Statted,你可以按[N]到下个节点去;
UP:回到上一层的节点总揽画面,你可以按下[U]回到上一层。
Prev:前一个节点,但由于Top是info.info的第一个节点,所以上面并没有前一个节点的信息;
你可以直接按下N、P、U去到下一个、上一个与上一层的节点(node)。
我们可以使用上下左右按键来将光标移动到该文件或[*]上面,按下Enter,就可以前往该节点。
也可以按下[Tab]按键,就可以快速的将光标在上面画面中的节点间移动。

174.info page下按键的作用?
按键 进行工作
空格键 向下翻一页
[Page Down] 向下翻一页
[Page Up] 向上翻一页
[Tab] 在节点之间移动,有节点的地方通常会显示*
[Enter] 当光标在节点上面时,按下Enter可以进入该节点
b 移动光标到该info界面当中第一处
e 移动光标到该info界面当中的最后一个节点处
n 前往下一个节点处
p 前往上一个节点处
u 向上移动一层
s(/) 在info page当中进行查找
h,? 显示帮助选项
q 结束这次的info page

4.3.4 其他有用的文件(documents)

175.如何总结(man、info、/usr/share/doc/)?
(1)在命令行模式中,如果你知道某个命令,却忘记了相关选项与参数,请先使用[--help]的功能来查询相关信息;
(2)当有任何你不知道的命令或文件格式这种玩意儿,但是你想要了解它,请赶快使用man 或是info来查询;
(3)而如果你想要架设一些其他的服务,或想要利用一整组软件来完成某项功能时,请赶快到/usr/share/doc下面查一查有没有该服务的说明文件。
(4)另外,再次强调,因为Linux毕竟是外国人发明的,所以中文文档确实是比较少的,所以必须要学好英语。

4.4 超简单的文本编辑器:nano

176.如何使用nano?
[dmtsai@study ~]$ nano 1.txt
GNU nano 2.3.1 文件: 1.txt

                               [ 新文件 ]

^G 求助 ^O 写入 ^R 读档 ^Y 上页 ^K 剪切文字 ^C 游标位置
^X 离开 ^J 对齐 ^W 搜索 ^V 下页 ^U 还原剪切 ^T 拼写检查
以上是在nano中信件一个1.txt文件,常用的快捷键的功能:
[Ctrl]-G:取得联机帮助;
[Ctrl]-X:退出nano软件,如果之前文件有变动会提示你是否需要保存文件;
[Ctrl]-O:保存文件,如果有权限可以直接保存文件;
[Ctrl]-R:从其他文件读入数据,可以将某个文件的数据贴在本文件中,
[Ctrl]-W:查找字符串,这个也是很有帮助的信息的;
[Ctrl]-C:说明目前光标所在的行数与列数等信息;
[Ctrl]-_:可以直接输入行号,让光标快速移动到该行;
[Ctrl]-Y:语法校验功能是否开启或关闭(单击开、再单击关)
[Ctrl]-M:可愿意支持鼠标来移动光标的功能。

4.5 正确的关机方法
177.Linux下不正常关机的危害?
在你看不到的屏幕后面其实可能有相当多人同时在你的主机上面工作,如果不正常关机,则可能造成文件系统的损坏。

178.如何观察系统的使用状态?
查看谁在线可以使用[who]这个命令,查看网络的联机状态可以执行[netstat -a]这个命令。
查看后台执行的程序可以使用[ps-aux]这个命令,了解主机的使用状态。

179.通知在线用户关机的时间?
shutdown

180.正确的关机命令使用?
将数据同步写入硬盘的命令:sync
常用的关机命令:shutdown
重新启动,关机:reboot、half、poweroff

181.shutdown的重要功能如下:
可以自由的选择关机的模式:是要关机或重启均可
可以设置关机时间:可以设置成立刻关机,也可以设置某一特定时间关机
可以自定义关机时间:在关机前,可以将自己设置的关机信息发送给在线用户
可以仅发出警告信息:有时有可能你要进行一些测试,而不想让其他用户干扰,或是明白地告诉用户某段时间要注意一下,这个时候可以使用shutdown来吓一吓用户,但却而不是真的要关机。

[dmtsai@study ~]$ /sbin/shutdown
Must be root.
以上信息只是说我准备要关机,这个关机只是信息并不是我执行了关机命令。

182.shutdown下常见的几个命令所代表的意思?

[dmtsai@study ~]$ shutdown -h now
立刻关机模式

[dmtsai@study ~]$ shutdown -h 18:00
系统会在今天18:00进行关机,如果你在当天18:00后执行这个操作会在第二天18:00执行。

[dmtsai@study ~]$ shutdown -h +10
Must be root.
系统会在十分钟后会关机

[dmtsai@study ~]$ shutdown -r now
系统立刻会关机

[dmtsai@study ~]$ shutdown -r +30 'The system will reboot'
Must be root.
再过三十分钟系统会自动重启,并告诉所有在线的用户系统会在三十分钟会关机

[dmtsai@study ~]$ shutdown -k now 'This system will reboot'
Must be root.
仅仅是发出邮件警告,三十分钟后会关机。

183.重新启动系统三个命令:reboot、half、poweroff

184.实际管理工具:systemctl关机

posted @ 2020-08-04 10:17  柳林师兄  阅读(671)  评论(0)    收藏  举报