基础篇

第0章 计算机概论

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

0.1.1 电脑硬体的五大单元

所有data都要经过Memory,所以Memory的大小会对整体速度影响很大。

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

CPU 其实内部已经含有一些微指令,我们所使用的software都要经过CPU 内部的微指令集来达成。
指令集的设计主要又被分为两种设计理念:

  • 精简指令集(Reduced Instruction Set Computer, RISC):
    每个指令的执行时间都很短,完成的动作也很单纯
    常见的RISC 微指令集CPU: Oracle的SPARC 系列(学术+金融领域), IBM 公司的Power Architecture 和 PowerPC 系列(Sony)、与ARM的ARM CPU 系列(手机、路由器)
  • 复杂指令集(Complex Instruction Set Computer, CISC):
    x86架构的CPU(用于Personal Computer)
    word size(32位,64位):CPU一次资料读取的最多Bit数。CPU读取量 --> memory读取量 ==> 32位CPU --> memory 最大读取量4GB

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

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

Intel主板架构:

image.png

SouthBridge(南桥) 被设计用来处理低速信号。NorthBridge(北桥)用来处理高速信号(CPU <--> Main memory)现在已经被整合到CPU内

Hyper-Threading, HT : CPU内把regiter 分成两部分,像是两个线程。

0.2.2 Memory

0.2.3 显卡

0.2.4 disk与储存设备

image.png

转圈的方式读写
组成:圆形磁碟盘、机械手臂、 磁碟读取头与主轴马达

传输接口: SATA接口,USB接口

0.3 data表示方式

0.4 软件运行

0.4.2 OS

  • Kernel: OS其实也是一组程序,这组程序的重点在于管理电脑的所有活动以及驱动系统中的所有硬件
    OS的功能就是让CPU可以开始判断逻辑与运算数值、让main memory可以开始载入/读出data/functions、让disk可以开始被存取、让网卡可以开始传输data、让所有周边可以开始运转等等。 <=== Kernel
    Kernel functions所放置到记忆体当中的区块是受保护的!并且开机后就一直常驻在memory当中。
    主要用于管理硬件,提供合理的电脑系统资源分配。
    Kernel是处于硬件和system call 之间的位置。
    至少包括以下功能:
    System call interface
    Process control:安排多个process的执行先后顺序
    Memory management
    Filesystem management

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

POSIX: (Portable Operating System Interface)重点在规范kernel与application之间的interface
uname -r 查阅kernel版本
Kernel + Softwares + Tools +可完整安装程序 = Linux distribution

distributions主要分为两大系统:

  • 一种是使用RPM方式安装软体的系统,包括Red Hat, Fedora, SuSE等都是这类
  • 一种则是使用Debian的dpkg方式安装软件的系统,包括Debian, Ubuntu, B2D等等

第2章 主机规划与disk分割

2.1 Linux与硬件的搭配

2.1.3 各硬件装置在Linux中的文件夹名称

在Linux系统中,每个 装置 都被当成一个 文件夹 来对待, 几乎所有的硬件装置文件夹都在/dev这个目录内

2.2 disk分割

2.2.2 MBR 与partition table

主要开机记录区(Master Boot Record, MBR):可以安装开机管理程序的地方,有446 bytes
分割表(partition table):记录整个disk分割的状态,有64 bytes

2.2.3 开机流程中的BIOS 与UEFI 开机检测程序

  1. (早期)BIOS 搭配MBR/GPT 的开机流程
    CMOS是记录各项硬件参数且嵌入在主机板上面的储存器。

(1) BIOS:开机主动执行的firmware,会认识第一个可开机的装置;写入到硬件上的一个软件程序,在开机的时候,电脑系统会主动执行的第一个程序。
(2) MBR:第一个可开机装置的第一个磁区内的主要开机记录区块,内含开机管理程序;
(3) 开机管理程序(boot loader):一支可读取kernel file来执行的软体;写在MBR(446bytes)上;也可以安装在每个partition 的boot sector上
(4) Kernel file:开始OS的功能...

loader的主要任务:
(1) 提供选择。
(2) load OS。
(3) 转交给loader:


image.png
  1. (近期)UEFI BIOS搭配GPT开机的流程
    UEFI (Unified Extensible Firmware Interface) :取代BIOS,低端版OS,载入OS后,UEFI 就停止工作

2.2.4 Linux安装模式下,disk分割的选择

directory tree
root: "/"

directory tree

如何结合 directory tree 的架构与disk内的资料: mount
mount: 利用一个目录当成进入点,将disk partition的资料放置在该目录下;也就是说,进入该目录就可以读取该partition。如:

