Linux学习--根据鸟哥的Linux私房菜(基础学习篇 第三版)整理

前几年整理出来打印的纸质版笔记,被搞丢了,丢了,丢了。只能重新再整理一份,这下应该不会再丢了吧。

排版有点乱,基础且重要的内容几乎都在里面了,基本操作够用了。最后一部分“Linux系统管理员”,内容不多,想继续学习的可以看原版书。

  • 计算机的五大单元

输入单元,输出单元,外部存储设备,内存和CPU(算术逻辑单元,控制单元)。

重点是CPU和内存。基本上数据都是流经过内存再转出去。CPU发布控制指令,控制数据流进/流出内存。CPU要处理的数据完全来自于内存。所有的单元都是由CPU内部的控制单元来负责协调的,因此CPU是这个计算机系统的最重要部分。

  • 操作系统

操作系统其实也是一组程序,这组程序的重点在于管理计算机的所有活动以及驱动系统中的所有硬件。

OS的功能就是让CPU可以开始判断逻辑与运算数值,让内存可以开始加载/读出数据与程序代码,让硬盘可以开始被访问,让网卡可以开始传输数据,让所有周边可以开始运转等。总之,硬件的所有操作都必须要通过这个OS来完成。

内核程序锁放置到内存当中的区块是受保护的,并且开机后就一直常驻在内存当中。

OS角色:硬件—>内核—>系统调用—>应用程序  其中内核和系统调用属于OS部分,内核程序在于管理硬件,提供合理的计算机系统资源分配(包括CPU资源、内存使用资源等)。为了保护内核,并且让程序员比较容易开发软件,因此OS除了内核程序之外,通常还会提供一整组开发接口,那就是系统调用层。

OS的内核层直接参考硬件规格携程,所以同一个OS程序不能够在不一样的硬件架构下运行。

OS只是在管理整个硬件资源,包括CPU、内存、输入输出设备及系统文件。

应用程序的开发都是参考OS提供的开发接口,所以该应用程序只能在该OS上面运行而已,不可以在其他OS上面运行。

Linux的优缺点:

优点:稳定的系统(不经常宕机及关机),免费或少许费用,安全性、漏洞的快速修补,多任务、多用户,用户与用户组的规划,想对比较不耗资源的系统

缺点:没有特定的支持厂商,游戏的支持度不足,专业软件的支持度不足

  • 硬盘设备在Linux中的文件名

在Linux系统中,每个设备都被当成一个文件来对待。几乎所有的硬件设备文件都在/dev这个目录下。

瓷盘的设备文件名主要分为IDE接口的dev/hd[a-d]及SATA/SCSI/USB接口的/dev/sd[a-p]两种。

  • BIOS与CMOS

CMOS是记录各项硬件参数且嵌入在主板上面的存储器。BIOS则是一个写入到主板上的一个韧体(即:写入到硬件上的一个软件程序)。这个BIOS就是在开机的时候计算机系统会主动执行的第一个程序了。

 

  • 开机的流程是BIOS—>MBR—>boot loader—>内核文件

MBR(主引导分区):Master Boot Record  可以安装引导加载程序的地方。

boot loader(引导装载程序):主要有提供菜单、加载内核、转交控制权给其他loader.

Linux OS的文件使用目录树系统。

  • 基础命令操作

1.显示日期与时间:date  date +%Y/%m/%d/%H:%M

2018/08/22/16:09

2.显示日历:cal / cal 2018 /  cal [month] [year]

3.计算器:bc   使用quit退出

4.man命令

空格键/[Page Down]--向下翻一页

[Page Up]—向上翻一页

[Home]—去到第一页

[End]--去到最后一页

/string--向下查询string字符串

?string--向上查询string字符串

n,N—利用/or?查询字符串时,可以用n来继续下一个查询。用N来反向查询。

5.查看谁在线:who

6.查看后台执行的程序:ps -au

7.查看网络联机状态:netstat -a

8.重启、关机:reboot

9.关机:shutdown (shutdown -h now立即关机  shutdown -h 20:00)

  • Linux文件属性

 

chgrp:改变文件所属用户组

chown:改变文件所有者

chmod:改变文件的权限

chgrp [-R] dirname/filename …

-R:进行递归的持续更改,也即连同子目录下的所有文件、目录都更新成为这个用户组之意。

chown [-R] 账号名称 文件或目录

同时改变某文件的所有者和用户组:chown root:root xx.txt

chmod u=rwx,go=rx xx.txt----表示user具有读写执行的权限,用户组group和others具有读和执行的权限。

chmod

u(user)

+(加入)

r

文件或目录

g(group)

-(除去)

w

o(other)

=(设置)

x

a(all)

 

 

 

FHS(Filesystem Hierarchy Standard)定义的三层主目录为/、/var、/usr

有五个目录不可与根目录放在不同的分区,分别为/etc、/bin、/lib、/dev、/sbin

  • 目录相关操作

mkdir [-mp] 目录名称

-m:配置文件案的权限。直接设置,不需要看默认权限

-p:帮助你直接将所需要的目录(包含上层目录)递归创建起来

 

查看文件与目录

ls [-aAdfFhilnrRSt] 目录名称

-a:查看全部的文件,连同隐藏文件(开头为.的文件)一起列出来

-d:仅列出目录本身,而不是列出目录内的文件数据

-l:列出长数据串,包含文件的属性与权限等数据

复制、移动、删除:cp,mv,rm

1)cp [-adfilprsu] 源文件 目标文件

常用参数:

-a:相当于-pdr的意思.即整个数据特性完全一模一样。文件/文件夹的权限、时间等。但所有者、用户组相关的,即使加上-a参数,也无法达成完整复制权限。

-i:若为目标文件已经存在时,在覆盖时会先询问操作的进行

-r:递归持续复制,用于目录的复制行为

2)rm [-fir] 文件或目录

-f:force意思,忽略不存在的文件,不会出现警告信息

-i:互动模式,在删除前会询问用户是否操作

-r:递归删除。最常用在目录的删除了。非常危险的参数。

3)mv [-fiu] 源文件 目标文件

-f:force,如果目标已存在,不会询问直接覆盖

-i:若目标文件已存在,询问是否覆盖

-u:若目标文件已存在,且source源文件较新,才会更新。

 

文件内容查询

cat:由第一行开始显示文件内容

tac:由最后一行开始显示文件内容

nl:显示的时候,顺便输出行号

more:一页一页地显示文件内容

less:与more类似,但比more更好的是,它可以往前翻页

head:只看头几行

tail:只看结尾几行

od:以二进制方式读取文件内容

1)cat [-AbEnTv]

-b:打印行号,非空白行会有行号,空白行不标行号

-n:打印行号,连同空白行也会有行号

2)head [-n number] 文件(默认显示前10行)

-n:后面接数字,代表显示几行的意思

head -n -100 /etc/xx.txt——后面100行不打印

3)tail [-n number] 文件----取出后面几行

例题:显示某文件xx.txt的第11到20行

head -n 20 xx.txt | tail -n 10

修改文件时间或创建新文件:touch

touch [-acdmt] 文件

-a:仅修改访问时间

-c:仅修改文件的时间,若该文件不存在则创建新文件

文件默认权限与隐藏权限

文件默认权限:umask

umask的数值指的是“该默认值需要减掉的权限”。2代表写的权限,即为拿掉写的权限。

文件隐藏属性chatter,lsattr

1)chattr [+-=] [ASacdistu] 文件或目录名

+:增加某一个特殊参数,其他原本存在的参数则不动

-:删除某一个特殊参数,其他原本存在的参数则不动

=:仅有后面接的参数

 

a:当设置a之后,这个文件将只能增加数据,而不能删除也不能修改数据,只有root才能设置这个属性

i:让一个文件“不能被删除、改名、设置连接,也无法写入或添加数据”,对于系统安全性有很大的帮助。只有root才能设置此权限。

 

2)lsattr [-adR] 文件或目录名 (显示文件隐藏属性)

-a:显示隐藏文件属性

-d:如果连接的是目录,仅列出目录本身的属性而非目录内的文件名

-R:连同子目录的数据也一并列出来

查看文件类型:file

脚本文件名的查询

which [-a] command

find [PATH] [Option] [action]

-newer file:file为一个存在的文件,列出比file还要新的文件名

find / -mtime 0———0代表当前的时间,即从现在开始到24小时前,有改动过内容的文件都会被列出来

find /etc -newer /etc/passwd———寻找/etc下面的文件,如果文件日期比/etc/passwd新就列出

find / -name file——/代表全文搜索

find /home -user Anmy——查找/home下属于Anmy的文件

find / -nouser—— 查找系统中不属于任何人的文件,可以轻易找出那些不太正常的文件

find / -name passed—— 查找文件名为passed的文件

find其他参数:

-type TYPE: 查找文件类型为TYPE的,类型主要有:一般正规文件(f)、设备文件(b,c)、目录(d)、连接文件(l)、socket(s)及FIFO(p)等属性

-perm mode: 查找文件权限刚好等于mode的文件

-perm +mode:查找文件权限“包含任一mode的权限”的文件。

-perm -mode:查找文件权限“必须要全部包括mode的权限”的文件。

