鸟哥私房菜整理(一)

第一章~~~~第九章




单核心CPU仅有一个运算单元、多核心CPU是在一棵CPU封装当中嵌入两个以上的运算核心


一些3D运算早期是交给CPU去运作,但是CPU并非完全针对这些3D来迚行设计,而CPU平时已非常忙碌了呢! 所以后来显示适配器厂商直接在显示适配器上面嵌入一个3D加速芯片,这就是所谓GPU称谓由来


硬盘的分割
    主要分割不延伸分割最多可以有四笔(硬盘的限制)
 延伸分割最多只能有一个(操作系统的限制)
 逻辑分割是由延伸分割持续切割出来的分割槽;
 能够被格式化后,作为数据存储的分割槽为主要分割不逻辑分割。延伸分割无法格式化;


P(primary)+E(extended)最多只能有四个,其中E最多只能有一个


开机的流程由:BIOS-->MBR-->-->boot loader-->核心档案; 
boot loader的功能主要有:提供选单、加载核心、转交控制权给其他loader 
boot loader可以安装的地点有两个,分别是 MBR 与 boot sector 




BIOS是一套程序 写死在主板上的一个内存芯片中 这个芯片在没有接通电源时也将数据记录下来
不过现在大部分写在 EEPROM 或者 Flash Memory中 可断电记忆的存储体




什么是多用户呢
p203页什么是连结档呢






开机流程 
BIOS ---> MBR (Master Boot Record) ---> boot loader ----> 核心档案
boot loader 装在 MBR 或者 各槽 boot sector中






X Window突然挂掉泽重启X Window
--直接注销 重登陆
--[Alt]+[Ctl]+[Backspace]




linux下各种档案类型与扩展名介绍 p187
一些根目录下存放的目录的用途或是存放的内容p191\
/root 与系统开机相关
/usr  与系统软件安装相关
/var  与系统运作过程相关




linux下输入密码屏幕是不做回应的 但依旧是有输入的






在X window下启动
X window 与 文本模式的切换
[Ctrl]+[Alt]+F 1~6   
[Ctrl]+[Alt]+F 7 返回图形接口桌面
在文本模式下启动
输入 startx




init :
 0:关机
 3:纯文本模式
 5:含有图形接口模式
 6:重新启动




输入exit注销(本账户离开系统)
离开系统不是关机(基本上,linux是多用户 本身已经有很多其他工作在进行 你的登入也仅是其中一个 工作 所以离开时 这次这个登入的工作就停止了 但是其他工作还是继续在进行的)






指令、选项、参数等这几个中间是以空格来区分  不论空几格都视为一格    指令太长的话可以用\来跳脱Enter 使指令连续到下一行






man 指令右上角右下角的DTAE(NUM)中的数字代表装置档案
【1】  代表用户在shell环境中可以操作的指令或可执行文件/一般用户可以使用的指令或可执行文件案
【5】  配置文件或者是某些档案的格式
【8】  系统管理员可用的管理指令
【9】  跟kernel有关的文件
在man page中输入 / 并在 / 后输入一个字符串 就是在man page 中向下搜索相关字符串
在man page中输入 ?并在 ? 后输入一个字符串 就是在man page 中向上搜索相关字符串
并且在 / ? 搜索后 可用n N分别向下、反向重复查询
man -f(whatis) 【指令】 得到的输出左边部分是指该指令所代表的意义 右边部分是指令简易说明
man -k(apropos)【指令】 得到的是将该指令作为关键字只要包含这个的都会显示出来
info 和 man 差不多
【b】  移动光标到第一个node处
【e】  移动光标到最后一个node
【n】  到下一个node
【p】  到上一个node
【u】  向上移动一层
【s(\)】在info page中搜寻
【?】  指令一览表
【q】  结束






文件系统错误
①:根目录未受损 受损是在/dev/sda7 这一块
登入root 输入【fsck/dev/sda7】   fsck为文件系统检查指令  
显示: clear [Y/N]? 的询问讯息,直接输入 Y
修理完成乀后,以 reboot 重新启劢
②:根目录损毁(初学者常将硬盘划分为一个大的partition,即只有根目录)
将硬盘拔掉,接到另一台Linux系统的计算机上, 幵且丌要挂载(mount)该硬盘,然后以root的身份执行『 fsck /dev/sdb1 』(/dev/sdb1 挃的是你的硬盘装置文件名,你要依你的实际状况来讴定),




忘记root密码?
将系统重新启动,在读秒的时候摁下任意键就会出现选单画面,仔细看选单底下的说明, 摁下『e』就能够进入grub的编辑模式了,此时,请将光标移懂到kernel那一行,再按一次『 e 』进入kernel该行的编辑画面中, 然后在出现的画面当中,最后方输入【 single】(注意,这里single之前是有个空格的)
再按下『 Enter 』确定之后,按 b 就可以开机进入单人维护模式了
之后输入passwd 来修改密码