目录树与partition之间的相关性

第4章 首次登入与线上求助

  1. man + command 后出现的右上角的代号:

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

man -f XXX: 所有名为XXX的说明文件,指令必须是XXX
e.g.
man -f man 得到很多man(1), man(7)等
然后用man 7 man 就可以得到代号为7的man的说明文件


man -k XXX: 只要description中有man这个关键字就将该说明列出来。

info + command

查询方法Summary:

  1. 知道command 忘了参数, --help
  2. 查command 的说明, man, info
  3. software文档,/usr/share/doc

4.5 正确的关机方法

正常情况下,要关机时需要注意底下几件事:

  • 观察系统的使用状态:
    who :目前有谁在线
    ps -aux: 背景执行的程序
    netstat -a: 查看网络情况

  • 正确的关机指令使用:
    将data同步写入disk中的指令: sync ==> memory --> disk
    惯用关机:shutdown
    重新开机,reboot
    关机:poweroff

第5章 Linux 的档案权限与目录配置

多人多工环境 --> 权限问题
file 存取分为3种身份: owner/group/others
3种身份各有 read/write/execute 三种权限

5.1 owner + group

Linux里面,任何一个file都具有User, Group及Others 三种身份的权限设定

所有的系统上的帐号与一般身份user,还有那个root的相关info, 都是记录在/etc/passwd这个档案内的。
个人的密码记录在/etc/shadow这个档案下
Linux所有的群组名称都纪录在/etc/group内

5.2 Linux file permission 概念

5.2.1 Linux file属性

ls -al ==> -rw-rw-r-- 1 xin xin 10 Sep 13 2015 dx

(1) permission control:

-rwxr--r-- 这种
10位(1+3+3+3):(-)(---)(---)(---) ==> (file type)(owner)(group)(others)
第一位:表示这个file是
d: dir
-: file
l: link file
b: block device,随机读写block型设备,如disk
c: character device,一次性读取型设备,如键鼠

(2) 第二栏的数字 表示有多少 file name 连结到此节点(i-node)

每个file都会将他的permission 与 属性 记录到file system的i-node中,不过,我们使用的dir tree 却是使用file name来记录,因此每个file name 就会连结到一个i-node啰!这个属性记录的,就是有多少不同的file name连结到相同的一个i-node number.

(3) 第三栏表示这个file(或dir)的 owner

(4) 第四栏表示这个file的所属group

(5) file size, unit = bytes

(6) create date or last modify date

(7) file name .ABC这种前面有.的是隐藏file, 用-a 可以显示

5.2.2 如何改变档案属性与权限

(1)chgrp :改变file 的 group

要被改变的group name 必须要在/etc/group file 内存在

(2)chown :改变file 的 owner

owner必须是已经存在系统中的account,也就是在/etc/passwd 这个file中有记录的owner才行
(什么时候需要改变Owner? 比如你把file copy 给别人的时候)

(3)chmod :改变file的permission, SUID, SGID, SBIT等等的特性

  • 数字类型改变file permission
    r:4 w:2 x:1

  • 符号类型改变file permission
    chmod +
    u(user),g(group),o(others),a(all)+
    +, -, = +
    r, w, x
    e.g. chmod u+x,g=rwx test.file

5.2.3 dir与file 之 permission意义:

  1. 对file的重要性:
    (1) 为什么要用x:
    不像windows系统,Linux下的file是否能被执行是由这个x这个权限来决定的
    (2) 有w 并没有删除file的权限,rwx都是针对于file 内容来说的,与file name 无关。

  2. 对dir 的重要性:
    (1) file是存放content的,dir是存放file name的。所以,针对于dir的rwx
    r: 可ls
    w: dir里面的东西增删改移
    x:能否进入该dir成为working dir. PS:cd=change dir

5.2.4 Linux file type 与 后缀名

file type

  • regular file -
  1. ASCII。纯文字。如configuration等。
  2. binary。可执行scripts。
  3. data。有些程序在运作的过程当中会读取某些特定格式的file,那些特定格式的file可以被称为data file。
    e.g. Linux在user log in时,都会将登录的data记录在/var/log/wtmp 这个file内,该file是一个data file,他能够透过last这个指令读出来!但是使用cat时,会读出乱码~因为他是属于一种特殊格式的file.

directory d

link l

类似于windows里的快捷方式? 是一个-> 这样的Map

device。通常集中在/dev下

  • block device b: 如disk,可以随机的在disk的不同block读写,这种device就是block device
  • character device c:如keyboard/mouse,一次性读取。

sockets s