查找目录:find /(查找范围) -name '查找关键字' -type d

find后其他可进行的操作:

-exec command:command为其他命令,-exec后面可再接其他的命令来处理查找到的结果。

-print:将结果打印到屏幕上,为默认操作。

权限与命令间的关系

1)用户能进入某目录成为“可工作目录”的基本权限

可使用的命令:例如cd等

目录所需权限:用户对此目录至少需要有x的权限

额外需求:若用户想要在此目录内利用ls查阅文件名,则用户对此目录还需要r的权限

 

2)用户在某个目录内读取一个文件的基本权限

可使用的命令:cat,more,less等

目录所需权限:至少具有x

文件所需权限:至少具有r

 

3)让用户可以修改一个文件的基本权限

可使用的命令:vi等

目录所需权限:用户在该文件所在的目录至少要有x权限

文件所需权限:执行好有r,w权限

 

4)让一个用户可以创建一个文件的基本权限

目录所需权限:用户在该目录要具有w,x权限

 

5)让用户进入某目录并执行该目录下的某个命令的基本权限

目录所需权限:至少x

文件所需权限:至少x

 

  • Linux磁盘与文件系统

df—调出目前挂载的设备

dumpe2fs——查询每个区段与superblock(超级块--记录整个文件系统相关信息的地方,包含的信息主要有:block与inode总量;未被使用与已被使用的inode/block数量;block与inode大小等)的信息。

df -h——将容量结果以易读的容量格式显示出来