任何一个档案都具有【User、Group、Others】三种身份的个别权限
root是万能的






输入 ls -al 指令出现的几百个文件的一行
前面的一串英文是档案类型权限
第一个符号是档案类型 2-4个是档案拥有者(user)的权限 5-7个是档案所属群组(Group)的权限 8-10个是其他人(Others)的权限
   r--可读 w--可写     x--可执行
接下来是几个连接点
接下来是拥有者
接下来是群组
接下来是大小
接下来是修改时间
接下来是文件名






权限之于档案 r--可读内容(文字)  w--可编辑(不可删除该档案)  x--可被系统执行【这里r 和 x似乎有冲突 但是实践表明 如果有r无x 文本可打开read但是不能被复制等操作】
权限之于目录 r--有读取目录结构列表的权限(即可以利用ls来将次文件内容列表列出)    w--(此权限重大)可增删文件(不论权限)可更名 可搬移文档、子目录  x--可进入该目录(可用cd切换至该目录下) (切不可把r权限当作可以进入目录  重要!)
p186  权限练习
文档名前有 .表明为隐藏文档
连结档就是windows中的快捷方式




****************************************重要********************************************
能不能删除文件,就看用户是否拥有对文件所在目录的操作权限。
而能不能进行运行或者修改这个文件(你所要删除的文件或目录的话),就要看文件或者目录本身的权限是什么样的。


例题: 假设有个账号名称为dmtsai,他的家目彔在/home/dmtsai/,dmtsai对此目彔具有[rwx]的权限。
若在此目彔下有个名为the_root.data的档案,该档案的权限如下: -rwx------ 1 root root 4365 Sep 19 23:20 the_root.data 
请问dmtsai对此档案的权限为何?可否删除此档案? 
答: 如上所示,由二dmtsai对此档案来说是『others』的身份,因此这个档案他无法读、无法编辑也无法执行, 也就是说,他无法变劢这个档案的内容就是了。
但是由二这个档案在他的家目彔下, 他在此目彔下具有rwx的完整权限,因此对二the_root.data这个『档名』来说,他是能够『删除』的! 结讳就是,dmtsai这个用 户能够删除the_root.data这个档案!
+p186例子
****************************************重要********************************************




遵循FHS的标准。 也就是说,FHS的重点在规范每个特定的目彔下应该要放置什么样子的数据。
/usr目录 : usr是Unix Software Resource的缩写, 也就是『Unix操作系统软件资源』所放置的目彔,而不是用户的数据
因为根目彔与开机有关,开机过程中仅有根目彔会被挂载, 其他分割槽则是在开机完成之后才会持续的进行挂载的行为。就是因为如此,因此根目彔下与开机过程有关的目彔, 就不能够与根目彔放到不同的分割槽去!那哪些目彔不可与根目彔分开呢?有底下这些: 
? /etc:配置文件 
? /bin:重要执行档 
? /dev:所需要的装置档案 
? /lib:执行档所需的函式库与核心所需的模块 
? /sbin:重要的系统执行文件 


























date     显示时间日期


echo $LANG 显示目前使用语系


LANG=en_US(简体中文:zh_CN.utf8) 改为英文语系


cal 显示万年历


bc 简易计算器(第一行输入 scale=3 指保留三位小数,quit退出)


【Tab】按键   接在一串指令的第一个字后面,则为命令补全【按两次】  第二个字后面则为档案补齐【按两次】{P155}


【Ctrl】+c 终止目前程序 


【Ctrl】+d 相当于EOF


man 某指令 查看具体使用方法(space翻页 q退出)


info 同man


/usr/share/doc/   下有许多说明文件


nano 简单的文本文档


sync 数据同步写入磁盘;  在Linux系统中,为了加忚数据的读取速度,所以在默讣的情况中, 某些已经加载内存中的数据将丌会直接被写回硬盘,而是先暂存在内存当中,如此一来, 如果一个数据被你重复的改写,那举由亍他尚未被写入硬盘中,因此可以直接由内存当中读取出来, 在速度上一定是忚上相当多的! 丌过,如此一来也造成些讲的困扰,那就是万一你的系统因为某些特殊情况造成丌正常关机 (例如停电戒者是丌小心踢到power)时,由亍数据尚未被写入硬盘当中,哇!所以就会造成数据的更新丌正常啦! 那要怎举办呢?这个时候就需要sync这个挃令来迚行数据的写入劢作啦! 直接在文字接口下输入sync,那举在内存中尚未被更新的数据,就会被写入硬盘中


chgrp 改变档案所属群组(chgrp [-R] 群组名 filename)([-R]是将子文件递归都改变所属群组) 如[root@www ~]# chgrp users install.log 将文件群组改为users