主要用于Network。通过这个socket来进行data transfer。

FIFO, pipe p

特殊类型。主要用于解决多个程序同时存取一个档案所造成的错误问题。

5.3 Linux目录配置

5.3.1 Linux目录配置的依据--FHS(Filesystem Hierarchy Stardard)

可分享的(shareable) 不可分享的(unshareable)
不变的(static) /usr (软体放置处) /etc (设定档)
/opt (第三方协力软体) /boot (开机与核心档)
可变动的(variable) /var/mail (使用者邮件信箱) /var/run (程序相关)
/var/spool/news (新闻群组) /var/lock (程序相关)

可分享的:可以分享给其他系统mount使用的目录。
不可分享的:自己机器上面运作的device file 或者是与程序有关的socket file 等,由于仅与自身机器有关,所以不适合分享给其他主机了。

不变的:如函式库、文件说明file、admin所管理的主机服务configuration file 等
可变动的:经常变动的东西。

其实,FHS针对dir tree架构仅定义出三层dir底下应该放置什么:

  • / (root, 根目录):与开机系统有关;
  • /usr (unix software resource):与software安装/执行有关;
  • /var (variable):与系统运作过程有关。

/ root(根目录)

/也与开机/还原/系统修复等动作有关。
FHS标准建议:根目录(/)所在partition(分割槽)应该越小越好,且应用程式所安装的software最好不要与根目录放在同一个分割槽内,保持根目录越小越好。如此不但效能较佳,根目录所在的档案系统也较不容易发生问题。<== 联系mount的概念。

/下应该有以下这些dir, 即使没有实体dir,FHS也希望至少有link file存在:

FHS要求必须存放:

dir for what
/bin 单人维护模式下还能执行的command,可以被所有permission使用
/boot 存放开机所需的file,包括Linux kernel file 以及开机选单与开机所需config file。 Linux kernel常用的file name为:vmlinuz-*,如果使用的是grub这个开机管理程序,则还会存在/boot/grub/这个dir。
/dev 存放所有devices
/etc 存放config file. 一般是所有人r,但只有root w。 FHS建议不要放binary file在这里面。几个重要的dir建议放在这个下面:(1) /etc/opt: 放第三方software相关的config
/lib /lib放置的则是在开机时会用到的函式库,以及在/bin或/sbin底下的指令会呼叫的函式库。/lib/modules/必须存在:这个目录主要放置changable的kernel相关modules(驱动程式)
/media 存在可移除装置
/mnt 存放暂时mount的额外device
/opt 存放第三方software
/run 存放开机后产生的各种东西
/sbin 为开机过程中所需要的bin,里面包括了开机、修复、还原系统所需要的指令。
/tmp 暂时存放file的地方
/usr 后续介绍
/var 后续介绍

建议存放:

dir for what
/home 每增加一个user,都会增加一个相应的home dir。~ 表示当前user的/home, ~AAA 表示AAA的home dir
/root root的home dir
/lib<qual> 与/lib格式不同之外的函数库,如/lib64

以上是FHS标准,以下的也重要:

dir for what
/lost_found file system 发生错误时,把遗失的放在此
/proc virtual filesystem,此dir下放的东西都是存在memory中,存放如kernel, process, devices status and network
/sys 也是virtual file system 主要记录kernel和hardware相关的东西

mount 的时候 /etc, /bin, /dev , /lib, /sbin 必须跟 / 放在一起,用于救援模式。

/usr 的意义和内容

FHS建议所有developer,应该将他们的资料合理的分别放置到这个目录下的次目录,而不要自行建立该software自己独立的目录。

FHS要求必须:

dir for what
/usr/bin/
/usr/lib/
/usr/local/ 自己安装的software安装在这个下面
/usr/sbin/ 非系统正常运作所需要的系统command,如server 中的damon
/usr/share/

FHS建议:

dir for what
/usr/include/ c/c++等程序语言的header与include放置处
/usr/src/ 源代码

/var 的意义与内容:

如果/usr是安装时会占用较大disk容量的目录,/var就是在系统运作后才会渐渐占用disk容量的目录。
只要针对常态性变动型file,如cache,log等

5.3.2 directory tree

dir tree

注意:图中的Link不一定适用于所有distribution。

5.3.3 绝对路径(从/开始)与相对路径(当前路径开始)

第6章 Linux file与dir管理

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,033评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,725评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,473评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,846评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,848评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,691评论 1 282
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,053评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,700评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,856评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,676评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,787评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,430评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,034评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,990评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,218评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,174评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,526评论 2 343

推荐阅读更多精彩内容