du -sm /*——检查根目录下面每个目录所占用的容量

 

连接文件:ln (类似于windows下的快捷方式)

ln [-sf] 源文件 目标文件

-s:如果不加任何参数就进行连接,即是 hard link,至于-s就是symbolic link

fdisk -l ------查看目前系统内的所有分区有哪些

挂载与卸载:mount umount

磁盘的使用必须经过分区、格式化和挂载,惯用的命令为fdisk、mkfs和mount

 

  • Linux系统常见的压缩命令

压缩命令:gzip,bzip2

gzip [-cdtv#] 文件名

-c:将压缩的数据输出到屏幕上,可通过数据流重定向来处理

-d:解压缩的参数(也可以解压bzip文件)

-t:可以用来检验一个压缩文件的一致性,看看文件有误错误

-v:可以显示出源文件/压缩文件的压缩比等信息

-#:压缩等级 -1最快 -9最慢。默认为-6(最好)

 

打包命令:tar

tar [-j|-z] [cv] [-f 新建的文件名] filename——打包与压缩

tar [-j|-z] [tv] [-f 新建的文件名] ——查看文件名

tar [-j|-z] [xv] [-f 新建的文件名] [-C 目录]—— 解压缩

-c:新建打包文件,可搭配-v来查看过程中被打包的文件名

-t:查看打包文件的内容含有哪些文件名,重点在查看文件名

-x:解答宝或解压缩的功能,可以搭配-C在特定目录解开。

-v:在压缩/解压缩的过程中,将正在处理的文件名显示出来。

-z:通过gzip的支持进行压缩/解压缩。此时文件名最好为 *.tar.gz

 

简单的几个tar命令:

压缩:tar -jcv -f filename.tar.bz2 要被压缩的文件或目录名

查询:tar -jtv -f filename.tar.bz2

解压缩:tar -jxv -f filename.tar.bz2 -C欲解压缩的目录

 

完整备份工具:dump

dump -W:查看有没有任何文件系统被dump过的数据

dump [-Suvj] [-level] [-f 备份文件] 待备份数据

-level 为备份等级。 level 0为完整备份。

restore查看dump后的备份数据内容

  • vi与vim

vi三种模式:一般模式、编辑模式、命令行模式

一般模式:以vi打开一个文件就直接进入一般模式,在这个模式中,可以使用上下左右按键来移动光标,可以删除字符或删除整行,也可以复制、粘贴文件数据

编辑模式:按下“i,I,o,O,a,A,r,R”等任何一个字母之后才会进入编辑模式。按“Esc”退出编辑模式

命令行模式:在一般模式中输入“: ? /”三个钟任何一个按钮,就可以将光标移动到最下面那一行。在此模式中,可以查找数据、读取、保存、大量替换字符、离开vi、显示行号等的操作都在此模式下完成。

按键说明:

:set nonu—取消行号

  • shell与shell script

shell 的功能只是提供用户OS的一个接口。

bash(Linux用它作为默认的shell)主要的优点:

1)命令记忆功能——history

history n——n为数字,列出最近的n条命令行。

history [-c]——将目前的shell中的所有history内容全部消除。

history [-raw] histfiles

-a:将目前新增的history命令新增如histfiles中,若没有加histfiles,则默认写入 ~/.bash_history

-r:将histfiles的内容督导目前这个shell的history记忆中。

-w:将目前的history极易内容写入histfiles中。

2)命令与文件补全功能—— [Tab]按键的好处

3)命令别名设置功能—— alias

4)作业控制、前后台控制—— job control,foreground,background

5)程序脚本—— shell script

6)通配符—— Wildcard (*)

bash shell内置命令:type

type [-tpa] name

不加任何参数时,type会显示出name是外部命令还是内置命令

-t:type会将name以下面这些字眼显示出它的意义:

    file:表示为外部命令

    alias:表示为该命令为命令别名所设置的名称

    builtin:表示该命令为bash内置的命令功能

-p:如果后面接的name为外部命令时,才会显示完整文件名

-a:会由PATH变量定义的路径中,将所有含name的命令都列出来,包含alias

 

变量的显示与设置:echo, unset

echo ${PATH}——显示PATH里面的内容

用env查看环境变量与常见环境变量说明

locale—— 查看Linux支持的语系(-a)

read:读取来自键盘输入的变量。

命令运行的顺序:

1)以相对/绝对路径执行命令,例如“/bin/ls”或“./ls”

2)由alias找到该命令来执行

3)由bash内置的(builtin)命令来执行

4)通过$PATH这个变量的顺序找到的第一个命令来执行。

通配符:

bash环境中的其他特殊符号:

命令执行过程的数据传输情况:

1)标准输入(stdin):代码为0,使用< or <<

2)标准输出(stdout):代码为1,使用> or >>

3)标准错误输出(stderr):代码为2,使用2> or 2>>

 

  • /dev/null 垃圾桶黑洞设备与特殊写法

例:将错误的数据丢弃,在屏幕上显示正确的信息

find /home -name .bashrc 2> /dev/null

命令执行情况:

cmd1 && cmd2

cmd1 || cmd2

三个command的正确顺序:cmd1 && cmd2 || cmd3

 

  • 管道命令: Pipe |

“|”仅能处理由前一个命令传来的正确信息,即为standard output的信息,对于standard error并没有直接处理的能力。

  • 选取命令:cut, grep (处理信息以行为单位)

cut -d '分割字符’ -f fields

cut -c 字符范围 (以字符的单位取出固定字符区间)

例:echo $PATH | cut -d ‘:’ -f 5  (以:为分隔符,显示第5段内容)

echo $PATH | cut -d ‘:’ -f 3,5  (以:为分隔符,显示第3和第5段内容)

export | cut -c 12-20(取出第12-20的字符)

 

grep:分析一行数据

grep [-acinv] [—color=auto] ‘查找字符串’ filename

-a:将binary文件以text文件的方式查找数据

-c:计算找到’查找字符串’的次数

-i:忽略大小写的不同,所以大小写视为相同

-n:顺便输出行号

-v:反向选择,即显示出没有’查找字符串’内容的那一行

--color=auto:可以将找到的关键字部分加上颜色显示

示例如下:

  • 排序命令:sort, wc, uniq

sort:依据不同的数据类型来排序

/etc/passwd内容以:来分隔,以第三列来排序

  • 双向重定向:tee

tee [-a] file : -a以累加的方式,将数据加入file当中。

  • 字符转换命令:tr,col,join,paste,expand

  • 切割命令:split 将大文件依据文件大小或行数来切割成为小文件

split [-bl] file PREFIX

-b:后面可接欲切割成的文件大小,可加单位 b,k,m等

-l:以行数来进行切割

PREFIX:代表前导符,可作为切割文件的前导文字

 

例: 将/etc/termcap分成300KB的一个个文件

cd /tmp; split -b 300k /etc/termcap termcap

 

使用ls -al /输出的信息中,每10行记录成一个文件

ls -al / | split -l 10 -lsroot

  • 参数代换:xargs

xargs :产生某个命令参数。很多命令并不支持管道命令,可以通过xargs来提供该命令引用standard input之用。

find /sbin -perm +7000 | xargs  ls -l (因为ls不是管道命令,所以需要使用barges)

 

  • 减号的用途 -

AnmydeMacBook-Pro:tmp root# find . -name 'test.*' | xargs ls -l

-rw-r--r--  1 root  wheel  1024 Aug 28 10:02 ./test.txt

AnmydeMacBook-Pro:tmp root# tar -cvf - test.txt | tar -xvf - 

a test.txt

x test.txt

AnmydeMacBook-Pro:tmp root# find . -name 'test.*' | xargs ls -l

-rw-r--r--  1 root  wheel  1024 Aug 28 10:02 ./test.txt

AnmydeMacBook-Pro:tmp root# tar -cvf test.tar.bz2 test.txt  #压缩test.txt文件为test.tar.bz2

a test.txt

AnmydeMacBook-Pro:tmp root# find . -name 'test.*' | xargs ls -l

-rw-r--r--  1 root  wheel  2560 Aug 28 10:08 ./test.tar.bz2

-rw-r--r--  1 root  wheel  1024 Aug 28 10:02 ./test.txt

蓝色字体是将test.txt文件打包,但打包的数据不是记录到文件,而是传送到stdout;经过管道后,将tar -xvf - test.txt传送给后面的tar -xvf -,后面的这个-则是取用前一个命令的stdout,因此我们就不需要使用文件了。

  •  正则表达式

正则表达式就是处理字符串的方法,它是以行为单位。通过一些特殊符号的辅助,可以让用户轻易达到查找、删除、替换某特定字符串的处理程序。

  • grep—进行字符串数据的对比,然后将符合用户需求的字符串打印出来。

grep [-A] [-B] [--color=auto] ‘搜寻字符串’ filename

-A:后面可加数字,为after意思,除了列出该行外,后续的n行也列出来

-B:后面可加数字,为before意思,除了列出该行外,前面的n行也列出来

 

例:用dmesg列出内核信息,再以grep找出内含eth的那行:dmesg | grep ‘eth’

加上行号显示,并把关键字所在行的前两行后三行也一起显示出来: grep -n -A3 -B2 ‘eth’

 

可以使用 --color=auto将关键字部分使用颜色显示。可以在~/.bashrc内加上 alias grep = ‘gre --color=auto’,再以source来立即生效,则每次执行grep它都会自动加上颜色显示。

 

例题1:查找特定字符串

grep -n 'the’ regular_test.txt :查找文件中有the的行

grep -vn 'the’ regular_test.txt :查找文件中没有the的行

grep -in 'the’ regular_test.txt :查找文件中不区分大小写the的行

 

例题2:利用[]来查找集合字符,不论[]中有几个字符,只代表某一个字符

grep -n 't[ae]st' regular_test.txt :查找test或taste这两个单词

grep -n '[^g]oo’ regular_test.txt:查找oo前没有g的行

grep -n ‘[^a-z]oo’ regular_test.txt:查找oo前面没有小写字符的行。

 

例题3:行首与行尾^$

grep -n ‘^the’ regular_test.txt:查找行首有the的行

grep -n ‘!$’ regular_test.txt:查找行尾有!的行

grep -n '^[a-z]’ regular_test.txt:查找开头是小写字符的行 or ‘^[[:lower:]]’

 

grep -n ‘^$’ regular_test.txt:查找空白行

grep -v '^$' /etc/syslog.conf | grep -v '^#’:查找非空白行且不以#开头的行

 

例题4:任意一个字符.与重复字符*

AnmydeMacBook-Pro:anmytest root# grep -n 'g..d' regular_test.txt

1:"Open source" is a good mechanism to develop program.

9:Ho! The soup taste good.

16:The world <Happy> is the same with "glad”.

 

*代表重复0个或多个前面的RE字符的意义,一次,’o*’代表的是具有空字符或一个o以上的字符。特别注意:因为允许空字符(就是有没有字符都可以的意思),所以grep -n 'o*’将会把所有的数据都打印在屏幕上。

因此,当需要至少2个o以上的字符串时,需要’ooo*’

AnmydeMacBook-Pro:anmytest root# grep -n 'ooo*' regular_test.txt

1:"Open source" is a good mechanism to develop program.

2:apple is my favorite food.

3:Football game is not use feet only.

9:Ho! The soup taste good.

18:google is the best tools for search keyword.

19:goooooogle yes!

 

.*代表0个或多个任意字符的意思

AnmydeMacBook-Pro:anmytest root# grep -n 'g.*g' regular_test.txt

1:"Open source" is a good mechanism to develop program.

14:The gd software is a library for drafting programs.

18:google is the best tools for search keyword.

19:goooooogle yes!

20:go! go! Let's go.

 

找出任意数字的行

AnmydeMacBook-Pro:anmytest root# grep -n '[0-9][0-9]*' regular_test.txt

5:However,this dress is about $ 3183 dollars.

15:You are the best is mean you are the no.1.

 

例题5:限定连续RE字符范围{}

因为{}在shell中有特殊意义,因此,必须要使用转义字符\来让它失去特殊意义。

 

找到两个o的字符串。

AnmydeMacBook-Pro:anmytest root# grep -n 'o\{2\}' regular_test.txt

1:"Open source" is a good mechanism to develop program.

2:apple is my favorite food.

3:Football game is not use feet only.

9:Ho! The soup taste good.

18:google is the best tools for search keyword.

19:goooooogle yes!

 

找出g后面接2到5个o,然后再接一个g的字符串

AnmydeMacBook-Pro:anmytest root# grep -n 'go\{2,5\}g' regular_test.txt

18:google is the best tools for search keyword.

 

找出g后面2个o以上的gooooo...g的行

AnmydeMacBook-Pro:anmytest root# grep -n 'go\{2,\}g' regular_test.txt

18:google is the best tools for search keyword.

19:goooooogle yes!

基础正则表达式字符表:

 

练习:

列出etc下文件类型为连接文件属性的文件名,并统计其个数

AnmydeMacBook-Pro:etc root# ls -al | grep '^l'

lrwxr-xr-x   1 root  wheel      15 Mar 15 10:48 aliases -> postfix/aliases

lrwxr-xr-x   1 root  wheel      33 Mar 15 10:59 localtime -> /usr/share/zoneinfo/Asia/Shanghai

lrwxr-xr-x   1 root  wheel      22 Mar 15 10:48 resolv.conf -> ../var/run/resolv.conf

AnmydeMacBook-Pro:etc root# ls -al | grep '^l' | wc -l

       3

 

  • sed工具:sed本身也是一个管道命令,可以分析standard input的,而且sed还可以将数据进行替换、删除、新增、选取特定行等功能。

  • 以行为单位的新增/删除功能

删除2-5行

AnmydeMacBook-Pro:anmytest root# nl regular_test.txt | sed '2,5d'

     1    "Open source" is a good mechanism to develop program.

     6    GNU is free air not free beer.

     7    Her hair is very beauty.

     8    I can't finish the test.

 

在第二行后增加drink milk,也可以增加多行,用\ <Enter>来继续增加下一行

nl regular_test.txt | sed ‘2a drink milk'

 

以行为单位的替换/显示功能

将第2-5行的内容替换成为’No 2-5 number’

nl regular_test.txt | sed '2,5c No 2-5 number’

 

列出第11-20行,若sed后不带-n,则为复制11-20行

同样效果:cat -n regular_test.txt | head -n 20 | tail -n 10

 

AnmydeMacBook-Pro:anmytest root# nl regular_test.txt | sed -n ’11,20p’ 

    11 This window is clear.

    12 the symbol '*' is represented as start.

    13 oh!    My god!

    14 The gd software is a library for drafting programs.

    15 You are the best is mean you are the no.1.

    16 The world <Happy> is the same with "glad".

    17 I like dog.

    18 google is the best tools for search keyword.

    19 goooooogle yes!

    20 go! go! Let's go.

 

部分数据的查找并替换功能

sed ’s/要被替换的字符串/新的字符串/g

删除下行的 #inet addr: 和Bcast:..... Mask:255.255.255.0

#inet addr: 192.168.1.100 Bcast:..... Mask:255.255.255.0

sed ’s/^.*addr://g' | sed ’s/Bcast.*$//g

192.168.1.100

删除空白行:sed ’/^$/d'

直接修改文件内容

利用sed将文件内以.结尾的行换成!

-i参数让sed直接去修改后面接的文件内容而不是由屏幕输出。

sed -i 's/\.$/\!/g’ regular_test.txt

 

利用sed直接在文件最后一行加入”#this is a test”

sed -i ‘$a #this is a test’ regular_test.txt

 

  • 扩展正则表达式

!和>在正则表达式中不是特殊符号。查找时可以直接使用。例如:grep -n ‘[!>]’ regular_test.txt

egrep -v '^$|^#’ regular_test.txt 功能等于grep -v '^$' regular_test.txt | grep -v '^#'

 

  • 文件的格式化与相关处理
  • 格式化打印:printf

printf '%10s %5i %5i %5i %8.2f \n' $(cat printf.txt| grep -v Name)

%10s表示一个长度为10的字符串

%5i表示一个长度为5的数字字段

%8.2f表示一个长度为8个字符的具有2个小数点的字段。

  • awk:好用的数据处理工具

awk倾向于将一行分为数个“字段”来处理,因此awk相当适合处理小型的数据呢!

awk ‘条件类型1{动作1} 条件类型2{动作2}...’ filename

 

取出最近5条登录者的数据,仅查看第一列和第三列内容

AnmydeMacBook-Pro:anmytest root# last | awk '{print $1 "\t" $3}' | sed -n '1,5p'

ZhangAnmy    Tue

ZhangAnmy    Mon

ZhangAnmy    Mon

reboot    Mon

ZhangAnmy    Thu

 

awk内置变量

NF:每一行($0)拥有的字段总数

NR:目前awk所处理的是“第几行”数据

FS:目前的分隔字符,默认是空格键。

 

AnmydeMacBook-Pro:anmytest root# last | awk '{print $1 "\t lines: " NR "\t columes: "NF}'

ZhangAnmy     lines: 1     columes: 9

ZhangAnmy     lines: 2     columes: 9

ZhangAnmy     lines: 3     columes: 9

reboot     lines: 4     columes: 6

ZhangAnmy     lines: 5     columes: 9

ZhangAnmy     lines: 6     columes: 9

ZhangAnmy     lines: 7     columes: 9

ZhangAnmy     lines: 8     columes: 9

ZhangAnmy     lines: 9     columes: 9

ZhangAnmy     lines: 10     columes: 9

     lines: 11     columes: 0

wtmp     lines: 12     columes: 6

awk逻辑运算:> < >= <= == !=

在passwd中以冒号:作为字段分隔,查阅第三列小于10以下的数据,仅列出账号与第三列。

AnmydeMacBook-Pro:anmytest root# cat /etc/passwd | awk '{FS=":"} $3 < 10 {print $1 "\t" $3}' | grep -v '^#'

nobody    -2

root    0

daemon    1

_uucp    4

 

awk中加法运算

AnmydeMacBook-Pro:anmytest root# cat printf.txt | \

>awk 'NR==1{printf "%10s %10s %10s %10s %10s %10s\n",$1,$2,$3,$4,$5,"Total"} NR>=2{printf "%10s %10d %10d %10d %8.2f %10d\n",$1,$2,$3,$4,$5,total=$2+$3+$4}'

      Name    Chinese    English       Math    Average      Total

      Anmy         95         85         90    90.00        270

      Jack         80         60         92    77.33        232

     Pavan         60         90         70    73.33        220

 

逻辑运算

>awk ‘if(NR==1){printf "%10s %10s %10s %10s %10s %10s\n",$1,$2,$3,$4,$5,"Total”} 

NR>=2{printf "%10s %10d %10d %10d %8.2f %10d\n",$1,$2,$3,$4,$5,total=$2+$3+$4}'

 

文件比较工具

diff:不要用它比较两个完全不相干的文件

AnmydeMacBook-Pro:anmytest root# cat bk1.txt | sed '4d' > bk_new.txt

AnmydeMacBook-Pro:anmytest root# diff bk1.txt bk_new.txt

4d3 —>左边第四行被删除(d)掉了,基准是右边的第三行

< this dress doesn't fit me. —>列出左边(<)文件被删除的那一行内容

 

cmp [-s] file1 file2

cmp默认仅输出第一个发现的不同点。-s列出所有的不同点

AnmydeMacBook-Pro:anmytest root# cmp bk1.txt bk_new.txt

bk1.txt bk_new.txt differ: char 118, line 4

 

var=$((运算内容)): echo $((14*28))

script的执行方式区别(source,shscript,./script)

source filename.sh—>在父进程中执行

 

利用test命令测试功能

利用判断符号[]

在[]的每个组件都需要有空格键来分隔

在[]内的变量,最好都以双引号括起来

在[]内的常量,最好都以单或双引号括起来

[ ”$params” == “value” ]

 

条件判断式:if…then

if [条件判断式1]; then

...

elif [条件判断式2]; then

...

else

...

fi

 

case...esac

function()功能

循环 while do done,until do done,for...do...done

 

  • 用户账号

/etc/passwd文件结构

AnmydeMacBook-Pro:scripts ZhangAnmy$ egrep -v '^_|^#' /etc/passwd

nobody:*:-2:-2:Unprivileged User:/var/empty:/usr/bin/false

root:*:0:0:System Administrator:/var/root:/bin/sh

daemon:*:1:1:System Services:/var/root:/usr/bin/false

以:分隔第1个字段为账号名称第2个为密码,现在看到的都为*,放到了/etc/shadow中了第3个为UID,rootd UID为0(系统管理员),1~499(系统账号,其中1~99由distributions自行创建的系统账号;100~499若用户有系统账号需求时,可以使用的账号UID),500~65535(可登陆账号,给一般用户使用。已经可以支持2^32-1这么大的UID号码)

第4个字段GID,用来规定组名与GID的对应。

第5个字段为用户信息说明。

第6个字段为主文件夹

第7个为shell

 

有效与初始用户组:groups,newgrp

/etc/group文件结构

AnmydeMacBook-Pro:etc ZhangAnmy$ egrep -v '^#|^_' /etc/group | head -n 4

nobody:*:-2:

nogroup:*:-1:

wheel:*:0:root

daemon:*:1:root

第1字段:用户组名称

第2字段:用户组密码

3字段:GID

4字段:此用户组支持的账号名称

账号相关文件之间UID/GID与密码相关性示意图

  • 账号管理

新增与删除用户:user add,相关配置文件,passwd,user mod,userdel

新增与删除用户组:groupadd,groupmod,groupdel,gpasswd

  • 用户身份切换su,sudo

su [-lm] [-c 命令] [username]

-:单纯使用-(su -)代表使用login-shell的变量文件读取方式来登录系统;若用户名称没加,则代表切换到root身份

-l:与-类似,但后面需要加用户账号

-m:与-p一样,表示使用目前的环境设置,而不读取新用户的配置文件

-c:仅进行一次命令,所以-c后面可以加上命令。

 

PAM(Pluggable Authentication Modules,嵌入式模块):是一套应用程序编程接口(API),它提供了一连串的验证机制,只要用户将验证阶段的需求告知PAM后,PAMJ就能够回报用户验证的结果。

 

  • 软件磁盘阵列(Software RAID)

RAID-0:等量模式,性能最佳

RAID-1:映像模式,完整备份

RAID 5:性能与数据备份的均衡考虑

 

  • 逻辑卷管理器(Logical Volume Manager)

LVM:逻辑卷管理器

Physical Volume,PV,物理卷

Volume Group,VG,卷用户组

Physical Extend,PE,物理扩展快

Logical Volume,LV,逻辑卷

 

fdisk /dev/hda

partprove

fdisk -l

 

PV阶段:

pvcreate:将物理分区新建成为PV

pvscan:查询目前系统里面任何具有PV的磁盘

pvdisplay:显示出目前系统上面PV的状态

pvremove:将PV属性删除,让该分区不具有PV属性

 

LVM相关命令汇整

  • 循环执行的例行性工作调度

crontab [-u username] [-l|-e|-r]

-u:只有root才能进行这个任务,也即帮其他用户新建/删除crontab工作调度

-e:编辑crontab工作内容

-l:查阅crontab工作内容

-r:删除所有的crontab工作内容,若仅要删除一项,请用-e编辑

 

每项工作的格式具有六个字段:

crontab -e—>进入编辑界面

0   12    *    *    *  mail dmtsai -s “at 12:00” < /home/dmtsai/.bashrc

分  时  日  月  周|————————— 命令串—————————>

 

字段意义如下所示:其中周 0和7都表示星期天。

  • 系统的配置文件: /etc/crontab

SHELL=/bin/bash

PATH=/sbin:/bin:/usr/sbin:/usr/bin

MAILTO=root

HOME=/

 

#run-parts

01  *    *    *    *      root       run-parts /etc/cron.hourly <==每小时

02  4    *    *    *      root       run-parts /etc/cron.daily <==每天

22  4    *    *    0      root       run-parts /etc/cron.weekly <==每周日

01  4    1    *    *      root       run-parts /etc/cron.monthly <==每个月1号

分  时   日 月  周     执行者身份   |—————— 命令串——————>

 

  • 进程与程序

程序一般是放置在磁盘中,然后通过用户的执行来触发。出发后会加载到内存中成为一个个体,那就是进程。为了OS可管理这个进程,因此进程有给予执行者的权限/属性等参数,并包括进程所需要的脚本与数据或文件数据等,最后再给予一个PID。系统就是通过这个PID来判断该Process是否具有权限进行工作的,它是很重要的。

由这个进程衍生出来的其他进程在一般状态下,也会沿用这个进程的相关权限。

程序:通常为二进制程序放在在存储媒介中(如硬盘、光盘、软盘、磁带等),以武力文件的形式存在;

进程:程序被触发后,执行者的权限与属性、程序的程序代码与所需数据等都会被加载到内存中,OS并给予这个内存内的单元一个标识符PID,可以说,进程就是一个正在运行中的程序。

 

使用ps -l查看进程

AnmydeMacBook-Pro:~ root# ps -l

  UID   PID  PPID        F CPU PRI NI       SZ    RSS WCHAN  S   ADDR TTY      TIME CMD

    0   438   437     4106   0  31  0  2471088      8 -      Ss   0 ttys000    0:00.03 login -pf ZhangA

    0  4490   440     4106   0  31  0  2471100   4164 -      S    0 ttys000    0:00.03 su - root

    0  4491  4490     4006   0  31  0  2438512   1308 -      S    0 ttys000    0:00.01 -sh

    0  4654  4491     4006   0  31  0  2443232    752 -      R+   0 ttys000    0:00.00 ps -l

fork and exec:过程调用的流程

常驻在内存的进程称之为服务(daemon)

 

  • 工作管理

要进行bash的job control必须注意以下限制:

1)这些工作所触发的进程必须来自于你shell的子进程(只管理自己的bash);

2)前台:你可以控制与执行命令的这个环境称为前台(foreground)的工作;

3)后台:可以自行运行的工作,你无法使用[ctrl]+c终止它,可使用bg/fg调用该工作

4)后台中“执行”的进程不能等待terminal/shell输入(input)

 

&:直接将命令丢到后台执行

可以利用数据重定向将后台执行命令的错误信息传送到文件中,以免输入到屏幕上。

tar -zpcf /tmp/text.gar.gz /etc > /tmp/log.txt 2 > &1 & (2表示错误的数据stderr)

 

查看目前的后台工作状态:jobs

jobs [-lrs]

-l:除了列出job number与命令串之外,同事列出PID的号码

-r:仅列出正在后台run的工作

-s:仅列出正在后台当中暂停(stop)的工作

 

fg &jobnumber —> 将后台工作拿到前台来处理

 

AnmydeMacBook-Pro:~ root# vi ~/.bashrc

[1]+  Stopped(SIGTSTP)        vi ~/.bashrc

AnmydeMacBook-Pro:~ root# jobs -l

[1]+  4731 Suspended: 18           vi ~/.bashrc

AnmydeMacBook-Pro:~ root# fg 1

vi ~/.bashrc

AnmydeMacBook-Pro:~ root# jobs -l

AnmydeMacBook-Pro:~ root#

 

[ctrl]-z—>将目前的工作丢到后台下面去“暂停”,bg让在后台下面“暂停”的工作去“run”

 

管理后台当中的工作:kill

kill -signal %jobnumber

kill -l:列出目前kill能够使用的信号(signal)有哪些

-1:重新读取一次参数的配置文件(类似reload);

-2:代表与由键盘输入[ctrl]-c同样的操作;

-9:强制删除一个工作

-15:以政策的程序方式终止一项工作。默认为15

 

注意:kill后面接的数字默认会是PID,如果想要管理bash的工作控制,就得要加上%数字了。

 

AnmydeMacBook-Pro:~ root# jobs

[1]-  Stopped(SIGTSTP)        vim ~/.bashrc

[2]+  Stopped(SIGTSTP)        find / -print

AnmydeMacBook-Pro:~ root# kill -9 %2;jobs

[1]+  Stopped(SIGTTOU)        vim ~/.bashrc

[2]   Killed: 9               find / -print

 

  • 进程管理

进程的查看

ps:将某个时间点的进程运行情况选取下来

ps aux:查看系统所有的进程数据

ps -l:仅查看自己的bash相关进程

 

top:动态查看进程的变化

top [-d 数字] | got [-bnp]

-d:后面可以接秒数,就是这个界面更新的秒数,默认为5秒

-b:以批次的方式执行top,还有更多的参数可以使用通常会搭配数据流重定向来将批处理的结果输出成为文件。

-n:与-b搭配,意义是,需要进行几次top的输出结果

-p:制定某些个PID来进行查看监测而已。

 

在top执行过程中可以使用的按键命令:

?:显示在top当中可以输入的按键命令

P:以CPU的使用资源排序显示

M:以内存的使用资源排序显示

N:以PID来排序

T:由该进程使用的CPU时间累积排序

k:给予某个PID一个信号(signal)

r:给予某个PID重新制定一个nice值;

q:离开top软件

top -d 2 —>每2秒钟更新一次top

Processes: 283 total, 2 running, 4 stuck, 277 sleeping, 1395 threads                                             14:35:17 —>当前时间

Load Avg: 4.84, 3.73, 2.76  CPU usage: 7.26% user, 7.74% sys, 84.98% idle

SharedLibs: 113M resident, 17M data, 7828K linkedit. MemRegions: 60587 total, 2758M resident, 82M private, 1264M shared.

PhysMem: 8130M used (1972M wired), 60M unused.

VM: 891G vsize, 533M framework vsize, 1997661(0) swapins, 2167366(0) swapouts.

Networks: packets: 783425/644M in, 682988/136M out. Disks: 781094/24G read, 763289/28G written.

PID   COMMAND      %CPU  TIME     #TH   #WQ  #PORTS MEM    PURG   CMPRS  PGRP PPID STATE    BOOSTS    %CPU_ME

5096  java         0.1   00:03.29 20    0    77     109M   0B     0B     5020 5020 sleeping *0[1]     0.00000

5095  AddressBookS 0.0   00:00.04 2     0    49     2040K  0B     0B     5095 1    sleeping *1[1]     0.00000

5074  plugin-conta 0.0   00:00.56 22    0    162    26M    0B     0B     855  855  sleeping *0[28]    0.00000

5067  java         0.1   00:22.91 55    0    148    429M   0B     0B     5020 5020 sleeping *0[2]     0.00000

5042  java         0.0   00:05.09 23    0    84     112M   0B     0B     5020 5020 sleeping *0[2]     0.00000

5027  fsnotifier   0.0   00:00.03 3     0    30     336K   0B     412K   5020 5020 sleeping *0[1]     0.00000

5025  CVMCompiler  0.0   00:00.41 2     1    27     10M    0B     1452K  5025 1    sleeping *0[1]     0.00000

5021  ocspd        0.0   00:00.08 5     0    69     1780K  0B     416K   5021 1    sleeping *0[1]     0.00000

5020  idea         7.9   02:31.44 74    1    359-   699M+  0B     27M    5020 1    sleeping *0[64+]   0.07401

5005  top          2.9   00:15.70 1/1   0    30     2424K  0B     444K   5005 3635 running  *0[1]     0.00000

…….

 

top -b -n 2 > /tmp/top.txt —>将top的信息存到文件中

 

echo $$ —>查看bash PID

 

系统资源的查看

free:查看内存使用情况

free [-b|-k|-m|-g] [-t]

-b:直接输入free时,显示的单位是KB,可以使用b(bytes),m(MB),k(KB),及g(GB)来显示单位

-t:在输出的最终结果中显示物理内存与swap的总量

 

uname: 查看系统与内核相关信息

uname [-asrmpi]

-a:所有系统相关的信息,包括下面的数据都会被列出来

-s:系统内核名称

-r:内核的版本

-m:本系统的硬件名称,例如:i686

-p:CPU的类型,与-m类似,只是显示的是CPU的类型

-i:硬件的平台(ix86)

 

netstat -[atunlp]

-a:将目前系统上所有的连接、监听、socket数据都列出来

-t:列出tcp网络数据报的数据

-u:列出udp网络数据报的数据

-n:不列出进程的服务名称,以端口号来显示

-l:列出目前正在网络监听的服务

-p:列出该网络服务的进程PID

AnmydeMacBook-Pro:tmp root# netstat

Active Internet connections

Proto Recv-Q Send-Q  Local Address          Foreign Address        (state)    

tcp4       0   1084  10.63.53.31.63488      58.87.82.241.https     ESTABLISHED

tcp4       0      0  10.63.53.31.63487      6.6.6.6.https          SYN_SENT   

tcp4       0      0  10.63.53.31.63486      218.76.94.196.http     ESTABLISHED

tcp4      31      0  10.63.53.31.63485      59.111.160.197.https   CLOSE_WAIT

tcp4      31      0  10.63.53.31.63484      59.111.160.197.https   CLOSE_WAIT

tcp4       0      0  10.63.53.31.63479      111.202.100.40.http    ESTABLISHED

 

AnmydeMacBook-Pro:tmp root# netstat -a | grep tcp  

tcp4       0      0  10.63.53.31.63418      223.167.82.172.http    ESTABLISHED

tcp4       0      0  10.63.53.31.63419      140.207.127.59.http    ESTABLISHED

tcp4       0      0  localhost.63251        localhost.63279        ESTABLISHED

tcp4       0      0  localhost.63279        localhost.63251        ESTABLISHED

tcp4       0      0  localhost.8005         *.*                    LISTEN    

tcp46      0      0  *.8009                 *.*                    LISTEN  

 

daemon相关文件以及某些重要的配置文件放置处

1)/etc/init.d/*:启动脚本放置处

2)/etc/sysconfig/*:各服务的初始化环境配置文件

3)/etc/xinetd.conf, /etc/xinetd.d/*:super daemon配置文件

4)/etc/*:各服务各自的配置文件

5)/var/lib/*:各服务的程序的PID记录处

 

日志文件的权限通常是设置为仅有root能够读取。

日志所在目录/var/log

syslog的配置文件:/etc/syslog.conf

 

Linux系统启动过程如下:

1)加载BIOS的硬件信息与进行自我测试,并依据设置取得第一个可启动的设备

2)读取并执行第一个启动设备内MBR(MasterBoot Record,主引导分区) 的boot loader(即是grub,spfdisk等程序)

3)依据boot loader的设置加载Kernel, Kernel会开始检测硬件与加载驱动程序

4)在硬件驱动成功后,Kernel会主动调用init进程,而init会去的run-level信息

5)init执行/etc/rc.d/rc.sysinit问价来准备软件执行的操作环境(如网络、时区等)

6)init执行run-level的各个服务的启动(script方式)

7)init执行/etc/rc.d/rc.local文件

8)init执行终端机模拟程序 mingetty来启动login进程,最后就等待用户登录。

 

rpm:软件管理程序

rpm -qa —>已安装的软件

rpm -q[licdR] 已安装的软件名称

rpm -qf 存在于系统上面的某个文件名

rpm -qp[licdR] 未安装的某个文件名称

利用yum进行查询、安装、升级与删除功能

查询:yum [list|info|search|provides|whatprovides]

安装/升级:yum [install|update]

删除功能:yum [remove]软件

 

完整备份的增量备份

#完整备份

dump -0u -f /backupdate/home.dump /home

#第一次进行增量备份

dump -1u -f /backupdate/home.dump.1 /home

 

tar命令进行完整备份,将不必要的/proc,/mnt,/tmp等目录不备份,其他数据则予以备份:

tar --exclude /proc --exclude /mnt --exclude /tmp -jcvp -f /backupdate/system.tar.bz2

 

完整备份的差异备份

tar -N ‘2018-08-29’ -jpcv -f /backupdate/home.tar.bz2 /home

已标记关键词 清除标记
相关推荐
作者序 第一篇  服务器搭建前的进修专区 第1章  搭建服务器前的准备工作 2 1.1 linux 的功能 3 1.1.1 用 linux 搭建服务器需要的能力 3 1.1.2 搭建服务器难不难呢 4 1.2 搭建服务器的基本流程 5 1.2.1 网络服务器成功连接的分析 5 1.2.2 一个常见的服务器设置案例分析 8 1.2.3 系统安全与备份处理 25 1.3 自我评估是否已经具备服务器搭建的能力 27 第2章  网络的基本概念 29 2.1 网络 30 2.1.1 什么是网络 30 2.1.2 计算机网络组成组件 32 2.1.3 计算机网络的范围 33 2.1.4 计算机网络协议:osi 七层协议 34 2.1.5 计算机网络协议:tcp/ip 37 2.2 tcp/ip 的网络接口层的相关协议 39 .2.2.1 广域网使用的设备 39 2.2.2 局域网使用的设备——以太网 40 2.2.3 以太网络的传输协议:csma/cd 42 2.2.4 mac 的封装格式 44 2.2.5 mtu(最大传输单位) 46 2.2.6 集线器、交换器与相关机制 47 2.3 tcp/ip 的网络层相关数据包与数据 49 2.3.1 ip 数据包的封装 49 2.3.2 ip 地址的组成与分级 52 2.3.3 ip 的种类与取得方式 55 2.3.4 netmask、子网与 cidr(classless interdomain routing) 57 2.3.5 路由概念 61 2.3.6 观察主机路由:route 64 2.3.7 ip 与 mac:网络接口层的 arp 与 rarp 协议 65 2.3.8 icmp 协议 66 2.4 tcp/ip 的传输层相关数据包与数据 67 2.4.1 面向连接的可靠的 tcp 协议 67 2.4.2 tcp 的三次握手 72 2.4.3 无连接的 udp 协议 73 2.4.4 网络防火墙与 osi 七层协议 74 2.5 连上 internet 前的准备事项 75 2.5.1 ip地址、主机名与dns系统 75 2.5.2 连上 internet 的必要网络参数 76 2.6 重点回顾 77 2.7 参考数据与延伸阅读 78 第3章  局域网架构简介 79 3.1 局域网的连接 80 3.1.1 局域网的布线规划 80 3.1.2 网络设备选购建议 84 3.2 本书使用的内部连接网络参数与通信协议 88 3.2.1 网络联机参数与通信协议 88 3.2.2 windows 个人计算机网络配置范例 90 第4章  连接 internet 93 4.1 linux 连接 internet 前的注意事项 94 4.1.1 linux 的网卡 94 4.1.2 编译网卡驱动程序(option) 96 4.1.3 linux 网络相关配置文件 98 4.2 连接 internet 的设置方法 100 4.2.1 手动配置固定 ip 参数 100 4.2.2 自动取得 ip 参数(dhcp 方法,适用 cable modem、ip 路由器的环境) 105 4.2.3 adsl 拨号上网(适用 adsl 拨号以及光纤接入) 106 4.3 无线网络——以笔记本电脑为例 111 4.3.1 无线网络所需要的硬件:ap、无线网卡 111 4.3.2 关于 ap 的设置:网络安全方面 113 4.3.3 利用无线网卡开始连接 115 4.4 常见问题说明 118 4.4.1 内部网络使用某些服务(如 ftp、pop3)所遇到的连接延迟问题 118 4.4.2 域名无法解析的问题 120 4.4.3 默认网关的问题 120 4.5 重点回顾 121 4.6 参考数据与延伸阅读 121 第5章  linux 中常用的网络命令 122 5.1 设置网络参数的命令 123 5.1.1  手动/自动配置ip 参数与启动/关闭网络接口:ifconfig、ifup、ifdown 123 5.1.2 修改路由:route 126 5.1.3 网络参数综合命令:ip 128 5.1.4 无线网络:iwlist, iwconfig 134 5.1.5 dhcp客户端命令:dhclient 134 5.2 网络排错与查看命令 134 5.2.1 两台主机的两点沟通:ping 134 5.2.2 两主机间各节点分析:traceroute 137 5.2.3 查看本机的网络连接与后门:netstat 138 5.2.4 检测主机名与 ip 的对应:host、nslookup 141 5.3 远程连接命令与即时通信软件 143 5.3.1 终端机与 bbs 连接:telnet 143 5.3.2 ftp 连接软件:ftp、lftp 144 5.3.3 图形接口的即时通信软件:pidgin(gaim 的延伸) 147 5.4 文字接口网页浏览 150 5.4.1 文字浏览器:links 150 5.4.2 文字接口下载器:wget 152 5.5 数据包捕获功能 153 5.5.1 文字接口数据包捕获器:tcpdump 153 5.5.2 图形接口数据包捕获器:wireshark 157 5.5.3 任意启动 tcp/udp 数据包的端口连接:nc、netcat 159 5.6 重点回顾 160 5.7 参考数据与延伸阅读 161 第6章  linux 网络排错 162 6.1 无法连接网络的原因分析 163 6.1.1 硬件问题:网线、网络设备、网络布线等 163 6.1.2 软件问题:ip 参数设置、路由设置、服务器与防火墙设置等 165 6.1.3 问题的处理 165 6.2 处理流程 166 6.2.1 步骤1:网卡工作确认 166 6.2.2 步骤2:局域网内各项连接设备检测 167 6.2.3 步骤3:取得正确的 ip 参数 168 6.2.4 步骤4:确认路由表的规则 169 6.2.5 步骤5:主机名与 ip 查询的 dns 错误 170 6.2.6 步骤6:linux 的 nat 服务器或 ip 路由器出问题 171 6.2.7 步骤7:internet 的问题 171 6.2.8 步骤8:服务器的问题 171 6.3 参考数据与延伸阅读 172 第二篇 主机的简易安全防护措施 第7章  网络安全与主机基本防护:限制端口、网络升级与selinux 174 7.1 网络数据包连接进入主机的流程 175 7.1.1 数据包进入主机的流程 175 7.1.2 常见的攻击手法与相关保护 177 7.1.3 主机能执行的保护操作:软件更新、减少网络服务、 启动 selinux 182 7.2 网络自动升级软件 184 7.2.1 如何进行软件升级 184 7.2.2 centos 的 yum 软件更新、镜像站点使用的原理 186 7.2.3 yum 的功能:安装软件组、全系统更新 187 7.2.4 挑选特定的镜像站点:修改 yum 配置文件与清除 yum 缓存 193 7.3 限制连接端口(port) 196 7.3.1 什么是port 197 7.3.2 端口的查看:netstat、nmap 198 7.3.3 端口与服务的启动/关闭及开机时状态设定 201 7.3.4 安全性考虑——关闭网络服务端口 205 7.4 selinux 管理原则 206 7.4.1 selinux 的工作模式 206 7.4.2 selinux 的启动、关闭与查看 210 7.4.3 selinux type 的修改 212 7.4.4 selinux 策略内的规则布尔值修订 214 7.4.5 selinux 日志文件记录所需的服务 217 7.5 被攻击后的主机修复工作 221 7.5.1 网管人员应具备的技能 221 7.5.2 主机受攻击后恢复的工作流程 223 7.6 重点回顾 225 7.7 参考数据与延伸阅读 225 第8章  路由的概念与路由器设置 226 8.1 路由 227 8.1.1 路由表产生的类型 227 8.1.2 一个网卡绑多个 ip:ip alias 的测试用途 229 8.1.3 重复路由的问题 230 8.2 路由器配置 231 8.2.1 什么是路由器与 ip 路由器 231 8.2.2 何时需要路由器 233 8.2.3 静态路由的路由器 234 8.3 动态路由器架设 239 8.4 特殊状况——路由器两边界面是同一个ip网段:arp proxy 245 8.5 重点回顾 249 8.6 参考数据与延伸阅读 250 第9章  防火墙与 nat 服务器 251 9.1 认识防火墙 252 9.1.1 关于本章的一些提醒事项 252 9.1.2 为何需要防火墙 253 9.1.3 linux 系统上防火墙的主要类别 253 9.1.4 防火墙的一般网络布线示意 255 9.1.5  防火墙的使用限制 258 9.2 tcp wrappers 259 9.2.1 哪些服务有支持 259 9.2.2 /etc/hosts.{allowdeny} 的设置方式 261 9.3 linux 的数据包过滤软件:iptables 262 9.3.1 不同 linux 内核本的防火墙软件 262 9.3.2 数据包进入流程:规则顺序的重要性 263 9.3.3 iptables 的表格(table)与链(chain) 264 9.3.4 本机的 iptables 语法 267 9.3.5 ipv4 的内核管理功能:/proc/sys/net/ipv4/* 278 9.4 设置单机防火墙的一个实例 281 9.4.1 规则草拟 281 9.4.2 实际设置 282 9.5 nat 服务器的设置 286 9.5.1 什么是 nat? snat? dnat? 287 9.5.2 最简单的 nat 服务器:ip 分享功能 290 9.5.3 iptables 的额外内核模块功能 292 9.5.4 在防火墙后端的网络服务器上做dnat 设置 292 9.6 重点回顾 293 9.7 参考数据与延伸阅读 294 第10章  申请合法的主机名 295 10.1 为何需要主机名 296 10.1.1 主机名的由来 296 10.1.2 重点在合法授权 297 10.1.3 申请静态还是动态 dns 主机名 298 10.2 注册一个合法的主机名 299 10.2.1 静态 dns 主机名注册(以 hinet 为例) 299 10.2.2 动态 dns 主机名注册(以 no-ip 为例) 301 10.3 重点回顾 306 10.4 参考数据与延伸阅读 307 第三篇  局域网内常见服务器的搭建 第11章  远程连接服务器 ssh / xdmcp / vnc /xrdp 310 11.1 远程连接服务器 311 11.1.1 什么是远程连接服务器 311 11.1.2 有哪些可供登录的类型 312 11.2 文字接口连接服务器: ssh 服务器 313 11.2.1 连接加密技术简介 314 11.2.2 启动 ssh 服务 317 11.2.3  ssh 客户端连接程序——linux 用户 317 11.2.4  ssh 客户端连接程序——windows 用户 324 11.2.5  sshd 服务器详细配置 328 11.2.6 制作不用密码可立即登录的ssh用户 332 11.2.7 简易安全设置 335 11.3 最原始图形接口:xdmcp服务的启用 337 11.3.1  x window 的 server/client 架构与各组件 338 11.3.2 设定 gdm 的 xdmcp 服务 341 11.3.3 用户系统为 linux 的登录方式 343 11.3.4 用户系统为 windows 的登录方式: xming 345 11.4 华丽的图形接口:vnc 服务器 348 11.4.1 默认的 vnc 服务器 348 11.4.2  vnc 的客户端连接软件 350 11.4.3  vnc 搭配本机的 xdmcp 画面 352 11.4.4 开机就启动 vnc server 的方法 354 11.4.5 同步的 vnc :可以通过图示同步教学 354 11.5 仿真的远程桌面系统:xrdp 服务器 355 11.6  ssh 服务器的高级应用 357 11.6.1 在非标准端口启动 ssh(非 port 22) 357 11.6.2 以 rsync 进行同步镜像备份 359 11.6.3 通过ssh通道加密原本无加密的服务 362 11.6.4 以ssh通道配合 x server 传递图形界面 363 11.7 重点回顾 367 11.8 参考数据与延伸阅读 368 第12章  网络参数管理者:dhcp服务器 369 12.1 dhcp 的工作原理 370 12.1.1 dhcp 服务器的用途 370 12.1.2 dhcp 协议的工作方式 371 12.1.3 何时需要架设 dhcp 服务器 375 12.2 dhcp 服务器端的配置 376 12.2.1 所需软件与文件结构 376 12.2.2 主要配置文件 /etc/dhcp/dhcpd.conf 的语法 377 12.2.3 一个局域网的 dhcp 服务器设置案例 379 12.2.4 dhcp 服务器的启动与观察 380 12.2.5 内部主机的 ip 对应 382 12.3 dhcp 客户端的设置 382 12.3.1 客户端是 linux 382 12.3.2 客户端是 windows 384 12.4 dhcp 服务器端的高级查看与使用 387 12.4.1 检查租约文件 387 12.4.2 让大量 pc 都具有固定 ip 的脚本 387 12.4.3 使用 ether-wake 实现远程自动开机(remote boot) 388 12.4.4 dhcp 与 dns 的关系 389 12.5 重点回顾 390 12.6 参考数据与延伸阅读 391 第13章  文件服务器之一:nfs 服务器 392 13.1 nfs的由来与功能 393 13.1.1 什么是 nfs(network file system) 393 13.1.2 什么是 rpc(remote procedure call) 394 13.1.3 nfs 启动的 rpc daemons 395 13.1.4 nfs 的文件访问权限 396 13.2 nfs server 端的配置 397 13.2.1 所需要的软件 398 13.2.2 nfs 的软件结构 398 13.2.3 /etc/exports 配置文件的语法与参数 399 13.2.4 启动 nfs 404 13.2.5 nfs 的连接查看 406 13.2.6 nfs 的安全性 408 13.3 nfs 客户端的设置 410 13.3.1 手动挂载 nfs 服务器共享的资源 410 13.3.2 客户端可处理的挂载参数与开机挂载 411 13.3.3 无法挂载的原因分析 414 13.3.4 自动挂载 autofs 的使用 415 13.4 案例演练 418 13.5 重点回顾 420 13.6 参考数据与延伸阅读 420 第14章  账号管理:nis 服务器 421 14.1 nis 的由来与功能 422 14.1.1 nis 的主要功能:管理账号信息 422 14.1.2 nis 的工作流程:通过 rpc 服务 423 14.2 nis server 端的设置 425 14.2.1 所需要的软件 425 14.2.2 nis 服务器相关的配置文件 425 14.2.3 一个实际操作案例 426 14.2.4 nis server 的设置与启动 426 14.2.5 防火墙设置 431 14.3 nis client 端的设置 431 14.3.1 nis client 所需的软件与软件结构 432 14.3.2 nis client 的设置与启动 432 14.3.3 nis client 端的验证:yptest、ypwhich、ypcat 435 14.3.4 用户参数修改:yppasswd、ypchfn、ypchsh 437 14.4 nis 搭配 nfs 的设置在群集计算机上的应用 438 14.5 重点回顾 441 14.6 参考数据与延伸阅读 442 第15章  时间服务器:ntp 服务器 443 15.1 关于时区与网络校时的通信协议 444 15.1.1 什么是时区?全球有多少时区?gmt 在哪个时区? 444 15.1.2 什么是夏令时(daylight saving time) 446 15.1.3 coordinated universal time(utc)与系统时间的误差 447 15.1.4 ntp 通信协议 447 15.1.5 ntp 服务器的层次概念 448 15.2 ntp 服务器的安装与设置 449 15.2.1 所需软件与软件结构 449 15.2.2 主要配置文件 ntp.conf 的处理 451 15.2.3 ntp 的启动与观察 453 15.2.4 安全性设置 455 15.3 客户端的时间更新方式 455 15.3.1 linux 手动校时工作:date、hwclock 455 15.3.2 linux 的网络校时 456 15.3.3 windows 的网络校时 457 15.4 重点回顾 459 15.5 参考数据与延伸阅读 459 第16章  文件服务器之二:samba 服务器 460 16.1 什么是 samba 461 16.1.1 samba 的发展历史与名称的由来 461 16.1.2 samba 常见的应用 462 16.1.3 samba 使用的 netbios 通信协议 463 16.1.4 samba 使用的 daemons 464 16.1.5 连接模式的介绍(peer/peer、domain model) 465 16.2 samba 服务器的基础设置 467 16.2.1 samba所需软件及其软件结构 467 16.2.2 基础的网上邻居共享流程与 smb.conf 的常用设置项目 469 16.2.3 不需密码的共享(security = share,纯测试) 474 16.2.4 需账号密码才可登录的共享(security = user) 479 16.2.5 设置成为打印机服务器(cups 系统) 486 16.2.6 安全性的议题与管理 496 16.2.7 主机安装时的规划与中文扇区挂载 499 16.3 samba客户端软件功能 500 16.3.1 windows 系统的使用 501 16.3.2 linux 系统的使用 505 16.4 以 pdc 服务器提供账号管理 509 16.4.1 让 samba 管理网络用户的一个实际案例 509 16.4.2 pdc 服务器的搭建 511 16.4.3 wimdows xp pro. 的客户端 515 16.4.4 windows 7 的客户端 519 16.4.5 pdc 问题的克服 520 16.5 服务器简单维护与管理 521 16.5.1 服务器相关问题克服 521 16.5.2 让用户修改samba密码同时同步更新 /etc/shadow 密码 522 16.5.3 利用 acl 配合单一用户时的管理 523 16.6 重点回顾 524 16.7 参考数据与延伸阅读 524 第17章  局域网控制者:proxy 服务器 526 17.1 什么是代理服务器 527 17.1.1 什么是代理服务器 527 17.1.2 代理服务器的工作流程 528 17.1.3 上层代理服务器 529 17.1.4 代理服务器与 nat 服务器的差异 531 17.1.5 搭建代理服务器的用途与优缺点 531 17.2 proxy 服务器的配置基础 533 17.2.1 proxy 所需的 squid 软件及其软件结构 533 17.2.2 centos 默认的 squid 设置 534 17.2.3 管理信任来源(如局域网)与目标(如恶意网站):acl 与 http_access 的使用 539 17.2.4 其他额外的功能项目 542 17.2.5 安全性设置:防火墙、selinux 与黑名单文件 544 17.3 客户端的使用与测试 545 17.3.1 浏览器的设置:firefox & ie 545 17.3.2 测试proxy 失败的画面 548 17.4 服务器的其他应用设定 549 17.4.1 上层 proxy 与获取数据分流的设定 549 17.4.2 proxy 服务放在 nat 服务器上:透明代理(transparent proxy) 551 17.4.3 proxy 的认证设置 553 17.4.4 末端日志分析:sarg 555 17.5 重点回顾 557 17.6 参考数据与延伸阅读 558 第18章  网络驱动器设备:iscsi 服务器 559 18.1 网络文件系统还是网络驱动器 560 18.1.1 nas 与 san 560 18.1.2 iscsi接口 561 18.1.3 各组件相关性 562 18.2 iscsi target 的设置 564 18.2.1 所需软件与软件结构 564 18.2.2 iscsi target 的实际设置 565 18.3 iscsi initiator 的设置 570 18.3.1 所需软件与软件结构 570 18.3.2 iscsi initiator 的实际设置 570 18.3.3 一个测试范例 574 18.4 重点回顾 576 18.5 参考数据与延伸阅读 577 第四篇  常见因特网服务器的搭建 第19章  主机名控制者:dns 服务器 580 19.1 什么是 dns 581 19.1.1 用网络主机名取得 ip 的历史渊源 581 19.1.2 dns 的主机名对应 ip 的查询流程 584 19.1.3 合法 dns 的关键:申请区域查询授权 590 19.1.4 主机名交由 isp 代管还是自己设置 dns 服务器 591 19.1.5 dns 数据库的记录:正解、反解、zone 的意义 592 19.1.6 dns 数据库的类型:hint、master/slave 架构 594 19.2 client 端的设置 596 19.2.1 相关配置文件 596 19.2.2 dns 的正、反解查询命令:host、nslookup、dig 597 19.2.3 查询域管理者相关信息:whois 602 19.3  dns 服务器的软件、种类与caching only dns服务器设置 604 19.3.1 搭建 dns 所需要的软件 604 19.3.2 bind 的默认路径设置与 chroot 604 19.3.3 单纯的 cache-only dns 服务器与 forwarding 功能 605 19.4 dns 服务器的详细设置 611 19.4.1 正解文件记录的数据(resource record,rr) 612 19.4.2 反解文件记录的 rr 数据 616 19.4.3 步骤一:dns 的环境规划 617 19.4.4 步骤二:主配置文件 /etc/named.conf 的设置 618 19.4.5 步骤三:最上层 . (root) 数据库文件的设置 620 19.4.6 步骤四:正解数据库文件的设置 620 19.4.7 步骤五:反解数据库文件的设置 622 19.4.8 步骤六:dns 的启动、查看与防火墙 623 19.4.9 步骤七:测试与数据库更新 624 19.5 协同工作的 dns:slave dns 及子域授权设定 626 19.5.1 master dns 权限的开放 626 19.5.2 slave dns 的设置与数据库权限问题 628 19.5.3 配置子域 dns 服务器:子域授权课题 630 19.5.4 依不同接口给予不同的 dns 主机名:view 功能的应用 632 19.6 dns 服务器的高级设定 635 19.6.1 架设一个合法授权的 dns 服务器 635 19.6.2 lame server 的问题 637 19.6.3 利用 rndc 命令管理 dns 服务器 638 19.6.4 搭建动态 dns 服务器:让你成为 isp 642 19.7 重点回顾 645 19.8 参考数据与延伸阅读 646 第20章  www 服务器 647 20.1 www的简史、资源以及服务器软件 648 20.1.1 www 的简史、html 与标准制订(w3c) 648 20.1.2 www 服务器与浏览器所提供的资源定位(url) 651 20.1.3  www 服务器的类型:系统、平台、数据库与程序(lamp) 653 20.1.4 https:加密的网页数据(ssl)及第三方证书机构 655 20.1.5 客户端常见的浏览器 656 20.2 www(lamp)服务器基本配置 657 20.2.1 lamp 所需软件与其结构 657 20.2.2 apache 的基本设定 660 20.2.3 php 的默认参数修改 668 20.2.4 启动 www 服务与测试 php 模块 670 20.2.5 mysql 的基本设定 672 20.2.6 防火墙设置与 selinux规则的放行 676 20.2.7 开始网页设计及安装架站软件,如 phpbb3 677 20.3 apache 服务器的高级设定 678 20.3.1 启动用户的个人网站(权限是重点) 678 20.3.2 启动某个目录的 cgi(perl)程序执行权限 680 20.3.3 找不到网页时的显示信息通知 681 20.3.4 浏览权限的设定操作(order、limit) 683 20.3.5 服务器状态说明网页 686 20.3.6 .htaccess 与认证网页设定 687 20.3.7 虚拟主机的设定(重要!) 691 20.4 日志文件分析以及 php 强化模块 694 20.4.1 php 强化模块(eaccelerator)与 apache 简易性能测试 694 20.4.2 syslog 与 logrotate 697 20.4.3 日志文件分析软件:webalizer 698 20.4.4 日志文件分析软件:awstats 700 20.5 建立连接加密网站(https)及防整站下载脚本 702 20.5.1 ssl 所需软件与证书文件及默认的 https 702 20.5.2 拥有自制证书的https 704 20.5.3 将加密首页与非加密首页分离 706 20.5.4 防整站下载软件 707 20.6 重点回顾 708 20.7 参考数据与延伸阅读 709 第21章  文件服务器之三:ftp 服务器 710 21.1 ftp 的数据传输原理 711 21.1.1 ftp 功能简介 711 21.1.2 ftp 的工作流程与使用到的端口 712 21.1.3 客户端选择被动式连接模式 714 21.1.4 ftp 的安全性问题与替代方案 716 21.1.5 开放什么身份的用户登录 716 21.2 vsftpd 服务器基础设置 718 21.2.1 为何使用 vsftpd 718 21.2.2 所需要的软件以及软件结构 719 21.2.3 vsftpd.conf 配置值说明 721 21.2.4 vsftpd 启动的模式 726 21.2.5 centos 的 vsftpd 默认值 727 21.2.6 针对实体账号的设定 729 21.2.7 仅有匿名登录的相关设置 734 21.2.8 防火墙设置 738 21.2.9 常见问题与解决之道 739 21.3 客户端的图形接口 ftp 连接软件 740 21.3.1 filezilla 740 21.3.2 通过浏览器取得 ftp 连接 744 21.4 让 vsftpd 增加 ssl 的加密功能 744 21.5 重点回顾 747 21.6 参考数据与延伸阅读 748 第22章  邮件服务器:postfix 749 22.1 邮件服务器的功能与工作原理 750 22.1.1 电子邮件的功能与问题 750 22.1.2 mail server 与 dns 之间的关系 751 22.1.3 邮件传输所需要的组件(mta、mua、mda)以及相关协议 754 22.1.4 用户收信时服务器端所提供的相关协议: mra 757 22.1.5 relay 与认证机制的重要性 759 22.1.6 电子邮件的数据内容 760 22.2 mta 服务器:postfix基础设定 761 22.2.1 postfix 的开发 761 22.2.2 所需要的软件与软件结构 762 22.2.3 一个邮件服务器的设定案例 764 22.2.4 让 postfix 可监听 internet 来收发邮件 764 22.2.5 邮件发送流程与收信、relay 等重要概念 767 22.2.6 设定邮件主机权限与过滤机制:/etc/postfix/access 770 22.2.7 设定邮件别名: /etc/aliases、~/.forward 770 22.2.8 查看邮件队列信息:postqueue、mailq 773 22.2.9 防火墙设置 775 22.3 mra 服务器:dovecot 设定 775 22.3.1 基础的 pop3/imap 设定 775 22.3.2 加密的 pop3s/imaps 设定 776 22.3.3 防火墙设置 777 22.4 mua 软件:客户端的收发邮件软件 777 22.4.1 linux mail 778 22.4.2 linux mutt 781 22.4.3 好用的跨平台(windows/linux x)软件:thunderbird 784 22.5 邮件服务器的高级设定 788 22.5.1 邮件过滤一:用 postgrey 进行非正规mail server 的垃圾邮件过滤 788 22.5.2 邮件过滤二:关于黑名单的过滤机制 792 22.5.3 邮件过滤三:基础的邮件过滤机制 793 22.5.4 非信任来源的 relay:开放 smtp 身份认证 795 22.5.5 非固定 ip 邮件服务器的福音:relayhost 799 22.5.6 其他设置小技巧 800 22.6 重点回顾 803 22.7 参考数据与延伸阅读 804
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页