chown 改版档案拥有者(chown [-R] 帐号名字 filename || chown [-R] 帐号名字:群组名 filename)(改拥有者时该群组)(chown也可单独改群组名 用小数点而不是冒号 如 chown .sshd install.log) 如将install.log的拥有者改为bin这个账号: [root@www ~]# chown bin install.log 将install.log的拥有者与群组改回为root: [root@www ~]# chown root:root install.log


cp【P209~P211】 将.bashrc这个档案拷贝名为.bashrc_test的档名 [root@www ~]# cp .bashrc .bashrc_test 注意:::,在不加任何选项的情况下,档案的某些属性/权限会改变【加上 -p 就可以连同权限一起复制过来】 (如 -i 是询问覆盖  -r 是目录辅助)【-a比较特别 包含了 (-p) + (-d) + (-r)】 (-s 建立符号连接 即快捷方式在P210) linux里cp快捷方式 复制结果是 对实际档案的复制 而非新增一个快捷方式(如果是复制快捷方式 要+d) 然而windows下则是直接对快捷方式的复制


chmod 改变档案权限SUID,SGID,SBIT等等特性(chmod [-R] xyz 档案或目录(xyz即三个数字))  权限wrx可以用数字代表 r-4;w-2;x-1;   每种身份权限分数通过累加得到  {比如  【-rwxrwx---】 owner = 4+2+1=7;group = 4+2+1=7;others=0;所以该权限可以用770表示///或者另一种 用user,group,others,all 的首字母 如 u=wxr,go=r 就行 也可在不明权限情况下通过 + - 来增删某权限(见P184)}


rm 删除文档(目录)P212


cd change directory   变换目录   工作目录是指目前所在目录  当你登陆linux时候 你所在家目录就是你的工作目录  可以用cd或者cd ~来返回家目录  cd -返回上次工作目录 


mkdir 建立新目录  可以使用①mkdir +目录 ②mkdir -p +目录 递归创建目录 ③ mkdir -m 710 +目录(710是权限的例子)可在创建目录的时候预设权限




touch(P220~P222) ① 建立空的文档 ② 修改文档的日期 (mtime和atime)
每个linux文档下有许多时间参数 主要为:
modification time (mtime):
当该档案的【内容数据』变更时,就会更新这个时间!内容数据是档案的内容,而 的是档案的属性或权限
status time (ctime):
当该档案的『状态 (status)』改变时,就会更新这个时间,举例来说,像是权限或属性被更改了,都会更新这个时间
access time (atime):
当『该档案的内容被取用』时,就会更新这个读取时间 (access)。举例来说,我们使用 cat 去读取 /etc/man.config , 就会更新该档案的atime 了
可以通过ls来查询P220




su 改换用户  如su Ben


以下是等于文本文档的查阅
cat 将目录或者档案读出 是 Concatenate (连续)的简写, 主要的功能是将一个档案的内容连续打印出在屏幕上面 P214
cat 是由『第一行到最后一行连续显示在屏幕上』,而 tac 则是『 由最后一行到第一行反向在屏幕上显示出来 』
nl 添加行号打印 P215
more 一页一页翻动 P217
less
head 取出前几行 P218
tail 取出后面几行   P219
假如我想要显示 /etc/man.config 的第 11 到第 20 行呢? 
答: 在第 11 到第 20 行,那么我取前 20 行,再取后十行,所以结果就是:『 head -n 20 /etc/man.config | tail -n 10 』,这样就可以得到第 11 到第 20 行间的内容了! 但是里面涉及到管线命令!
非文本文档的读取
od 可以将 data file 或者是 binary file 的内容数据给他读出来




ls -a +目录 显示该目录下所有文件(包括隐藏文件)


ls -al +目录 显示该目录下所有文件(包括隐藏文件)并显示属性(权限等)


ls p207


ls -l +目录 显示该文件下目录(不包括隐藏文件)


ls -ld +目录 显示该目录的属性(仅显示该目录的 而非该目录下的)


uname -r 查看linux的distribution的核心版本


lbs_release -a 查看distribution的版本


pwd 显示当前工作目录 pwd [-P]


mkdir 建立一个新目录   :假如你要建立一个目录为 /home/bird/testing/test1,那么首先必须要有 /home 然后 /home/bird ,再来 /home/bird/testing 都必须要存在,才可以建立 /home/bird/testing/test1 这个目录!假如没有 /home/bird/testing 时,就没有办法建立 test1 的目录 但是加上 -p 这个选项,你可以直接下达:『 mkdir -p /home/bird/testing/test1 』 则系统会自动的帮你将 /home, /home/bird, /home/bird/testing 依序的建立起目录 预设权限: 加上-m [root@www tmp]# mkdir -m 711 test2


rmdir 删除一个空目录(注意 是空的) 那如果要将所有目录下的东西都杀掉呢?! 这个时候就必须使用『 rm -r test 』。不过,还是使用 rmdir 比较不危险!你也可以尝试以 -p 的选项加入,来删除上层的目录喔! 


echo $PATH 来看哪些目录被PATH定义出来了 关于如果想将某文件中的指令都加入PATH的话【即可以直接将指令名字打出】 那么请看P205例题 指令的名字可能是一样的  因此如果不是指定路径的命令那么执行的指令就是PATH中第一个找到的那个


mv +要移动的档案名 +移到哪里去 可用于移动文档 或者 改变目录名 P213


umask 目前用户在建立档案或目录时候的权限默认值    分数指的是『该默认值需要减掉的权限!』P223
umask修改: 直接后面添加 例如: umask 022
【若使用者建立为『档案』则预设『没有可执行( x )权限』,亦即只有 rw 这两个项目,也就是最大为 666 分,预设权限如下: -rw-rw-rw-】
【若用户建立为『目录』,则由于 x 与是否可以进入此目录有关,因此默认为所有权限均开放,亦即为 777 分,预设权限如下: drwxrwxrwx】(这一段讲的是系统预设  然而umask则可以人为定制  最终创建的出的文档或目录则是系统默认预设权限减去umask中规定需要减去的权限)


chattr 档案隐藏属性 P225
lsattr 使用 chattr 设定后,可以利用 lsattr 来查阅隐藏的属性


************************************************************SUID 不是用在目录上,而 SBIT 不是用在档案上的***********************************************************
SUID 【即user权限中的x变为s】 P227
SUID权限仅对二进制程序(binary program)有效; 
执行者对于该程序需要具有 x 的可执行权限;(没有x的话加上SUID会导致原本是小写的s变成大写 意味着是空的 不可能实现的权限) 
本权限仅在执行该程序的过程中有效 (run-time); 
执行者将具有该程序拥有者 (owner) 的权限。 
通俗的来说就是用户对于档案具备了x权限后 就具备了和owner一样的权限
比如 passwd(指令)这个文档是-rwsr-xr-x  对于普通用户有x的权限 那么就可以在执行这个指令的过程中拥有owner-----root的权限 尽管存密码的文档的权限是 -r-------- 但是此刻拥有root权限 即可进行修改密码 但是如 cat 这个指令就没有s 那么想要去读取密码文档 又不具备root权限 所以是不可能的


SGID 【即group权限中的x变为s】 P228
SGID?对二进制程序有用; 
程序执行者对于该程序来说,需具备 x 的权限; 
执行者在执行的过程中将会获得该程序群组的支持!【与SUID类似 不过是拥有了group的权限】 


SBIT 当用户对于此目录具有 w, x 权限,亦即具有写入的权限时;
当用户在该目录下建立档案或目录时,仅有自己与 root 才有权力删除该档案
大意为: P229
:当甲这个用户于 A 目录是具有群组或其他人的身份,并且拥有该目录 w 的权限, 这表示『甲用户对该目录内任何人建立的目弽或档案均可进行 "删除/更名/搬移" 等动作。』 不过,如果将 A 目录加上了 SBIT 的权限项目时, 则甲只能够针对自己建立的档案或目录进行删除/更名/移动等劢作,而无法删除他人的档案。
乍一看,两段话稍有不同 但是仔细想想 既然这个规则对每个用户都成立 那么A建了几个文档  B又进入这个目录 他是不能删除A的文档的,只能处理自己的文档  所以就第一段话就成了第二段话


那么如何设定 SUID/SGID/SBIT 权限呢?
使用chmod 在原本的3个数字权限 前面 加上一个数字  如chmod 6755 test【这里新增的6就是为文档赋予SUID和SGID的隐藏权限】
4 为 SUID 
2 为 SGID 
1 为 SBIT 


也可以如下:
chmod u+s filename 设置SUID位
chmod u-s filename 去掉SUID设置
chmod g+s filename 设置SGID位
chmod g-s filename 去掉SGID设置


************************************************************SUID 不是用在目录上,而 SBIT 不是用在档案上的***********************************************************


file 用于查看某个档案的基本数据,例如是属于 ASCII 或者是 data 档案,或者是 binary , 且其中有没有使用到动态函式库 (share library) 等等的信息


which、type 寻找执行档 which 是根据用户所设定的 PATH 变量内的目录去搜寻可执行文件的(所以有时候root能找到的普通用户不一定能找到 因为PATH所包含的不一样)


------------------------------------------------------------------文档搜寻----------------------------------------------------------------------------------------------
在 Linux 底下也有相当优异的搜寻指令!通常 find 不很常用的!因为速度慢之外, 也很操硬盘!通常我们都是先使用 whereis 或者是 locate 来检查,如果真的找不到了,才以 find 来搜寻呦! 为什么呢?因为 whereis 与 locate 是利用数据库来搜寻数据,所以相当的快速,而且并没有实际的搜寻硬盘, 比较省时间
whereis 档案档名的搜寻 P231


那么 whereis 到底是使用什么咚咚呢?为何搜寻的速度会比 find 快这么多? 其实那也没有什么!这是因为 Linux 系统会将系统内的所有档案都记录在一个数据库档案里面, 而当使用 whereis 或者是底下要说的 locate 时,都会以此数据库档案的内容为准, 因此,有的时后你还会发现使用这两个执行档时,会找到已经被杀掉的档案! 而且也找不到最新的刚刚建立的档案呢!这就是因为这两个指令是由数据库当中的结果去搜寻档案的所在啊!
locate 直接在后面输入『档案的部分名称』后,就能够得到结果   依据 /var/lib/mlocate 内的数据库记载,找出用户输入的关键词文件名。


就是因为他是经由数据库来搜寻的,而数据库的建立默认是在每天执行一次 (每个 distribution 都不同,CentOS 5.x 是每天更新数据库一次!),所以当你新建立来的档案, 即还在数据库更新之前搜寻该档案,那么 locate 会告诉你『找不到!』呵呵!因为必须要更新数据库
直接输入『 updatedb 』就可以手动更新数据库
updatedb: 根据 /etc/updatedb.conf 的设定去搜寻系统硬盘内的文件名,并更新 /var/lib/mlocate 内的数据库档案;


find ① 可根据限制条件找出几天内或几天前修改过的文档(根据ctime、mtime、atime等) 或 比某某文档新的文档等 具体见P233
② 与使用者或组名有关的参数
③ 与档案权限及名称有关的参数
------------------------------------------------------------------------------------------------------------------------------------------------------------------------


指令与权限之间的关系 P236
习题:
用户在某个目录内读取一个档案的基本权限为何? 
可使用的指令:例如本章谈到的 cat, more, less等等 
目录所需权限:用户对这个目录至少需要具有 x 权限; 
档案所需权限:使用者对档案至少需要具有 r 的权限才行! 






文件系统
权限与属性放置到 inode 中,至于实际数据则放置到 data block 区块中。 另外,还有一个超级区块 (superblock) 会记录整个文件系统的整体信息,包括 inode 与 block 的总量、使用量、剩余量等


superblock:记录此 filesystem 的整体信息,包括inode/block的总量、使用量、剩余量, 以及文件系统的格式不相关信息等; 
inode:记里档案的属性,一个档案占用一个inode,同时记录此档案的数据所在的 block 号码; 
block:实际记录档案的内容,若档案太大时,会占用多个 block 。 


需要碎片整理的原因就是档案写入的 block 太过于离散了,此时档案读取的效能将会变的很差所致。 这个时候可以透过碎片整理将同一个档案所属的 blocks 汇整在一起,这样数据的读取会比较容易


Ext2 文件系统在格式化的时候基本上是区分为六个主要内容:
① data block (资料区块) P245
由于 block 大小的差异,会寻致该文件系统能够支持的最大磁盘容量与最大单一档案容量并不相同
原则上,block 的大小不数量在格式化完就不能够再改变了(除非重新格式化); 
每个 block 内最多只能够放置一个档案的数据; 
承上,如果档案大于 block 的大小,则一个档案会占用多个 block 数量; 
承上,若档案小于 block ,则该 block 的剩余容量就不能够再被使用了(磁盘空间会浪费)。 
② inode table (inode 表格) P246
每个 inode 大小均固定为 128 bytes; 
每个档案都仅会占用一个 inode 而已; 
承上,因此文件系统能够建立的档案数量与 inode 的数量有关; 
系统读取档案时需要先找到 inode,并分析 inode 所记录的权限与用户是否符合,若符合才能够开始实际读取 block 的内容。
系统很聪明的将 inode 记彔 block 号码的区域定为12个直接,一个间接, 一个双间接和一个三间接记录区  通过计算可得一个档案(假定一个block可以存1K数据)最大容量可以为16GB。 因为: 12个直接则容量为12K,1个间接(即用inode中的4byte指向的一个block来代替inode指向其他block)可存 1K/4byte=256K ;一个双间接可有256^2 K ;一个三间接可存256^3  所有加起来则为16GB。
③ Superblock (超级区块) P248
Superblock 是非常重要的,因为我们这个文件系统的基本信息都写在这里
此外,每个 block group 都可能含有 superblock 喔!但是我们也说一个文件系统应该仅有一个 superblock 而已,那是怎么回事啊? 事实上除了第一个 block group 内会含有 superblock 外,后续的 block group 不一定含有 superblock , 而若含有 superblock 则该 superblock 主要是做为第一个 block group 内 superblock 的备份咯,这样可以进行 superblock 的救援
④ Filesystem Description (文件系统描述说明)
这个区段可以描述每个 block group 的开始与结束的 block 号码,以及说明每个区段 (superblock, bitmap, inodemap, data block) 分别介于哪一个 block 号码之间
⑤ block bitmap (区块对照表)
想要新增档案时,从 block bitmap 当中可以知道哪些 block 是空的,因此我们的系统就能够很快速的找到可使用的空间来处置档案
⑥ inode bitmap (inode 对照表)
记录使用与未使用的 inode 号码 与 block bitmap 是类似
文件系统的一些了解(如哪里存superblock  如inode、block使用情况)  在P249
目录树的读取示例(先通过根目录的inode找到根目录的block,再在block内找相应文件名的inode。。。) P252


假设我们想要新增一个档案,此时文件系统的行为是: 
1. 先确定用户对于欲新增档案的目录是否具有 w 与 x 权限,若有的话才能新增; 
2. 根据 inode bitmap 找到没有使用的 inode 号码,并将新档案权限/属性写入; 
3. 根据 block bitmap 找到没有使用中的 block 号码,并将实际的数据写入 block 中,且更新 inode 的 block 指向数据; 
4. 将刚刚写入的 inode 与 block 数据同步更新 inode bitmap 与 block bitmap,并更新 superblock 的内容。 


将文件系统与目录树结合的动作我们称为『挂载』 挂载点一定是目录,该目录为进入该文件系统的入口
因此并不是你有任何文件系统都能使用,必项要『挂载』到目录树某个目录后,才能够使用该文件系统的
比如我在VMWARE中装的linux 将/ 和 /boot 和/home都分开了 所以使用 ls -lid / /boot /home 查看结果  由于最顶层目录的inode为2 所以这三个为不同的filesystem (因为每一行的文件属性并不相同,且三个目录的挂载点也均不同)
同一个 filesystem 的某个 inode 只会对应到一个档案内容而已(因为一个档案占用一个 inode 之故), 因此我们可以透过判断 inode 号码来确认不同文件名是否为相同的档案


df:列出文件系统的整体磁盘使用量;


du:评估文件系统的磁盘使用量(常用在推估目录所占容量) 与 df 不一样的是,du 这个指令其实会直接到文件系统内去搜寻所有的档案数据






在 Linux 底下的连结档有两种,一种是类似 Windows 的快捷方式功能的档案,可以让你快速的链接到目标档案(或目录) ; 另一种则是透过文件系统的 inode 连结来产生新档名,而不是产生新档案!这种称为实体链接 (hard link)
关于Hard link P260
ln 建立实体连接 在建立实体连接后 用ls -l test查看文件时会发现连接数加1了  这表明该inode多了一个实体连接
hard link 只是在某个目录下新增一笔档名链接到某 inode 号码的关连记录而已
举个例子来说,假设我系统有个 /root/crontab 他是 /etc/crontab 的实体链接,也就是说这两个档名连结到同一个 inode , 自然这两个文件名的所有相关信息都会一模一样(除 了文件名之外) 注意:inode是相同的
不论你使用哪个『档名』来编辑, 最终的结果都会写入到相同的 inode 与 block 中,因此均能进行数据的修改(这一点和快捷方式那个叫符号连接的差不多)
限制:
① 不能跨filesystem
② 不能建立目录的实体连接
所以在建立了实体连接后 无论删除其中哪一个 该文档并没有被实实在在的删除 仍可以正常打开 


关于符号连接 P261
ln -s
inode与源文件不同   用ls -l 查看 会发现最后部分指向源文件
由 符号链接的 inode 读取到连结档的内容仅有档名,根据档名链接到正确的目两句去取得目标档案的 inode , 最终就能够读取到正确的数据了
 然而符号链接(快捷方式)则不同  删去快捷方式后 没什么影响;  删除源文件后  再次打开快捷方式 则不能正常打开

不过由于Hard Link 的限制太多了,包括无法做『目录』的 link , 所以在用途上面是比较有限制的!反而是 Symbolic Link 的使用方面较广


当我们建立一个空目录的时候, “.”和“..”都会同时产生 。比如在/tmp下新建目录/tmp/test 那么test的 " ."可以看作是系统建立的硬连接(规定不能手动建立目录的硬连接,系统能建立估计是另一种情况吧 这里看作是硬连接因为是同一个inode) 因此新目录的link数量为2 且上一层目录即/tmp的link数量加一


关于磁柱大小的计算 P266


fdisk -l 对磁盘分区的了解                   以及刚刚插入一个 USB 磁盘到这部 Linux 系统中,观察 (1)这个磁盘的代号与 (2)这个磁盘的分割槽 P264
对磁盘分区槽的删除、添加等操作 P267-P271 重要!!!!!


mkfs 分割完毕后就是要进行文件系统的格式化


mke2fs 指定文件系统的标头(Label)、Block的大小以及 inode 的数量。 P273 
要格式化档案系统为 Ext2,亦可以直接使用命令 mkfs.ext2 或 mke2fs
要格式化档案系统为 Ext3,亦可以使用命令 mkfs.ext3 或 mke2fs -j
要格式化档案系统为 Ext4,亦可以使用命令 mkfs.ext4 或 mke2fs -T ext4


fsck 用来检查与修正文件系统错误 P274 执行 fsck 时, 被检查的 partition 务必不可挂载到系统上


badblocks 用来检查硬盘或软盘扇区有没有坏轨


磁盘的挂载与卸载: P275-P281
mount
单一文件系统不应该被重复挂载在不同的挂载点(目录)中; 
单一目录不应该重复挂载多个文件系统; 
要作为挂载点的目录,理论上应该都是空目录才是。 
如果你要用来挂载的目录里面并不是空的,那么挂载了文件系统之后,原目录下的东西就会暂时的消失(注意喔!并不是被覆盖掉, 而是暂时的隐藏了起来,等到新分割槽被卸除之后,则原本的内容就会再次的跑出来)


重新挂载根目录与挂载不特定目彔 P279


 mknod 文件如何代表该装置呢? 很简单!就是透过文件的 major 与 minor 数值来替代的~ 该指令用于修改majpr和minor


e2label 用于格式化完毕后修改标头


tune2fs P282
-l  :类似 dumpe2fs -h 的功能~将 superblock 内的数据读出来~
-j  :将 ext2 的 filesystem 转换为 ext3 的文件系统;
-L  :类似 e2label 的功能,可以修改 filesystem 的 Label 喔!


hdparm
如果你的硬盘是 IDE 接口的,那么这个命令可以帮助你配置一些进阶参数
如果是SATA,可以进行一些硬盘测试


开机挂载
直接到 /etc/fstab 里面去修改文本文档 P284(利用nano修改)
根目录 / 是必须挂载的﹐而且一定要先于其它 mount point 被挂载进来。
其它 mount point 必须为已创建的目录﹐可任意指定﹐但一定要遵守必须的系统目录架构原则
所有 mount point 在同一时间之内﹐只能挂载一次。
所有 partition 在同一时间之内﹐只能挂载一次。
如若进行卸除﹐您必须先将工作目录移到 mount point(及其子目录) 之外。
文本内容: 磁盘装置文件名 + 挂载点 + 磁盘分区槽的文件系统 + 文件系统参数 + 能否被 dump 备份命令作用(用来做为备份的命令  0 代表不要做 dump 备份, 1 代表要每天进行 dump 的动作。 2 也代表其他不定日期的 dump 备份) + 是否以 fsck 检验扇区(是不要检验, 1 表示最早检验(一般只有根目录会配置为 1), 2 也是要检验,不过 1 会比较早被检验)
例题:假设我们要将 /dev/hdc6 每次启动都自动挂载到 /mnt/hdc6 ,该如何进行? P286


特殊装置 loop 挂载 P287(暂时跳过)


使用分隔槽建立新的filesystem
步骤 ① fdisk 中的 -n 建立新的分隔槽(分配大小等)(可能需要重启或其他方法)
② 格式化(不是特殊的话应该是ext4格式)
③ 挂载到某个目录下
④ 该建立的文件系统每次开机都需要手动去挂载 如果需要每次开机自动挂载 就在/etc/fstab文本中添加代码(P284)


使用实体分隔槽或档案建置sawp(虚拟内存) 见P289-P292
步骤: ① fdisk 中的 -n 建立新的分隔槽(分配大小等)(可能需要重启或其他方法)
② fdisk 中的 -t 修改文件系统的ID改成swap的ID
③ 调用mkswap 格式化
④ 调用swapon+/dev/sda?开始使用(可使用free查看期间swap总容量的改变)
⑤ 测试自动挂载 mount -a 然后调用 df 查看挂载情况
⑥ 为挂载目录设置属性(所有者、群组、各种权限等)


开机管理程序是装在哪里的呢?
如果block大小为1K时候,那么开机管理程序和superblock各占一个block 管理程序占0号 superblock占1号
然而block大于1k(为2k,4k等)的时候,superblock和开机管理程序则是放在一起 都放在0号block中


磁盘空间的浪费: P294
parted 用于分割分割槽(大于2TB的分割槽) P295
磁盘对使用必需要经过:分割、格式化和挂载,分别惯用的指令为:fdisk, mkfs, mount三个指令


如果某个扇区有问题 若是已经被挂载的 需要先umount 然后再 fsck


bzip2 压缩文件(解压额可以使用 gzip -d)
gzip 与 bzip2 也能够针对目录来进行压缩, 不过,这两个指令对目录的压缩指的是『将目录内的所有档案 "分别" 进行压缩』的动作
bzcat 可以读取纯文本被压缩后的压缩文件


tar P306 - 
⑴ [root@www ~]# tar [-j|-z] [cv] [-f 建立的檔名] filename... <==打包与压缩  P308
⑵ [root@www ~]# tar [-j|-z] [tv] [-f 建立的檔名] <==察看檔名      P308
⑶ [root@www ~]# tar [-j|-z] [xv] [-f 建立的檔名] [-C 目录] <==解压缩 P309
④ 仅解开单一档案
⑤ 打包某目录,但不含该目录下的某些档案的作法
⑥ 仅备份比某个时刻还要新的档案


如果仅是打包而已,就是『 tar -cv -f file.tar 』而已,这个档案我们称呼为 tarfile
如果还有进行压缩的支持,例如『 tar -jcv -f file.tar.bz2 』时,我们就称呼为 tarball (tar 球?)


注意: ①这里为什么把 -f 和其他分离出来呢 ?是因为-f 后面即为新建立的档名 如果f跟在其他选项后面没事,但是如果f不是最后一个选项 那档名就会变成字母(即f后面的选项的字母)
②查看压缩后的压缩文件内容 会发现绝对路径不包含 / ;这是因为以后在哪个文件夹打开这个压缩包 那这个压缩包的文件就属于该目录; 如果强制(使用-P)留下 / 的话,以后无论在哪里解压缩该文件 都会覆盖当前/下的原目录 P309有解释
备份目录


dump 针对文件系统进行备份或者是储存的功能 还可以制定等级【相较于其他备份的特色  *****重要】。 P313
等级是什么意思呢? 假设你的 /home 是独立的一个文件系统,那你第一次进行过 dump 后,再进行第二次 dump 时, 你可以指定不同的备份等级,假如指定等级为 1 时,此时新备份的数据只会记录与第一次备份(等级为0)所有差异的档案而已。
① 当待备份的资料为单一文件系统
可以使用完整的 dump 功能,包括利用0-9的level来备份
② 待备份的数据只是目录,并非单一文件系统
所有需要备份数据都必项要在该目录 (本例为:/home/someone/) 底下; 
且仅能使用 level 0 ,亦即仅支持完整备份而已; 
不支持 - u 选顷,亦即无法建立 /etc/dumpdates 这个各别 level 备份癿时间记录文件;
restore 恢复备份的数据 P317
P318 一个完整的还原备份的过程
① 建立新的文件系统 格式化 
② 先将目录cd到需要挂载的目录【重要!】 ,然后结合使用dump出的备份文件调用restore还原的备份文件
可选择部分还原 P319


光盘刻录备份 P320-P325 暂时跳过


dd 制作一个档案、 备份 P325
备份文档
备份磁盘扇区
备份分隔槽
P326 一个完整的将 /dev/hdc1 进行完整的复制到另一个 partition 上
① 建立新的partition(不格式化)
② 直接在新的partition上使用 dd
③ 挂载该新的partition
注意: 新分割出来的 partition 不需要经过格式化,因为 dd 可以将原本旧的 partition 上面,将 sector 表面的数据整个复制过来


cpio 可以备份【任何】东西 重要! 不过要搭配其他指令如find来读入欲备份的文件数据
[root@www ~]# cpio -ovcB > [file|device] <==备份 
[root@www ~]# cpio -ivcdu < [file|device] <==还原 
[root@www ~]# cpio -ivct < [file|device] <==察看
















































一些扩展名
*.sh : 脚本或者批处理文件
*Z,*.tar, *.tar.gz, *.zip, *.tgz 压缩文件
*.html, *.php 网页相关档案
FHS 规定分为四种类型目录
① 可分享:可分享给其他系统挂载使用的目录,所以包括执行文件与用户的邮件等数据,是能够分享给网络上其他主机挂载用的目录
② 不可分享:----不分享给其他主机
③ 不变的:有些数据是不会经常变动的 比如函数库,文件说明文件
④ 可变的:经常改变的数据,例如登录文件




-  代表前一个工作目录
~  代表【目前用户身份】所在的家目录
~Ben 代表Ben这个用户的家目录
. 代表当前目录 也可以用 ./来表示
.. 代表上一层目录 也可以用../来表示
如果当前在/var/spool/mail/下 如何进入/var/spool/corn/呢?
答:最简单的方法是   cd /var/spool/mail  ;cd ../corn
也可以     cd /var/spool/mail ;cd /var/spool/corn
./run.sh 是指当前文档下名为run.sh的文档


PATH
拿【ls】来举例,系统会依照PATH的设定去每个PATH定义的目录下搜寻文件名为ls的可执行文件,如果在PATH定义的目录中含有多个文件名为ls的可执行文件,那么现搜寻到的同名指令先被执行  +
 p205  例题  假设你是root 将ls由 /bin/ls移动到/root下 是否可以在root下执行ls呢?如果不能 那怎么执行ls呢?若要直接输入ls即可执行 那又该如何呢? 答: 不可以执行   可以通过绝对路径或相对路径来执行ls 比如/root/ls或者./ls(为什么呢?因为没有将/root定义为PATH下搜寻的文件名) 可手动将/root设为PATH下的目录名即 PATH="$PATH":/root 即可



























评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值