linux学习笔记(包括文本编辑)


前言章节

1.CPU中的寄存器,L1 cache ,L2 cache都是存储,L1,L2叫做第一层第二层缓存
DRAM是动态随机存取内存,它是主存的主要组件
DDR是双倍数据传送速度 DDR2,DDR3
SRAM是静态随机存取内存 ,在设计上使用的晶体管数量较多,价格较高,在CPU内部作为高速缓存.
ROM只读存储器 例如BIOS就是写死在一个内存芯片的,非挥发性内存,不通电也可存储,firmware也是

显示适配器原本用CPU,但是随着运算能力要求提高,出现GPU
2.SSD与我们的硬盘工作方式不一样,但很快,我们现在一般可以把SSD做系统盘,因为真的很快,然后用HDD放东西
3.CPU根据设计理念分为 RISC和CISC


第一章、
废话连篇


第二章 主机规划与磁盘分区
linux中,几乎所有的硬件装置文件都在/dev 这个目录中

分区的目的: 数据的安全性 系统的效能考虑

MSDOS(MBR)分区表格式与限制
磁盘的分区表放置在磁盘的第一个扇区,由于分区表只有64bytes,最多只能容纳四笔分区的记录,(主要分区)但一个硬盘也可以分出更多分区,这里用到了额外的扇区来记录,延伸分区分布在每个分区的最前面几个扇区来记载分区的信息,而延伸分区最多只有一个,但可以继续切出来逻辑分区

主要分区和延伸分区最多4个
延伸分区最多一个
逻辑扥去是由延伸分区切出来 的
只有主要分区和逻辑分区能被格式化作为数据存取的分区

GUID partition table,GPT 磁盘分区表
使用所谓的逻辑区块地址(LBA)来处理
与MBR仅使用第一个512bytes区块来记录不同,GPT使用34个LBA来记录,并且在整个磁盘的最后33个LBA也用来备份
GPT分区没有主,延伸,逻辑分区的概念,,每个都可主,都是可以格式化的

主机加载硬件驱动方面的程序,主要有BIOS和UEFI
1.BIOS搭配MBR开机
整个开机流程到操作系统之前的动作应该是这样的:
BIOS:开机主动执行的这个东西写死在板子上的,会认识第一个可开机的装置
MBR:第一个可开机 的装置的第一个扇区内的启动记录区块,内含开机管理程序
开机管理程序:一支可读取核心文件来执行的软件
核心文件:开始了操作系统的功能

开机管理程序可以提供选单,供用户选择不同的开机项目
2.UEFI ,BIOS搭配GPT开机
UEFI相当于一个低阶的操作系统,可加载驱动来控制硬件

2.2.4 linux安装下,磁盘分区的选择(极其重要)

目录树 linux文件是树状结构的,但文件实际是存放在磁盘分区中的 所以就用到了挂载的概念
挂载: 利用一个目录当成进入点,将磁盘分区数据放置在该目录下

也就是存放了文件的目录会对应到实际的磁盘分区上


第三章 安装centOS


第四章 首次登入和在线求助

[Ctrl] + [Alt] + [F2] ~ [F6] :文字接口登入tty2 ~ tty6 终端机;
[Ctrl] + [Alt] + [F1] :图形接口桌面。

Ctrl C 是停止当前动作
Ctrl D是退出 相当于exit

date --help 帮助
man date 操作说明
man -k man 找出系统文件中只要含有man这个关键词即可
man -f man 找出系统中与 man这个指令有关的说明文件
4.3.3 info page

4.4 文本编辑器nano
nano text.txt即可开启
数据同步写入硬盘 sync
su- 这个指令让你的身份变成root


第五章 linux的文件权限与目录配置

文件的类型与权限
第一个字符表示的是这个文件的 目录,文件和链接
在接下来的字符中 三个为一组,俊文【rwx】的组合,分别表示 拥有者 ,同群组用户,以及其他用户的权限
-rwxr-xr-- 类似这个的
第二栏表示有多少档名连接到此节点
第三栏表示这个文件的拥有者账号
第四栏表示这个文件的所属群组
第五栏是文件容量大小

5.2.2 如何修改文件属性与权限
chgrp :改变文件所属群组
chown :改变文件拥有者
chmod :改变文件的权限, SUID, SGID, SBIT 等等的特性

5.2.4 linux文件种类与扩展名

文件种类
我们前面所提到的-开头的文件为 regular file 正规文件,又分为 纯文本档ASCII(几乎我们可以用来作为设定的文件都属于这一类型),二进制文件(linux中的可执行文件都有属于这个类型),数据格式文件(有些程序在运作过程中会读取某些特定的格式文件,例如在登入时 将登录数据存放起来)

目录(d开头)
连结档(l开头)相当于快捷方式
设备与装置文件 区块设备档 硬盘磁盘 (b) 以及字符设备文件 键盘鼠标这种(c)

扩展名
Windows下的扩展名是 .com,.exe,.bat的都可以执行 但是linux下能否执行只看在前面的有无 x
所以文件的扩展名只是为了让你了解这个文件的类型而已
*.sh : 脚本或批处理文件(scripts),因为批处理文件为使用shell 写成的,所以扩展名就编成.sh 啰;
*Z, *.tar, *.tar.gz, *.zip, *.tgz: 经过打包的压缩文件。这是因为压缩软件分别为gunzip, tar 等等的,由于不
同的压缩软件,而取其相关的扩展名啰!
*.html, *.php:网页相关文件,分别代表HTML 语法与PHP 语法的网页文件啰! .html 的文件可使用网
页浏览器来直接开启,至于.php 的文件, 则可以透过client 端的浏览器来server 端浏览,以得到运算
后的网页结果呢!

5.3 linux目录配置
要求根目录(/)所在的分区应该越小越好,且因共用程序所安装的软件最好不要与根目录放在同一个分区草内,保持根目录越小越好,这样效果好,而且根目录所在的文件系统也不易发生问题

FHS的规定
第一部分:FHS亚你去必须存在的目录
/bin 放置在单人模式下还能够被操作的指令
/boot 放置开机会用到的文件
/dev linux系统上 任何装置与接口设备都是以文件形态存在于这里
/etc 系统的配置文件
/lib 系统函数库
/opt 第三方协力软件 比如360全家桶

/usr 是指 Unix software resource Unix操作系统软件资源,并非user数据,所有系统默认的软件都在这里放置,占用容量大
/var 是指主要针对常态性变动的文件,包括cache,登录file,程序文件等等


第六章 linux文件与目录管理

相对路径 /cluster/raid/output/taiwan2006/smoke 这个目录,而另一个目录在/cluster/raid/output/taiwan2006/cctm ,
那么我从第一个要到第二个目录去的话,怎么写比较方便? 当然是『cd …/cctm 』比较方便啰!对吧!
绝对路径 正确度比较好

6.1.2 目录的相关操作
. 代表此层目录
… 代表上一层目录

  • 代表前一个工作目录
    ~ 代表 目前用户身份 所在的家目录
    ~ account 代表account这个用户的家目录
    (所有目录下都会存在. 和…这两个目录)

常见的处理目录指令
cd :变换目录 (cd后面加相对目录或者绝对目录都可以 还可以加 . or … etc)
pwd: 显示当前目录 pwd [-P] -P是显示确实的路径 ,而非使用链接link路径
mkdir:建立一个新目录
rmdir:删除一个空的目录
6.2.2 复制,删除与移动 cp,rm,mv
cp ~/.bashrc /tmp/bashrc
cp -i ~/.bashrc /tmp/bashrc (-i是指当目标文件已经存在时在覆盖时会先询问动作进行)
复制到当前目录
[root@study ~]# cd /tmp
[root@study tmp]# cp /var/log/wtmp . <==想要复制到当前目录,最后的 . 不要忘

rm删除
[root@study ~]# cd /tmp
[root@study tmp]# rm -i bashrc
rm: remove regular file `bashrc’? y
如果加上 -i 的选项就会主动询问喔,避免你删除到错误的档名!

mv移动
[root@study ~]# cd /tmp 进入目录
[root@study tmp]# cp ~/.bashrc bashrc 复制某文件
[root@study tmp]# mkdir mvtest 创建目录
[root@study tmp]# mv bashrc mvtest 移动到这个目录
将某个文件移动到某个目录去,就是这样做!

6.3 文件内容查询
cat 由第一行开始显示文件内容
tac 由最后一行开始显示 正好是cat倒着写你妈的
head 只看头几行
tail 只看屁股几行.

举例:[root@study ~]# cat /etc/issue 直接检阅
\S
Kernel \r on an \m
[root@study ~]# cat -n /etc/issue 还加上行号
打印长这个样子:
1 \S
2 Kernel \r on an \m
3

tac 也只是按行来反 倒着写 别想成是按字母倒着写 你个憨憨!

head
[root@study ~]# head /etc/man_db.conf 默认的情况中,显示前面十行!若要显示前 20 行,就得要这样:
[root@study ~]# head -n 20 /etc/man_db.conf 这样子就可以指定它显示前多少行了
tail跟head 是一毛一样的~!

6.4 文件与目录的默认权限与隐藏权限
6.4.1 文件权限预设:umask
会显示四个数 例如0022
第一组是特殊权限用的 ,我们先不管他,后三字是u,g,o的权限
要注意:umask显示的分数是 该默认值需要减掉的权限,因为 r,w,x分别是4,2,1分,那么0就表示rwx,如果是2就表示什么呢,对啦就是rx咯

6.4.2 文件隐藏属性
chattr(配置文件隐藏属性)
[root@study ~]# chattr [+ - =][ASacdistu] 文件或目录名称

【+】 :增加某一个特殊参数,其他原本存在参数则不动。
【- 】:移除某一个特殊参数,其他原本存在参数则不动。
【=】 :设定一定,且仅有后面接的参数
i :这个 i 可就很厉害了!他可以让一个文件『不能被删除、改名、设定连结也无法写入或新增数据!』
对于系统安全性有相当大的帮助!只有 root 能设定此属性

例如:
[root@study ~]# cd /tmp
[root@study tmp]# touch attrtest <==建立一个空文件
[root@study tmp]# chattr +i attrtest <==给予 i 的属性
[root@study tmp]# rm attrtest <==尝试删除看看

一旦设定了i权限,连root也无法删除之
[root@study tmp]# chattr -i attrtest 取消i权限
6.4.4 观察文件类型:file
使用
[root@study ~]# file ~/.bashrc
即可

6.5 指令与文件的搜寻
6.5.1 脚本文件名的搜寻
用which [root@study ~]# which [-a] command
例如:
[root@study ~]# which ifconfig
/sbin/ifconfig

[root@study ~]# which which

6.5.2 文件档名的搜寻
whereis
[root@study ~]# whereis ifconfig
ifconfig: /sbin/ifconfig /usr/share/man/man8/ifconfig.8.gz


第七章 linux磁盘与文件系统管理

建议使用GPT分区
7.1.2 文件系统特性
每种OS所设定的文件属性/权限不同,为了存放这些文件所需数据,需要分区艹格式化
linux正统文件系统为Ext2

文件系统的运作
superblock:记录此文件系统的整体信息 包括inode,block的总量等等
inode:记录文件的属性,每个文件占用一个inode
block:记录文件的内容,若文件太大时 会占用多个block
7.1.3 linux的ext2文件系统
data block
原则上,block 的大小与数量在格式化完就不能够再改变了(除非重新格式化);
每个block 内最多只能够放置一个文件的数据;
承上,如果文件大于block 的大小,则一个文件会占用多个block 数量;
承上,若文件小于block ,则该block 的剩余容量就不能够再被使用了(磁盘空间会浪费)。
也就是说每个block只能存放一个文件的数据而已,block较大的话会浪费哦
inode table存放的数据
该文件的存取模式,拥有者和群组,容量,建立时间,改变时间etc
每个文件仅占用一个inode而已吗, 在linux下,每个文件都会占用一个inode,且根据文件内容的大小来分配多个报错了给该文件使用

7.1.4 与目录树的关系
inode本身并不记录文件名,文件名的记录是在目录的block中 所以之前提到所谓的 新增/删除文件名与目录的w权限相关
就是说你改文件名就是要对目录进行写

7.2 文件系统的简单操作
df 磁盘占用量显示

7.2.2 实体链接与符号链接
关于链接,分两种
hard link:首先我们知道文件名只和目录有关,而内容和inode有关对吧,所以我们多个档名对应到同一个inode号码的话,就是硬链接了,就是说呢,你把任何其中一个档名删除,inode和block也都还是存在的,所以数据还在
注意:hard link 不能跨文件系统,也不能link目录
symbolic link(符号链接):相当于直接建立快捷方式

7.3 磁盘的分区,格式化,检验与挂载
lsblk:列出系统上所有的磁盘信息
7.3.2 磁盘分区:gdisk用于GPT,fdisk用于MBR
[root@study ~]# gdisk /dev/vda <==仔细看,不要加上数字喔!
p是查看,输出当前磁盘的状态
gdisk只有root权限才可以执行
首先可以使用lsblk 来查看磁盘信息,然后使用 gdisk对所列的某一个磁盘进行分区
如 gdisk /dev/sda2
记得先su得到root权限 (取消root权限用 Ctrl+D)

7.3.5 文件系统挂载与卸除
单一文件系统不应该被重复挂载在不同的挂载点中
单一目录不应该重复挂载多个文件系统
要作为挂载点 的目录,理论上应该市空目录才好

7.4 设定开机挂载

7.5 内存置换空间之建置
7.6 文件系统的特殊观察与操作
虽然可以用gdisk/fdisk进行分区,,,但是必须查询它是哪个分区表


第八章 文件与文件系统的压缩,打包,与备份
8.1 linux系统常见的压缩指令

gzip
[dmtsai@study ~]$ gzip [-cdtv#] 檔名
[dmtsai@study ~]$ zcat 檔名.gz

[dmtsai@study ~]$ cd /tmp
[dmtsai@study tmp]$ cp /etc/services .
[dmtsai@study tmp]$ gzip -v services
(-v :可以显示出原文件/压缩文件案的压缩比等信息)
-d :解压缩的参数;
[dmtsai@study tmp]$ gzip -d services.gz 注意你解压缩的对象是压缩文件,也就是.gz

[dmtsai@study tmp]$ zcat services.gz 可以读取解压缩的源文件内容

xz用法类似
[dmtsai@study ~]$ xz [-dtlkc#] 檔名
[dmtsai@study ~]$ xcat 檔名.xz

8.3 打包指令:tar
压缩是把一个大文件压成一个小文件
打包是指将好多数据包成一个文件,而不是目录内的文件分别进行压缩
打包类似Windows的WinRAR

tar [-z|-j|-J] [cv] [-f 待建立的新檔名] filename… <==打包与压缩
-t :察看打包文件的内容含有哪些档名,重点在察看『档名』就是了;
-j :透过 bzip2 的支持进行压缩/解压缩:此时档名最好为 *.tar.bz2
-v :在压缩/解压缩的过程中,将正在处理的文件名显示出来!

time tar -zpcv -f /root/etc.tar.gz /etc
查看tar文件的数据内容
[root@study ~]# tar -jtv -f /root/etc.tar.bz2
解压缩
tar -jxv -f /root/etc.tar.bz2

8.4 XFS文件系统的备份与还原
应用背景:使用tar通常是针对目录树系统来进行备份,如果你想针对整个文件系统来进行备份和还原就。。。往下看

累计备份
就是说你在第一次使用xfsdump进行完整备份之后,等过一段时间文件系统自然运作后进行第二次xfsdump时,累计备份,即此时新备份的数据只会记录与第一次完整备份有差异的文件而已
xfsdump 不支援没有挂载的文件系统备份!所以只能备份已挂载的!
xfsdump 必须使用root 的权限才能操作(涉及文件系统的关系)
xfsdump 只能备份XFS 文件系统啊!
xfsdump 备份下来的数据(文件或储存媒体) 只能让xfsrestore 解析
xfsdump 是透过文件系统的UUID 来分辨各个备份档的,因此不能备份两个具有相同UUID 的文件系统

xfsdump [-L S_label] [-M M_label] [-l #] [-f 备份档] 待备份资料
例如:xfsdump -I
-l :是 L 的小写,就是指定等级~有 0~9 共 10 个等级喔! (预设为 0,即完整备份)
-f :有点类似 tar 啦!后面接产生的文件,亦可接例如 /dev/st0 装置文件名或其他一般文件档名等
-I :从 /var/lib/xfsdump/inventory 列出目前备份的信息状态

XFS文件系统还原 xfsrestore
xfsrestore -I
xfsrestore [-f 备份档] [-L S_label] [-s] 待复原目录 <==单一文件全系统复原
-f :后面接的就是备份档!企业界很有可能会接 /dev/st0 等磁带机!我们这里接档名!
-I :跟 xfsdump 相同的输出!可查询备份数据,包括 Label 名称与备份时间等
简单的任务,就是将/boot 整个复原到最原本的状态~你该如何处理?其实很简单,我
们只要知道想要被复原的那个文件, 以及该文件的session label name,
具体的 还原
xfsrestore -f /srv/boot.dump -L boot_all /boot

本章总结
 压 缩:tar -Jcv -f filename.tar.xz 要被压缩的文件或目录名称
 查 询:tar -Jtv -f filename.tar.xz
 解压缩:tar -Jxv -f filename.tar.xz -C 欲解压缩的目录
 xfsdump 指令可备份文件系统或单一目录
 xfsdump 的备份若针对文件系统时,可进行0-9 的level 差异备份!其中level 0 为完整备份;
 xfsrestore 指令可还原被xfsdump 建置的备份档;
 要建立光盘刻录数据时,可透过mkisofs 指令来建置;
 可透过wodim 来写入CD 或DVD 刻录机
 dd 可备份完整的partition 或disk ,因为dd 可读取磁盘的sector 表面数据
 cpio 为相当优秀的备份指令,不过必须要搭配类似find 指令来读入欲备份的文件名数据,方可进行备份动
作。


第九章 vim程序编辑器
linux的绝大部分配置文件都是以ASCII的纯文本形式存在,因此利用简单的文字编辑软件即可修改设定

9.2 vi的使用
一般指令模式 以vi打开一个文件就进入一般指令模式了 可以删除复制贴上 但不可编辑
编辑模式 按下 i,o,a,r,I,O,A,R进入编辑模式 Esc退出模式
指令列命令模式 输入[ : / ?]都可以进入指令列命令模式
后两个模式不可互相切换

操作:
使用【vi filename】进入一般指令模式
/bin/vi welcome.txt 若文件存在就打开旧档 若不存在就新建
按下【I】进入编辑 这是ai
按下【ESC】退出编辑
然后
按下【:wq】进行保存
用【ls -l】可以查看

linux底下的配置文件多为文本文件,故使用vim即可进行设定编辑
vim可视为程序编辑器
vi有三种模式 一般指令模式,编辑模式,指令列模式

进入编辑模式几乎只要记住:【i,o,R】三个按钮 尤其是新增一列的o与取代的R


第十章 认识和学习BASH
linux下使用终端机下达的命令就是透过bash环境来处理的喔

什么是shell:我们需要让用户操作系统的,也就是用户可以透过应用程序来指挥核心,让核心达成我们所需要的硬件任务,那么应用程序在最外层,所以叫做壳程序shell咯
就是说只要能操作应用程序的接口都会被叫做壳程序(狭义的壳程序就是指令列方面的软件,包括bash)

10.1.4 bash shell的功能
/bin/bash
命令编修能力(history):记忆使用过的指令 记录在.bash_history(记录前一次登入以前锁执行的指令)
命令与文件补全功能:(tab按键):
 [Tab] 接在一串指令的第一个字的后面,则为命令补全;
 [Tab] 接在一串指令的第二个字以后时,则为『文件补齐』!
命令别名设定功功能:(alias): 例如:alias lm=‘ls -al’

10.1.5 判断是否是bash shell的内建命令:
type [-tpa] name
例如
type ls type cd

发布了44 篇原创文章 · 获赞 9 · 访问量 3356

猜你喜欢

转载自blog.csdn.net/puying1/article/details/98885770