第一章:走进Linux的世界
linux运维:传统IT,物理服务器,传统机房维护
云计算运维:阿里云,腾讯云,需要学习更多的技术,公司给到的待遇也就更多
Linux就是一个操作系统
操作系统,英文名称Operating System,简称OS,是计算机系统中必不可少的基础系统软件,它是应用程序运行以及用户操作必备的基础环境支撑,是计算机系统的核心。
自由软件之父:理查德·斯托曼
Linux内核发明人:林纳斯·本纳第克特·托瓦兹
CentOS 全称:Community Enterprise Operating System 社区企业操作系统 免费的商业软件
RHCA(高级)红帽认证架构师
RHCE(中级)红帽认证工程师
RHCSA(初级)红帽认证系统管理员
真正的服务器分为三种:塔式服务器 机架式服务器 刀片式服务器
第二章:文件和用户管理
文件管理
Linux目录结构简介:
Linux目录结构简洁 以单根的形式组织文件“/” 。
系统管理员:root(中文:“根”)
系统目录(文件夹):根:/
一级目录功能:
/bin 存放二进制可执行文件(ls,cat,mkdir等),常用命令一般都在这里。
/etc 存放系统管理和配置文件
/home 存放所有用户文件的根目录,是用户主目录的基点,比如用户user的主目录就是/home/user,可以用~user表示
/usr 用于存放系统应用程序,比较重要的目录/usr/local 本地系统管理员软件安装目录(安装系统级的应用)。这是最庞大的目录,要用到的应用程序和文件几乎都在这个目录。
/root 超级用户(系统管理员)的主目录(特权阶级^o^)
/sbin 存放二进制可执行文件,只有root才能访问。这里存放的是系统管理员使用的系统级别的管理命令和程序。如ifconfig等。
/dev 用于存放设备文件。
/mnt 系统管理员安装临时文件系统的安装点,系统提供这个目录是让用户临时挂载其他的文件系统。
/boot 存放用于系统引导时使用的各种文件。(启动文件)
/tmp 用于存放各种临时文件,是公用的临时文件存储点。
/var 用于存放运行时需要改变数据的文件,也是某些大文件的溢出区,比方说各种服务的日志文件(系统启动日志等。)等。
文件类型:(在linux中目录就是文件夹)
- 普通文件(文本文件,二进制文件,压缩文件,电影,图片…)
d 目录文件(蓝色)
b 设备文件 (块设备) 存储设备硬盘,U盘/dev/sda,/dev/sda1c 设备文件(字符设备)打印机,终端/dev/tty1
l 链接文件(淡蓝色)
s 套接字文件
p 管道文件
文件管理命令:
pwd:显示当前目录。
ls(list):列出目录内容。
ls -l :列出详细信息
ls -a :列出全部文件信息,包括隐藏文件
ls -d:列出目录详细信息
ls -h:列出文件信息并显示文件大小单位
cd(change directory) :改变目录(切换目录)
touch:创建文件
touch . . file.txt . file.txt 创造的两个文件. . file.txt与 . file.txt 均为隐藏文件
mkdir:创建目录(文件夹)
mkdir -p :创建连续的目录,一级一级的创建(当创建目录没有上一级时,自动创建)
mkdir -v :将创造文件的过程显示出来
mkdir -p /home/{qianfeng/{dir1,111} , nizhan} 在home下面创了qianfeng和nizhan两个文件,同时在qianfeng下创造了dir1和111这两个文件
cp (copy):复制
用法:cp 原文件路径 目标文件夹
cp -r:递归复制。例:cp -r dira dirb (复制dira目录下的所有内容到dirb)。
mv(move):移动
语法: mv 原文件路径 目标文件路径
进阶用法:
mv /home/a1/b1 /tmp/d222 将 home下面的a1文件里的b1移动到tmp下面,并改名为d222
mv /tmp/d222 /tmp/d333 将tmp下面的文件d222改名为d333(不移动只改名)
rm(remove):删除
语法 rm -rf(慎用) 文件或目录的路径
rm -r:递归删除目录 -f(force):强制
-v:详细过程 * :通配符
rm -rf:删除所有
rm -rf /home/a1/b1 /home/a1/c2 将home下面a1里的文件b1和文件c2全部删掉
cat:查看文件内容
cat 全部 more 翻页 head 头部 tail 尾部
grep 过滤关键字
head -2 /1.txt 查看文件1.txt的开头两行
tail -2 /1.txt 查看文件1.txt的末尾两行
vim:修改文件内容
图形编辑器 gedit 语法: gedit /1.txt
vim为vi的升级版
正常模式下按 “ i ” 进入到编辑模式
编辑模式下按 “ Esc ” 进入到正常模式
进入输入或取代的编辑模式:
i, I 进入输入模式(Insert mode):
i 为『从目前光标所在处输入』, I 为『在目前所在行的第一个非空格符处开始输入』。 (常用)
a, A 进入输入模式(Insert mode):
a 为『从目前光标所在的下一个字符处开始输入』, A 为『从光标所在行的最后一个字符处开始输入』。(常用)
o, O 进入输入模式(Insert mode):
这是英文字母 o 的大小写。o 为『在目前光标所在的下一行处输入新的一行』; O 为在目前光标所在处的上一行输入新的一行!(常用)
r, R 进入取代模式(Replace mode):
r 只会取代光标所在的那一个字符一次;R会一直取代光标所在的文字,直到按下 ESC 为止;(常用)
正常模式下按 “ :” 进入到末行命令模式
命令模式下按 “ Esc " 进入到正常模式 在命令模式下按 :wq 即为保存退出
正常模式下按 “ v ” 进入可视化模式
可视化模式下按 “ v /Esc "进入正常模式
在正常模式中:
yy:复制 dd:删除 前面可加数字(例:5yy) u(uodo):撤销
p:粘贴
在末行命令模式中:
:set nu 显示行号,设定之后,会在每一行的前缀显示该行的行号
:set nonu 与 set nu 相反,为取消行号!
:set list 显示控制字符
光标定位:hjkl 上下左右 0 $ 行首行尾 gg G 页首页尾(3G进入第三行)
/word 向光标之下寻找一个名称为 word 的字符串。例如要在档案内搜寻 vbird 这个字符串,就输入 /vbird 即可! (常用)
?word 向光标之上寻找一个字符串名称为 word 的字符串。
n 这个 n 是英文按键。代表重复前一个搜寻的动作。举例来说, 如果刚刚我们执行 /vbird 去向下搜寻 vbird 这个字符串,则按下 n 后,会向下继续搜寻下一个名称为 vbird 的字符串。如果是执行 ?vbird 的话,那么按下 n 则会向上继续搜寻名称为 vbird 的字符串!
N 这个 N 是英文按键。与 n 刚好相反,为『反向』进行前一个搜寻动作。 例如 /vbird 后,按下 N 则表示『向上』搜寻 vbird 。
查找替换 (s,switch:交换 g: 全局)
:范围 s/原内容/新内容/全局
:1,5 s/root/ qiangfeng/g 把1-5行的root替换成qianfeng
另存为 :w/tmp/aaa.txt 将该文件另存为tmp下的aaa.txt
临时文件: vim /1.txt
/1.txt.swap 这是因为正在修改文件1.txt 非正常(意外)退出,服务器所留的一份备份
1.查看隐藏文件 ls -a
2.使用rm 删除它即可
Linux 命令语法(可以没有选项,但一定要有参数)(空格很重要)
命令 选项 参数
ls / 默认显示根目录的内容
ls -l / 长格式显示根下的详细内容
注意:
vim是一个应用程序
cd 是另一个程序提供的命令
shell(壳,命令解释器) 一个程序
绝对路径:从根开始描述 定位文件,能找到所以的文件,路径名长
举例:/home/abc/1.txt
相对路径: . 表示当前目录 . . 表示上一级目录
Ctrl + l : 清屏
用户管理
用户组信息储存的文件:用户基本信息文件:/etc/passwd 用户密码信息文件:/etc/shasow 组信息文件:/etc/group
1.用户基本信息文件
cat /etc/passwd (/etc/passwd是用来存储Linux系统中所有用户的基本信息的配置文件。)
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
- 用户名 :登入系统的名字
- 密码(加密后的形式) 密码占位符
- 用户ID(UID) :用户的身份证号码 uid:0 特权用户 uid:1~499 系统用户 uid: 1000+ 普通用户
- 组ID(GID)
- 描述性信息
- 主目录 :登入系统时,所在的目录
- 默认Shell :命令解释器(定义密码,接收密码,执行密码)版本多,如ashell,bshell,bash等 nologin:不能登入
2.用户密码信息文件
/etc/shadow
root:$1$MYG2N :15636 :0 :99999:7 : : :
- 用户名: 对应着系统中的每一个用户账号。
- 加密密码: 存储着用户的加密密码。在大多数Linux系统中,密码采用加密算法进行加密,而不是直接存储明文密码。星号表示这个密码已经被锁定,双叹号表示这个密码已经过期。
- 上次更改密码的日期: 记录了用户上一次更改密码的日期,以天数表示,从1970年1月1日开始计算。
- 最小密码更改间隔: 规定了两次密码更改之间的最小天数。如果用户在该时间内再次尝试更改密码,则会被系统拒绝。
- 最大密码更改间隔: 规定了两次密码更改之间的最大天数。如果用户在该时间内没有更改密码,则会收到提醒消息。
- 密码过期提前警告天数: 当密码即将过期时,系统会提前给用户发送警告消息的天数。
- 密码过期后多少天账号被禁用: 如果用户在密码过期后指定的天数内没有更改密码,则其账号会被禁用。
- 账号失效日期: 如果用户账号有失效日期限制,那么该列会显示账号失效的日期。如果没有限制,该列为空。
- 保留字段: 该列目前没有使用,因此为空。
3.组信息文件
/etc/group
root:x :0 :
bin:x :1 :
wheel:x :10 :aaa
组名:组密码:组ID:组成员
用户管理:
创建用户:useradd 语法:useradd user01
列出(查询)用户基本信息:id 语法:id user01
修改(配置)密码:passwd(一个用户要有密码才能登入) 语法:passwd user01
useradd user02 -u 1503 //创建用户user02,指定uid
useradd user03 -d /aaa //创建用户user03,指定家目录
useradd --help ( –help选项用来显示useradd命令的帮助信息。通过输入useradd --help命令,可以获取更多关于useradd命令的详细说明。)
-help是一种命令参数,用于显示特定命令的帮助信息。与help命令不同,–help参数可以用于显示外部命令的帮助信息。当在终端中输入命令名称后加上–help参数,系统会显示该命令的使用说明、选项和示例等相关信息,以帮助用户了解并正确使用该命令
删除用户:userdel
语法:userdel -r user02 (-r选项表示递归删除,这意味着除了删除用户本身,还会删除与该用户关联的文件和目录。如果需要完全删除用户及其相关文件,请使用-r选项。)
修改用户属性:usermod
语法:usermod -s /sbin/nologin(shell) niuniu2 (使niuniu2用户无法登入,只有shell为/bin/bash才可以使niuniu2用户登入) usermod AA -g CC (使用户AA的基本组AA变成CC)
(-s选项用于修改用户登录后所使用的shell。通过使用usermod命令以及-s选项,可以更改用户的默认shell。)
用户组的管理:
创建组:groupadd 语法::groupadd hr -g 2000 (添加组hr,并指定gid 2000)
-G 指定用户的附加组的gid
搜索(筛选):grep 语法: grep hr /etc/group (查看/etc/group中组hr的信息 )
用户名和组名不能用纯数字,开头一定要是字母
删除组:groupdel 语法:groupdel hr
gpasswd -d BBB CCC (将用户“ BBB ”从“ CCC ”组中删除)
用户必须要有一个组(基本组)
组的类型:
基本组:随用户而创建,组名同用户名,基本组的主要作用是为用户提供默认的权限和访问控制。
附加组:除了基本组外,用户还可以属于多个附加组。附加组可以为用户提供额外的权限和访问控制。用户可以通过将自己添加到不同的附加组来获得这些额外的权限
woami:我是谁
whoami和pwd的区别:
whoami和pwd都是用于显示当前用户和当前工作目录的命令,但它们有一些区别。whoami命令用于显示当前登录的用户的用户名,而pwd命令用于显示当前所在的工作目录的路径。
提权:
永久提权:Switching users with su
普通用户没有特权,需要执行特殊命令时,使用su切换到超级管理员身份
语法:su - root 提权后可用exit登出,回到普通用户身份
临时提权:Running commands as root with sudo
用普通用户登录服务器时使用sudo可以完成部分特权指令
使用root vim /etc/sudoers
%wheel
第107行:允许wheel用户组中的用户不输入root密码的情况下,使用所有命令
语法:sudo useradd gougou10(通过临时提权创建用户gougou10)
在Linux中,按下Ctrl+C组合键的作用是发送中断信号(SIGINT)给当前正在运行的程序。这通常用于终止或中断正在运行的程序。
在Linux中,文件中以井号(#)开头的行通常被视为注释行,即被解释器或程序忽略的行。注释行用于添加对文件内容的解释、说明或备注。
第三章:用户的权限
基本权限UGO
设置权限的两个基本元素: 权限对象 权限类型
权限的三类对象:
- 属主:u
- 属组:g
- 其他人:o
- 特殊对象:a(u+g+o) all
权限的三种类型:
- 读:r=4
- 写:w=2
- 执行:x=1
更改权限
chmod:用于修改文件或目录的权限的 Linux 命令
语法:chmod u+r 1.txt / chmod 671 1.txt (通过chmod数字授权,使用户拥有读和写;组拥有读,写,执行;其他人拥有有执行的权限。)
chmod 对象(u/g/o/a)赋值符(+/-/=)权限类型(r/w/x) 文件/目录
在执行chmod -R命令时,-R选项会使改变权限操作应用到目录及其子目录中的所有内容。这样可以快速而方便地批量修改文件和文件夹的权限。(chmod -R 一般用于目录)1
-R :递归地更改目录及其内容的权限。
-v:在执行操作时显示详细信息。
ls -l file1 = ll file1
[root@localhost tmp]# ll file1
-rw-r--r--. 1 root root 0 4月 13 20:49 file1
- 类型和权限(11个) 用户(u)rwx 组(g)rwx 其他人(o)rwx 文件的权限表示。它告诉你谁可以访问这个文件以及他们可以执行的操作。
- 链接数
- 表示这个文件的所有者
- 表示这个文件的所属组
- 表示这个文件的大小
- 文件的最后修改时间
- 文件名
ls -ld /tmp :显示 /tmp 目录的详细信息
-l:以长格式显示信息,包括权限、硬链接数量、所有者、所属组、文件大小、时间戳等。
-d:仅显示目录本身的信息,而不会列出其内容(如果不使用 -d,则会列出目录中的文件和子目录的信息)。
更改属主,属组
chown:更改文件或目录的所有者,所属组
语法:chwon 用户名.组名 文件
chwon user01.hr /file1.txt //改属主、属组
chwon user01 /file1.txt //只改属主
chwon .hr /file1.txt //只改属组
(chgrp):更改文件或目录的所属组
语法:chgrp hr file1 改//属组
chgrp -R hr file1 -R递归地更改目录及其目录下文件的所属组
基本权限ACL
ACL access control list(访问控制列表)
限制用户对文件的访问
ACL文件权限管理 :设置不同用户,不同的基本权限(r、w、x)。对象数量不同。
UGO设置基本权限: 只能一个用户,一个组和其他人
语法: setfacl 设置 用户或组:用户名:权限 文件对象
setfacl -m g:hr:rwx /home/file1 将组 hr 赋予文件 /home/file1 读、写和执行的权限 -m:表示要修改现有的ACL
setfacl -m o::rw /home/file1 (允许其他用户拥有文件的读写权限)
setfacl -x u:user01 /home/file1(删除用户user01的ac权限)
setfacl -b /home/file1(删除文件file1所以的ac权限)
查看文件有哪些ACL权限 getfacl /home/file1.txt
使用watch命令监控文件和目录的变化和ACL信息
watch:用于周期性地执行指定的命令,并将其输出显示在终端上
语法:watch -n 1 ls -l 文件或目录路径 (这将每秒运行一次"ls -l"命令,并显示其输出,以便可以随时查看目录中文件的变化)
watch -n 1 getfacl 文件或目录路径 (每秒运行一次"getfacl"命令,并在终端上显示文件的ACL信息。)
ACL中的"mask"规则和权限控制的重要性
"mask" 在ACL(访问控制列表)中是一个重要的概念,它代表了一个权限掩码,用于限制ACL中各个用户或组的实际权限。掩码规则确保ACL中的权限不会超出掩码规则所定义的最大权限。
在ACL中,通常会包括以下几种权限规则:
用户(user)规则:定义了文件或目录的所有者的权限。
组(group)规则:定义了特定用户组的权限。
其他(other)规则:定义了除了所有者和特定用户组之外的其他用户的权限。
而"mask"规则的作用是确定哪些权限实际生效,以确保不会授予超出掩码规则所指定的权限的访问权限
例如,考虑以下ACL规则:
user::rwx:文件或目录的所有者有读、写和执行权限。
group::r--:特定用户组有只读权限。
other::---:其他用户没有任何权限。
mask::rwx:掩码规则,指定了最大权限为读、写和执行。
在这个示例中,虽然所有者的权限是读、写和执行,但由于在这个示例中,虽然所有者的权限是读、写和执行,但由于掩码规则设置为最大权限为读、写和执行,所以最终的权限将受到掩码规则的限制,不会超出这个范围。
掩码规则确保了ACL中的各个权限规则之间的一致性,以便更容易管理和理解文件或目录的权限。这有助于确保不会意外地授予超出预期的权限
注意:
在使用setfacl命令时出现 "Option -m incomplete" 错误时,这表示提供的ACL修改选项不完整
特殊权限
特殊位:suid
suid,(sgid)针对文件/程序时,具备临时提升权限。
suid是针对文件所设置的一个特殊的权限。功能:使调用文件的用户,临时具备属主的能力。
当s这个标志出现在文件所有者的x权限上时,此时就被称为Set UID,简称SUID。
作用:
- SUID权限仅对可执行文件有效
- 执行者对于该可执行文件需要具有x权限
- 在执行过程中,调用者会暂时获得该文件的拥有者权限
- 该权限只在程序执行的过程中有效
文件属性chattr
用途:常用于锁定某个文件,拒绝修改。
i:在文件上启用这个属性时,我们不能更改、重命名或者删除这个文件
lsattr命令是一个用来查看文件属性的命令,它可以查看文件的一些属性值,如只读、只追加、不可修改等。需要注意的是,lsattr命令只能读取扩展属性的信息,而不能修改属性。如果需要修改属性,可以使用chattr命令来实现。
进程掩码:umask
新建文件、目录的默认权限会受到umask的影响,umask表示要减掉的权限
一般umask默认值为022,其最终效果就是新创建的目录权限为755(777-022),文件权限为644(777-022-111)(系统为了保护自己,所以在创建的文件去掉了执行的权限)。只要修改了用户的umask值,就可以控制默认权限。
扩展:
在Linux中
Ctrl + C 用于立即中断并停止一个进程
Ctrl + Z用于暂停并挂起一个进程到后台
第四章:进程管理
进程管理process
静态查看进程ps
ps(process status) 进程 状态 管理器
进程是已启动的可执行程序的运行实例,进程有以下组成部分:
- 一个文件;
- 被配内存的地址空间;
- 有权限限制;
- 程序代码的一个或多个副本(也叫执行线程);
- 像人一样拥有状态;
查看所有进程(查看进程的父子关系,请观察PID和PPID)
ps -ef
字段解释:
- UID:用户ID,即进程的拥有者
- PID:进程ID
- PPID:父进程ID
- C:进程占用的CPU百分比
- STIME:进程开始启动时间
- TTY:登入者的终端机位置
- TIME:进程使用的CPU(运算)时间
- CMD:调用进程的命令
显示所有包含其他使用者的进程
ps -aux
字段解释:
USER:创建进程的用户
PID:进程ID
%CPU:进程占用CPU的百分比
%MEM:进程占用物理内存的百分比
VSZ:进程占用虚拟内存的大小(单位KB)
RSS:进程占用实际物理内存的大小(单位KB)
TTY:进程在哪个终端运行。
STAT:进程状态 ( R-run:运行 T-stop:暂停 Z-zombie:死掉的进程 S-sleep:睡眠)
START:进程开始启动的时间
TIME:进程使用的CPU(运算)时间
COMMAND:调用进程的命令
ps a 显示现行终端机下的使用程序
ps u 以用户为主的格式来显示程序状况
ps x 不以终端来区分
进程排序 语法:ps aux --sort %cpu
Gnome是一种开源的桌面环境,可以提供图形化界面与用户进行交互。
自定义显示字段:
ps axo user,ppid,%mem,command
动态查看进程top
上半部分:
第一行:top - 11:45:08 up 18:54,4 users, load average: 0.05, 0.05, 0.05 程序名-系统时间 运行时间 登录用户数 CPU负载 :1分钟 5分钟 15分钟
第二行:Tasks: 176 total, 1 running, 175 sleeping, 0 stopped,0 zombie
总进程数 运行数1 睡眠数175 停止数0 僵死数0
第三行:%Cpu(s): 0.0 us, 0.3 sy, 0.0 ni, 99.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
CPU使用占比 us用户 sy系统 ni优先级 id 空闲 wa等待 hi 硬件 si 软件 st 虚拟机
第四行:KiB Mem:3865520 total,1100000 free,580268 used,2185252 buff/cache
物理内存 K total 总共 4G free 空闲 1G used 使用 500M cache 缓存硬盘内存2G
第五行:KiB Swap:4063228 total,4063228 free,0 used,2917828avail Mem
虚拟内存K total 总共 4G free 空闲 4G used 使用 0 可用内存3G
下半部分:
PID(进程ID):每个进程都有唯一的进程ID。
USER(所属用户):显示进程所属的用户。
PR(优先级):显示进程的优先级。
NI(Nice值):显示进程的Nice值,用于调整进程的优先级。 运行
VIRT(虚拟内存):显示进程使用的虚拟内存大小。
RES(物理内存):显示进程使用的物理内存大小。
SHR(共享内存):显示进程使用的共享内存大小。
S(状态):显示进程的状态,如运行(R)、睡眠(S) 停止(T)等。
%CPU(CPU使用率):显示进程的CPU使用率。
%MEM(内存使用率):显示进程的内存使用率。
TIME+(CPU时间):显示进程累计的CPU时间。
COMMAND(命令):显示启动进程的命令。
字符介绍
h/?: 帮助 M: 按内存的使用排序 P: 按CPU使用排序 N: 以PID的大小排序 : 向后 z: 彩色,Z: 设置彩色,使用数字调整
动态查看进程 top,像windows的任务管理器
[root@qianfeng ~]# top //回车,立刻刷新。按z彩色显示,按F,通过光标设置
[root@qianfeng ~]# top -d 1 //每1秒刷新。
[root@qianfeng ~]# top -d 1 -p 10126 查看指定进程的动态信息
[root@qianfeng ~]# top -d 1 -p 10126,1 查看10126和1号进程
使用信号控制进程(给进程发送信号)
[root@qianfeng~]#kill -l //列出所有支持的信号
语法:kill 编号 信号名
1) SIGHUP 重新加载配置
2) SIGINT 键盘中断Ctrl+C
3) SIGQUIT 键盘退出Ctrl+\,类似SIGINT
9) SIGKILL 强制终止,无条件
15) SIGTERM 终止(正常结束),缺省信号
18) SIGCONT 继续
19) SIGSTOP 暂停
20)SIGTSTP 键盘暂停Ctrl+Z
进程优先级nice
nice 命令是用于调整进程的优先级的命令。它可以用来增加或降低一个进程的调度优先级,从而影响该进程在系统中的运行顺序。
进程的优先级通常用一个称为 "nice 值" 的整数来表示。Nice 值的范围通常是 -20 到 +19,其中 -20 表示最高优先级,+19 表示最低优先级。(较低的 Nice 值表示较高的优先级。)
语法:nice -n 10 some-command 这将使 some-command 运行在较低的优先级上,Nice 值为 10。(-n 选项用于指定要运行的命令的 Nice 值,以调整进程的优先级。)
renice 命令用于修改正在运行的进程的优先级。
语法:renice -n 10 -p 这将增加进程的 Nice 值,使其更低优先级。-p 选项用于指定要调整优先级的进程的进程号(PID),以告诉系统要修改哪个具体的进程的优先级。
扩展:
tty:查看当前终端的设备文件路径
df -hT:显示已挂载文件系统的磁盘空间使用信息,同时包括文件系统的类型。
sleep:让脚本或命令在执行过程中暂停一段时间,以便等待一些特定的条件、操作或时间间隔。
语法:sleep 5 (暂停脚本执行 5 秒钟) sleep 2m(暂停脚本执行 2 分钟) sleep 1h(暂停脚本执行 1 小时) sleep -s 0.5(暂停脚本执行 500 毫秒,使用 -s 指定单位为毫秒)
在Linux和Unix-like操作系统中,符号&有两种主要用途:
后台运行命令:当你在命令行中执行一个命令时,通常会等待该命令执行完毕才能继续输入下一个命令。但是,如果你在命令的末尾添加&,它会告诉系统在后台运行该命令,允许你继续输入其他命令,而不必等待当前命令完成。这在执行长时间运行的任务或启动后台进程时非常有用。
用于将命令串联:在一行命令中,
& 也可以用来将多个命令串联在一起,表示同时执行这些命令。
作业控制jobs
作业控制是一个命令行功能,也叫后台运行
jobs查看后台进程
foreground 前台进程:是在终端中运行的命令,占领终端。
语法:fg 1 (将作业1调回前台)
background 后台进程:没有控制终端,它不需要终端的交互。看不见,但是在运行。
语法:bg 1 (将挂起的作业1重新启动运行)
消灭后台进程:kill
注意, “kill 1” 和 "kill %1” 不同
前者终止PID为1的进程,后者杀死作业序号为1的后台程序。
虚拟文件系统proc
虚拟文件系统proc(采集服务器自身,内核,进程运行的状态信息)
cpu:/proc/cpuinfo 语法:cat /proc/cpuinfo
内存:proc/meminfo 语法:cat /proc/meminfo
内核:proc/cmdline 语法:cat /proc/cmdline
第五章:管道和重定向
一,重定向
date简介
date:在命令行直接输入date,可以查看目录Linux系统的时间,显示的内容:年份、月份、日 、周 、具体的时分秒及CST时区。date同时也可以修改时间,例如:date 04030301(月日时分,每个两位数)
FD简介
FD(file descriptors)文件描述符,文件句柄 进程使用文件描述符来管理打开的文件
FD是访问文件的标识,即链接文件。省去了冗长的绝对路径 0 是键盘只读, 1,2是终端可以理解是屏幕, 3+ 是文件,可读可写
echo是一个常用的命令,用于在屏幕上显示信息、显示环境变量的值、写入信息到文件等功能。它可以通过重定向符号将输出内容写入到指定的文件中。
重定向符号 ">" 用于将输出结果写入到文件中 例如,命令 “ls > file.txt” 表示将 “ls” 命令的输出结果写入到 “file.txt” 文件中。
输出重定向
标准输出重定向(>):使用 > 符号可以将命令的标准输出重定向到一个文件,如果文件不存在,则会创建该文件;如果文件已存在,则会覆盖其内容。
示例:ls >file.txt 将 ls 命令的输出保存到 file.txt 文件中。
追加输出重定向(>>):使用 >> 符号可以将命令的标准输出追加到一个文件中,如果文件不存在,则会创建该文件;如果文件已存在,则会将输出追加到文件的末尾。
示例:echo "Hello" >> file.txt 将字符串 "Hello" 追加到 file.txt 文件中。
标准错误重定向(2> 或 2>>):使用 2> 符号可以将命令的标准错误流重定向到一个文件,而2>> 用于追加标准错误到文件。
示例:command_that_generates_error 2>error.log 将命令的错误输出保存到 error.log 文件中。
同时捕获标准输出和标准错误(&> 或 &>>):
使用 &> 符号可以同时捕获命令的标准输出和标准错误流,而 &>> 用于追加到文件。
示例:command &> output_and_error.log 将命令的输出和错误信息都保存到output_and_error.log 文件中。
输入重定向发送文件
编写邮件
[root@qianfeng ~]# mail -s "ssss" alice
111
222
333
.
点代表邮作编辑已结束。
查看邮件
[root@qianfeng ~]# su alice
[alice@qianfeng ~]$ mail
Mail version 8.1 6/6/93. Type? for help.
"/var/spool/mail/alice": 1 message 1 new
>N 1 root@qianfeng,local Mon Oct 29 14:09 18/657 "ssss"&
按邮件编号:1.即可看邮件。
按q 退出。
如果已经有了现成的邮件内容,想要快速输入邮件内容,就可以用重定向创建邮件!
先准备一段邮件内容
[root@qianfeng~]#mail -s "test01" alice < word.txt
原理:利用输入重定向,把文件内容代替人为的输入。
二,管道
管道命令可以将多条命令组合起来,一次性完成复杂的处理任务
例:cat /etc/passwd | tail -3
tee管道:三通管道,即交给另一个程序处理,又保存一份副本。
例: cat /etc/passwd | tee 88.txt | tail -3 (将 /etc/passwd 文件的内容写入
88.txt 文件中,并且还会显示管道输入的最后三行内容。)
参数传递Xargs (xargs 是一个强大的工具,可以帮助你批量处理数据,但要注意在使用时确保正确处理特殊字符和文件名中的空格等特殊情况。)
管道与重定向总结:
FD:文件描述符。0,1,2,3。。。进程打开文件所用。 0 标准输入 1标准输出 2 标准错误输出 3+普通文件
1.管道 完成更复杂的功能 命令1的输出,作为命令2的输入,命令2的输出作为命令3的输入。 tee 三通。把输出保留了一个副本。 xargs 转换。把输出和输入进行格式转换。 xargs rm-rvf
2.重定向 输出重定向 > 进程产生的信息,存放到文件中。 标准正确输出:ls/home > 1.txt 标准错误输出:ls/aaaaa 2> 2.txt 标准混合: &> 3.txt 输入重定向 < 以文本内容,作为进程的标准输入
第六章:磁盘管理(上)
磁盘简介
名词:磁盘/硬盘/disk
类型(从工作原理上区分):机器——机械硬盘即是传统普通硬盘,主要由:盘片,磁头,盘片转轴及控制电机,磁头控制器,数据转换器,接口,缓存等几个部分组成。 固态—— 固态驱动器(Solid State Disk或Solid State Drive,简称SSD),俗称固态硬盘,固态硬盘是用固态电子存储芯片阵列而制成的硬盘
接口:早期IDE——现在SATAⅠ/ Ⅱ / Ⅲ
转速:5400rpm 7200 10000 15000
厂商:西部数据,希捷,三星/日立/金士顿
术语:盘片 柱面 扇区 磁道
命名:
kernel(内核)对不同接口硬盘命名方式
RHEL7/centos7:
IDE(并口) :dev/hda
SATA(串口):/dev/sda(/dev设备文件目录 sda是一个文件 : s代表sata就是串口 d代表磁盘 a表示第一块) /dev/sdb /dev/sdc
分区方式:
MBR(主引导记录Master Boot Record 是位于磁盘最前边的一段引导): MBR支持最大的磁盘容量是<2TB。设计时分配4个分区 如果希望超过4个分区,需放弃主分区,改为扩展分区和逻辑分区。
GPT(全区唯一标识分区表GUIDPartition Table 是一个实体硬盘的分区表的结构布局的标准):GPT支持大于2T的硬盘,支持128个分区
了解MBR和其限制
MBR: "Master Boot Record"(主引导记录)
分区表: MBR 包含一个 512 字节的数据块,其中包含了分区表信息。这个分区表记录了硬盘上的分区布局,包括每个分区的起始位置和大小。
引导加载程序: MBR 中的一部分是引导加载程序,通常是 GRUB 或 LILO 等引导加载程序的一部分。引导加载程序负责在计算机启动时加载操作系统。
MBR 的限制: MBR 分区表有一些限制,最主要的是它只支持最多四个主分区或三个主分区和一个扩展分区。这意味着在 MBR 分区表下,你只能创建有限数量的分区。
2TB 限制: MBR 还有一个限制是它只能管理最大为 2TB(2 * 10^12 字节)的硬盘容量。这是由于它使用的 32 位扇区地址和 32 位分区大小字段的限制。
管理磁盘
管理磁盘流程三部曲:新硬盘:分区(MBR或者GPT)---- 格式化/文件系统Filesystem ---- 挂载mount
毛坯房:隔间 ----------------------------- 放家具/打造格子柜 --------------- 加个门/目录
1.查看磁盘信息 :
ll /dev/sd*
b rw-rw---- 1 root disk 8, 0 2月 20 10:53 /dev/sda
b:block 是一个块设备文件,通常用于表示硬盘或其他块设备。
lsblk
名称 设备类型 序号 是否可移动设备 大小 是否只读 磁盘或分区 挂载点
2.创建分区
启动分区工具: fdisk /dev/sdb
进入会话模式:1.(欢迎界面,输入帮助指令或操作指令)敲击字母“n” 键
2.(请选择主分区,或扩展分区)敲击字母“p”键
3.(选择分区号)敲击数字“1”键
4.(选择磁盘开始的扇区)敲击回车键
5. (选择磁盘结束的扇区,即分区大小) 输入“+2G”后回车 实际环境根据磁盘划分,如4T磁盘,可以500G一个分区
6.(已经完成2G大小分区记录,但未生效)
7. 输入w保存分区信息,自动退出分区工具
刷新分区表:partprobe /dev/sdb
查看分区结果:fdisk -l /dev/sdb (-l 是 fdisk 命令的选项,代表 "list",表示列出指定设备的分区信息。 )或是使用lsblk也可以查看
结论:划分磁盘完毕,/dev/adb1
3.创建文件系统
mkfs.ext4 /dev/sdb1 (make file system extend4 dev/sdb1 创造 文件 系统 扩展文件系统第四代,是文件系统的类型 第二块串口硬盘的第一个分区,准备格式化了) 新创建的分区,sdb2,sdb3都要格式化
4.挂载mount
手动挂载:创建挂载点,一个分区一个挂载点
mkdir /mnt/disk1
mount -t ext4 /dev/sdb1 /mnt/disk1 (-t ext4:这个部分指定了文件系统的类型,这里是ext4。)
5.查看挂载信息
df -hT (显示Linux系统中所有已挂载分区的磁盘空间使用情况)
分区 文件系统 大小 占用 空闲 占比 挂载点
-h 将磁盘空间以人类可读的方式显示,即以K、M、G为单位。
-T 用于显示每个分区的文件系统类型。
MBR分区表中的扩展分区和逻辑分区详解
如果需要更多的分区,可以将其中一个主分区划分为扩展分区,然后在扩展分区内创建逻辑分区。
扩展分区: 扩展分区本身不包含文件系统数据,它只是一个容器,可以包含多个逻辑分区。扩展分区允许你绕过 MBR 的主分区限制,将一个主分区划分为多个逻辑分区,从而使你能够创建更多的分区。通常,你只能有一个扩展分区,但可以在其中创建多个逻辑分区。
逻辑分区:逻辑分区是在扩展分区内创建的分区。它们是用于存储数据的实际分区,可以包含文件系统和文件。你可以创建多个逻辑分区,取决于扩展分区的大小和你的需求。
分区顺序:在扩展分区中创建的逻辑分区的数量和大小没有严格限制,但它们的顺序很重要。每个逻辑分区都有一个唯一的编号(通常从 5 开始),这个编号用于标识逻辑分区。
使用逻辑分区: 逻辑分区可以像主分区一样用于存储数据,安装操作系统,或者其他存储需求。你可以在逻辑分区上创建文件系统,并将文件存储在其中,就像在主分区上一样。
扩展分区本身不能直接挂载,因为它不包含文件系统数据。扩展分区的主要目的是允许创建逻辑分区。操作者需要挂载逻辑分区而不是扩展分区来访问数据。扩展分区充当了容器的角色,让操作者能够创建多个逻辑分区并在其中挂载文件系统。逻辑分区是在扩展分区内创建的实际分区,它们可以包含文件系统和数据。逻辑分区可以像主分区一样挂载。
扩展:
在Linux系统中,文件类型通常由一个字符表示,并且有多种可能的类型。以下是一些常见的文件类型及其解释:
d:目录(Directory)
-:普通文件(Regular File)
1:符号链接(Symbolic Link)
c:字符设备文件(Character Device)
b:块设备文件(Block Device)
p:命名管道(Named Pipe)
s:套接字文件(Socket)
partprobe 命令用于通知操作系统内核关于存储设备分区表的更改,而无需重新启动系统。
语法:partprobe /dev/sdb
交换分区管理Swap
简介:
交换分区Swap是计算机用于临时存储数据的特殊分区,通常用于支持操作系统的虚拟内存系统。
交换分区对于系统性能和稳定性非常重要,它允许系统在内存不足时继续运行
交换分区大小: 通常,交换分区的大小应该至少等于物理内存的大小,以确保足够的虚拟内存空间。然而,具体的大小取决于系统的需求和用途。
增加交换分区:
1.准备分区:
准备将/dev/sde磁盘,划分为1G分区为例
划分分区后,将类型设置为82(按t)
[root@server0 ~]# fdisk /dsv/sde
[root@server0~]# partprobe /dev/sde
[root@server0~]#ll /dev/sde*
brw-rw----. 1 root disk 253, 16 12月 6 10:18 /dev/sde
brw-rw----. 1 root disk 253, 1 7 12月 6 10:18 /dev/sde1
2.格式化: mkswap /dev/sde1 (mkswap 命令用于创建 Linux 系统中的交换分区。)
3.挂载:swapon /dev/sdc1 (swapon用于激活交换分区或交换文件,以扩展系统的虚拟内存。)
4.验证:free -m
查看 Linux 操作系统中内存使用情况:free -m (-m用于指定以兆字节(MB)为单位显示内存使用情况,而不是默认的字节单位)
free -m 命令通常会返回以下信息:总内存(Total) 已用内存(Used) 空闲内存(Free) 缓冲区内存(Buffers) 缓存内存(Cache)
扩展:
reboot:是一个用于重新启动计算机或服务器的命令。
init 6:是一种在Linux系统中用于重新启动计算机的命令。这个命令通常在终端或命令行界面中执行,并需要管理员或超级用户权限,因为它会影响整个系统。
逻辑卷LVM
深入了解LVM
LVM 提供了更强大的磁盘管理功能,使管理员能够更灵活地管理存储资源,而无需依赖于基本磁盘的传统分区方法。
特点:随意扩张大小
术语:PV:物理卷(Physical Volume)物理卷是物理磁盘或分区的抽象,可以被添加到LVM卷组中。LVM 使用物理卷来管理底层磁盘存储。
VG:卷组(Volume Group,)卷组是一个或多个物理卷的集合,它们被组合在一起以提供更大的存储池。卷组是逻辑卷的创建基础。
LV:逻辑卷(Logical Volume,)逻辑卷是在卷组上创建的虚拟卷,可以被视为类似于传统分区的存储单元。逻辑卷的大小和数量可以根据需要动态调整。
一. 创建LVM
1.pv:pvcreate /dev/sdc(将物理磁盘转换成物理卷-PV)
2.vg:vgcreate vg1 /dev/sdc(创建卷组-VG)在Linux中创建一个名为"vg1"的新卷组
3.lv:lvcreate -L 200M -n lv2 vg1 (指定大小M,G 创建逻辑卷 -L大小 -n名字 vg1组名)
4.创建文件系统并挂载 mkfs.ext4 /dev/vg1/lv2 /dev/卷组名/逻辑卷名
5.创建挂载点 mkdir /mnt/lv2
6.挂载 mount /dev/vg1/lv2 /mnt/lv2
二:VG管理
扩大VG vgextend:
创建PV:pvcreate /dev/sdd1
扩展VG:vgextend vg1 /dev/sdd1
三. LV扩容
扩大LV lvextend:
查看vg空间:vgs
扩容LV: lvextend -L +200M /dev/vg1/lv2
FS扩容:resize2fs /dev/vg1/lv2
扩展:
列出所有物理卷及其相关信息:pvs
列出系统上所有的逻辑卷及其相关信息:lvs
第七章:磁盘管理(下)
文件系统详解:EXT4文件系统
简介:
类型:索引(index)文件系统
系统限制:Ext3:文件系统最大16TB Ext4:文件系统最大16TB XFS:文件系统最大100TB.
名词:inode:记录文件的属性(文件的元数据metadata) 例如:大小,权限属主,属组,连接数,块数量,块的编号, 一个文件占用一个inode同时记录此文件数据所在的block numbber,inode大小为128 bytes
block:存储文件的实际数据。 实际存储文件的内容,若文件较大,会占用多个block,block大小 为默认为4K
superblock:1.block与inode的总量; 2.未使用与已使用的inode/block数量
磁盘空间的限制根据inode和block两方面,请清理掉填满的分区,避免不必要的报错(inode决定了文件的数量,block决定了文件的大小)
ll -i 文件名 :查看文件的详细信息以及检查文件的inode号码
df -i:显示文件系统的inode使用情况
文件链接:
一.符号链接:symbolic link /软连接
示例:
1.创建一个文件,并输入内容。
[root@qianfeng ~]# echo 111 > /file1
2.创建一个软连接。
[root@qianfeng ~]# In -s /file1 /home/file11 (将文件或目录 "/file1" 链接到 "/home/file11" "ln" 是一个用于创建链接(硬链接或符号链接)的命令。 -s: 这个选项表示创建一个符号链接即软链接)
3观察软连接 。
[root@qianfeng ~]# ll /home/file11 Irwxrwxrwx 1 root root 6 Dec 20 17:58 /home/file11 - > /file1
4观察软连接文件。
[root@qianfeng ~]# ll /file1 /home/file11
-rw-r--r-- 1 root root 4 Dec 20 17:57 /file1
lrwxnwxrwx 1 root root 6 Dec 20 17:58 /home/file11 - > /file1
5查看两个文件,内容一致。
[root@qianfeng ~]# cat /filel
111
[root@qianfeng~]# cat /home/file11
111
6删除源文件,软连接闪烁,不可用。
[root@qianfeng ~]# rm -rf /file1 [root@qianfeng ~]# ll /home/file11 Irwxrwxrwx 1 root root 6 Dec 20 17:58 /home/file11 - > /filel
总结:软连接像快捷方式,可以对文件和目录做软连接。软连接记录的只是源文件的绝对路径。软连接失去源文件不可用。
二.硬链接:
1.创建分区分区硬链接成功,创建不同分区硬链接失败
[root@qianfeng ~]# echo 222 > /file2
[root@qianfeng ~]# In /file2 /file2-h1
[root@qianfeng ~]# In /file2 /home/file2-h2
2硬链接的inode号相同,但并不占用block。使用df-k观察硬链接数量无变化。
3 不允许将硬链接指向目录
总结:硬链接只能针对文件做,不能对目录做 硬链接只能在同分区做。
RAID(了解):
RAID:廉价磁盘冗余阵列(Redundant Array of Independent Disks )
作用:容错、 提升读写速率
类型:
RAID0:条带集 2块磁盘以上,读写速率快100%*N,但不容错
RAID1:镜像卷(镜像集),两块磁盘,容量50%,读写速率一般,容错
RAID5:带奇偶校检条带集 3块磁盘以上,利用率(n-1)/ n 读写速率快,容错
不同场景RAID的使用:
硬RAID:需要RAID卡有自己的CPU,处理速度快,有电池和无电池。
软RAID:通过操作系统实现,比如Windows、Linux
软RAID示例
1.准备4块硬盘
[root@qianfeng ~]# Il /dev/sd* RAID5:(3块数据盘)+ (1块热备硬盘)
brw-rw---- 1 root disk 8, 48 Jan 13 16.07 /dev/sdd
brw-rw---- 1 root disk 8, 64 Jan 13 16:07 /dev/sde
brw-rw---- 1 root disk 8, 80 Jan 13 16:07 /dev/sdf
brw-rw---- 1 root disk 8, 80 Jan 13 16:07 /dev/sdg
2.创建RAID
[root@qianfeng ]# yum -y install mdadm //确保mdadm命令可用 [root@qianfeng ]# mdadm -C /dev/md0 -l5 -n3 -x1 /dev/sd{d,e,f,g}
查看RAID信息 [root@qianfeng~]# mdadm -D /dev/md0 //-D 查看详细信息-C 创建RAID /dev/md0 第一个RAID设备 -l5 RAID5 -n RAID成员的数量 -x 热备磁盘的数量 可用空间2G
3.格式化,挂载
[root@qianfeng ~]# mkfs.ext4 /dev/md0 [root@qianfeng ~]# mkdir /mnt/raid5 (root@qianfeng ~]# mount /dev/md0 /mnt/raid5 [root@qianfeng ~]# cp -rf /etc/ /mnt/raid5/etc1
4.查看RAID信息
[root@qianfeng~]# mdadmv -D /dev/md0 //-D 查看详细信息
5. 模拟一块硬盘损坏,并移除
终端一
[root @qianfeng ~]# watch -n0.5 'mdadm -D /dev/md0 |tail -10' //watch持续查看终端
终端二
[root@qianfeng ~]# mdadm /dev/ma0 -f /dev/sde -r /dev/sde //模拟坏了并移除 -f ---fail -r ---remove
第八章:文件查找
文件查找:
which :用于查找指定命令的位置(这个命令对于确定特定命令是否已安装以及它的位置非常有用。如果命令不存在,它将不会返回任何输出。)或者使用"whereis"
find:用于在文件系统中查找文件和目录
语法:find [path...] [options] [expression] [action]
命令 路径 选项 表达式 动作
按文件名找:
[root@qianfeng ~]# find /etc -name "hosts"
[root@qianfeng ~]# find /etc -iname "hosts"
[root@qianfeng ~]# find /etc -iname "host*" -i 忽略大小写
结果输出 /etc/hosts 文件查找成功
按文件大小:
[root@qianfeng ~]# find /etc -size +5M (在 /etc 目录下查找文件大小大于5兆字节的文件。)
[root@qianfeng ~]# find /etc -size 5M (在 /etc 目录下查找文件大小等于5兆字节的文件。)
[root@qianfeng ~]# find /etc -size -5M (在 /etc 目录下查找文件大小小于5兆字节的文件。)
指定查找的目录深度:
[root@qianfeng ~]# find / -maxdepth 3 -a -name "ifcfg-en*"
[root@qianfeng ~]# find / -maxdepth 4 -a -name "ifcfg-en*"
按文件属主,属组找:
[root@qianfeng ~]# find /home -user jack //属主是jack的文件
[root@qianfeng ~]# find /home -group hr //属组是hr组的文件
按文件类型:
[root@qianfeng ~]# find /tmp -type f (file普通文件)
[root@qianfeng ~]# find /dev -type b (块设备文件)
按文件权限:
[root@qianfeng ~]# find . -perm 644 -ls 在当前目录(表示为 .)以及其子目录中查找文件权限为 644 的文件,并使用 -ls 选项来以详细列表的形式显示这些文件的信息。 -ls 是find的动作之一,精确权限
找到后处理的动作 ACTIONS:
[root@qianfeng ~]# find . -perm 644 -delete (找到后删除)
[root@qianfeng ~]# find /etc/ -name "ifcfg*" -ok cp -rvf { } /tmp \; (在 /etc/ 目录及其子目录中查找以 "ifcfg" 开头的文件,并对每个找到的文件执行一个交互式操作,即复制这些文件到 /tmp 目录中。) /etc/ :指定起始搜索目录为/etc/
-name "ifcfg*":表示搜索文件名以 "ifcfg" 开头的文件。
-ok:这个选项表示对每个找到的文件执行交互式操作。在执行操作之前,命令会要求你确认是否要执行该操作。
cp -rvf {} /tmp:这是要执行的操作。{} 是一个占位符,会被找到的文件名替换。具体来说,{}会被替换为每个找到的文件的路径,然后cp -rvf 命令会将这个文件复制到 /tmp 目录中。-r 选项表示递归复制,-v 选项表示显示详细的复制过程,-f 选项表示强制执行操作而不询问确认。
\;:表示命令的结束。
扩展:
alias:用于创建或显示命令别名
创建别名: alias 别名='实际命令' 例:alias ll='ls -l' (然后,每当你在终端中输入 "ll",实际上会执行 "ls -l" 命令。)
删除别名:删除一个别名,可以使用 "unalias" 命令,后面跟着要删除的别名名称 例:unalias ll (这将删除之前创建的 "ll" 别名。)
文件打包及压缩:
tar命令是Unix/Linux系统中备份文件的可靠方法,几乎可以工作于任何环境中,它的使用权限是所有用户。建议针对目录
打包,压缩:
语法:tar 选项 压缩包名称 源文件
===打包,压缩===
# tar -cf etc.tar /etc (-cf : 是tar命令的选项,用于指定要创建的归档文件的名称。)执行此命令后,/etc 目录及其内容将被打包成一个名为 etc.tar 的压缩文件,该文件将保存在当前工作目录中。
# tar -czf etc-gzip.tar.gz /etc/ //z是gzip
# tar -cjf etc-bzip.tar.bz /etc/ //j是bzip
# tar -cJf etc-xzip.tar.xz /etc/ //J是xzip
观察三个包的体积。
# lI -h etc*
-rw-r--r--. 1 root root 11M 10月 14 10:07 etc-gzip.tar.gz
-rw-r--r--. 1 root root 8.9M 10月 14 10:08 etc-bzip.tar.bz
-rw-r--r--. 1 root root 7.6M 10月 14 10:08 etc-xzip.tar.xz
压缩速度和压缩体积成反比。
解压,解包:
查看 # tar -tf etc.tar //t查看f文件名
解压缩:
# tar -xf etc3.tar.xz //简单粗暴
# tar -xvf etc2.tar.bz2 -C /tmp(执行这个命令后,etc2.tar.bz2 文件将被解压缩到 /tmp 目录中。) //-C,它告诉 tar 在解压缩时切换到指定目录 /tmp。解压缩的内容将被放置在 /tmp 目录下。
扩展:
wc:用于统计文件中的字数、行数和字符数。常用的选项包括:
-l:仅显示行数(line count)。
-w:仅显示单词数(word count)。
-c:仅显示字符数(character count)。
第九章:软件管理
RPM包管理
概述:RPM Package Manager(原Red Hat Package Manager,现在是一个递归缩写)由Red Hat 公司提出,被众多 Linux发行版所采用 也称二进制(binary code)无需编译,可以直接使用 无法设定个人设置,开关功能 软件包示例(注意后缀):mysql-community-common-5.7.12-1.el7.x86_64.rpm
认识RPM包:
zip-3.0-11.el7.x86_64.rpm
wget-1.14-15.el7.x86_64.rpm
tcpdump-4.9.0-5.el7.x86_64.rpm
注释: zip - 3.0-11. el7. x86_64. rpm
软件包名 zip 版本号(Version) 3.0-11 发布版本(Release5/6/7) el7(enterprise linux7) 系统平台(32/64) x86_64 文件后缀 rpm
YUM工具
简历:Yum(全称为Yellow dog Updater, Modified) 是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器。 基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。
1.YUM本地源:系统安装光盘
目的:通知linux服务器,通过本机的系统光盘获得软件包,并安装软件
0.观察YUM核心配置目录 :
记住这个目录/etc/yum.repos.d/
打开一个*.repo 观察国外地址(下载速度慢)
1.备份移除官方YUM库:mv /etc/yum.repos.d/* /tmp
2.编写本地YUM库配置文件:
[root@localhost ~]# vim /etc/yum.repos.d/dvd.repo
[dvd]
name= dvd
baseurl=file:///mnt/
gpgcheck=0
注释:
/etc/yum.repos.d/是YUM下载地址库目录
[dvd]某一个库的名称,中括号,是必须的
name=dvd是库的说明,name是必须的
baseurl=file:///mnt/cdrom下载库的具体地址.重要gpgcheck=0是关闭校验
一定要多检查检查,很容易打错字
3.挂载安装光盘:
一定要记得把光盘放到服务器上,通电
[root@localhost ~]# mkdir /mnt/cdrom
[root@localhost - ]# vim /root/.bashrc
mount /dev/cdrom /mnt/cdrom
4.使用YUM安装好卸载程序:
[root@localhost ~]#yum install -y httpd 安装软件
[root@localhost ~]#systemctI start httpd 启动软件
[root@localhost~]#systemctl stop firewalld 关闭防火墙
[root@localhost ~]#systemctl disable firewalld 禁用防火墙开机自启
5.模拟客服机访问:
打开浏览器,输入网站服务器的IP地址。http://127.0.0.1,验证网站程序部署成功。
2.使用YUM管理RPM包:
安装:
全新安装:[root@localhost ~]# yum -y install httpd vsftpd (yum 主命令 -y 自动确认 install 安装 httpd 软件包1 vsftpd 软件包2 软件包N)
重新安装:当软件缺失文件,可尝试重新安装 [root@localhost ~]# yum -y reinstall httpd (reinstall 重新安装)
升级安装:[root@localhost ~]# yum -y update httpd (升级一个程序httpd)
yum -y update (检查系统中已安装的软件包是否有可用的更新版本,并自动安装这些更新。 -y 选项会自动确认更新,)
查询:
查询HTTP程序:yum list httpd 带@是已经安装的。
卸载:
yum -y remove httpd
扩展:
init 6:用于重新启动系统,运行 init 6 命令需要具有管理员权限或root权限,因为它涉及到系统级操作。
init 0:用于关机或关闭计算机。运行 init 0 会启动系统的关机过程,停止所有进程和服务,并最终关闭计算机。
RPM工具
前言:
1.管理红帽系统/centos系统,rpm包的基本工具
2.YUM功能相同
安装(i):
先找到安装包 [root@localhost ~]# cd /mnt/cdrom/Packages [root@localhost Packages]# rpm -ivh wget-1.14-15.el7 x86_64.rpm(-i:安装一个 RPM 包。 -i 参数告诉 rpm 命令执行安装操作。 -v:启用详细模式(verbose),它会显示正在进行的安装过程中的详细信息,包括安装的文件和进度。 -h:显示进度条。它会在终端中显示一个进度条,以指示安装进度。)
提示信息:警告:wget-1.14-18.el7.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID f4a80eb5: NOKEY
准备中... ################################# [100%]
软件包 wget-1.14-18.el7.x86_64 已经安装
查询(q):
[root@localhost Packages]# rpm -q wget wget-1.14-15.el7.x86_64 看到软件包的名字,就说明rpm-q查询成功,已经安装软件。
卸载(e):
rpm -evh wget-1.14-15.el7.x86_64
再次查询,发现已经卸载
[root@localhost Packages]# rpm -q wget-1.14-15.el7.x86_64 未安装软件包 wget-1.14-15.el7.x86 64
源码包管理:
source code 需要经过GCC,C++编译环境编译才能运行
可以设定个人设置,开关功能
配置复杂
软件包示例:nginx-1.8.1.tar.gz
认识源码包:包名 nginx 版本号 -1.8.1 压缩格式 .tar.gz
获得源码包:
官方网站,可以获得最新的软件包 :
Apache: www.apache.org
Nginx:www.nginx.org
Tengine: tengine.taobao.org
实际案例:
下载tengine
部署Tengine:
准备编译环境如编译器:yum -y install gcc make zlib-devel pcre pcre-devel openssl-devel
解压:[root@localhost ~ ]# useradd www
[root@localhost ~ ]# tar xvf tengine-2.2.0.tar.gz
[root@localhost ~ ]# cd tengine-2.2.0
配置: [root@localhost tengine-2.2.0 ~ ]# ./configure --user=www --group=www --prefix=/usr/local/nginx (注意空格)
(./configure: 这表示当前目录下的configure脚本,用于为接下来的编译过程配置参数。
--user=www: 这表示在编译后的软件运行时,它应该以哪个用户身份运行。在这里,它应该以www用户身份运行。
--group=www: 这表示在编译后的软件运行时,它所属的组应该是哪个。在这里,它应该属于www组。
--prefix=/usr/local/nginx: 指定软件的安装目录。当开始运行make install命令进行安装时,软件会被安装到这里指定的目录,即/usr/local/nginx。)
编译:[root@localhost tengine-2.2.0 ~ ]# make (make 命令通常在配置完成后用于编译源代码并生成可执行文件或库文件。)
安装:[root@localhost tengine-2.2.0 ~ ]# make install
启动测试:可能之前的实验,安装过httpd服务。如果直接启动nginx会有冲突。请确保关闭httpd systemctl stop httpd
[root@localhost tengine-2.2.0 ~ ]# /usr/local/nginx/sbin/nginx
[root@localhost tengine-2.2.0 ~ ]# systemctl stop firewald (关闭防火墙)
使用浏览器访问本机的IP或http:///127.0.0.1,如果能看到NGINX的网页,说明部署成功。
扩展:
127.0.0.1 是一个特殊的IP地址,通常称为 "本地回环地址" 或 "环回地址"。它有以下特点和用途:
1.代表本地主机:127.0.0.1 用于表示当前计算机上的网络接口,也就是你的计算机本身。当你访问 127.0.0.1 时,实际上是在访问你自己的计算机,而不是通过网络连接到其他设备。
2.无需网络连接:使用 127.0.0.1 时,不需要经过网络适配器或路由器,数据会在本地计算机内部传输,因此非常快速。
3.用于本地开发和测试:开发人员常常在本地计算机上运行服务器和应用程序,以进行开发和测试。他们可以使用 127.0.0.1 来模拟与服务器的通信,而不涉及真实的网络。
4.用于解决DNS问题:有时,如果域名无法正常解析,可以使用 127.0.0.1 作为一个占位符,以确保不会尝试连接到无效的主机。
总之,127.0.0.1 是一个用于本地主机通信和测试的特殊IP地址,它是计算机网络开发和调试过程中的重要工具之一。
如何管理软件包:
1.清理原有YUM配置
2.下载《阿里巴巴开源镜像站》官网配置
3.更新YUM资源库 makecache(用于创建或刷新系统的软件包管理器缓存)
4.执行安装
第十章:任务计划
作用:计划任务主要是做一些周期性的任务,目前最主要的用途是定期备份数据
一次性调度执行at (Schedule one-time tasks with at.)
语法格式: at
示例:now +5min teatime tomorrow (teatime is 16:00) noon +4 davs 5pm august 3 2029 4:00 2019-11-27
1.设置一个定时创建用户的任务:(at 是一个用于在将来的某个时间点执行一次性任务的命令。)
[root@localhost ~ ]# at now +1mim
at> useradd uuuu
at> <EOT> (ctrl + d 输入完毕,提交任务)
ob 1 at Sat Mar 21 22:34:00 2019
2.查询任务
[root@localhost ~ ]# atq (用于列出当前在系统上计划执行的 at 任务列表。)
3 Thu Mar 30 09:55:00 2019 a root
3.验证结果
[root@localhost ~ ]# id uuuu (查出用户信息即可)
循环调度执行cron (Schedule recurring jobs with cron.)
cron的概念和crontab是不可分割的。crontab是一个命令,常见于Unix和Linux的操作系统之中,用于设置周期性被执行的指令。该命令从标准输入设备读取指令并将其存放于“crontab”文件中,以供之后读取和执行。
查看进程状态:
[root@qianfeng ~]# systemctl status crond.service (systemctl是一个管理 systemd 系统服务的命令。systemd 是用于启动、停止、管理和监视系统服务的初始化系统。status是 systemctl 命令的一个子命令,用于获取指定服务的状态信息。)
[root@qianfeng ~]# ps aux | grep croud (ps 命令是一个用于查看当前正在运行的进程信息的常用命令。 a:显示所有用户的进程 u:以用户友好的格式显示进程信息。 x:显示没有控制终端的进程。 |:这是管道符号,用于将 ps aux 的输出传递给下一个命令,也就是 grep。 grep crond:这是一个用于搜索文本的命令,grep 会查找输入中包含指定字符串 "crond" 的行。在这种情况下,它将查找包含 "crond" 的进程行。)
以上两种方法都可以查看进程状态
crond程序运行是计划执行的根本
cron示例:
计划任务存储位置:[root@localhost ~ ]# ls /var/spool/cron/
管理方式:1.创建计划 crontab -e Edit jobs for the current user.
2.查询计划:crontab -l List the jobs fot the current user(管理员可以使用-u username,去管理其他用户的计划任务)
3.删除计划:crontab -r Remove all jobs for the current users.
格式 Job format
* * * * * command 是一个典型的 cron 作业条目,它表示一个非常频繁运行的计划任务。具体来说,这个条目的含义是:*表示通配符,代表所有可能的值。第一个 * 表示分钟字段,即每一分钟都运行该命令。第二个 * 表示小时字段,即每小时都运行该命令。第三个 * 表示月份中的日期字段,即每天都运行该命令。第四个 * 表示月份字段,即每个月都运行该命令。第五个 * 表示星期中的日期字段,即每个星期都运行该命令。
# .------------- minute (0 - 59)
# | .----------- hour (0 - 23)
# | | .--------- day of month (1 - 31)
#| | | .------- month (1 - 12) OR jan,feb,mar,apr......
# | | | | . ----- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * command
说明:分 时 日 月 周 命令或脚本程序 六个部分用空格隔开
例:*/5 * * * * /mysql_back.sh:每隔5分钟运行 /mysql_back.sh 脚本。
0 2 1,4,6 * * /mysql_back.sh:在每个月的1日、4日和6日的凌晨2点运行脚本。
0 2 5-9 * * /mysql_back.sh:在每个月的5日到9日(包括5日和9日)的凌晨2点运行脚本。
* * * * * /mysql_back.sh:每分钟都运行脚本。
0 * * * * /mysql_back.sh:每小时的第0分钟(整点)运行脚本。
0 2 * * * /mysql_back.sh:每天的凌晨2点运行脚本。
0 2 14 * * /mysql_back.sh:每月的14日的凌晨2点运行脚本。
0 2 14 2 * /mysql_back.sh:每年的2月14日的凌晨2点运行脚本。
0 2 * * 5 /mysql_back.sh:每月的周五的凌晨两点运行脚本
0 2 2 6 5 /mysql_back.sh:书写月和日,月或日,月日周均生效,6月2日的两点整执行,6月的周五两点整执行
第十一章:日志管理
系统日志进程rsyslog
关心问题:哪类程序---》
产生的什么日志---》
放到什么地方
一.处理日志的进程:
第一类:rsyslogd:系统专职日志程序。处理绝大部分日志记录,系统操作有关的信息,如登录信息,程序启动关闭信息,错误信息
第二类:httpd/nginx/mysql:各类应用程序,可以以自己的方式记录日志
观察 rsyslogd程序: [root@localhost ~ ]# ps aux |grep rsyslogd(用于查找运行中的rsyslogd进程并显示相关信息) root 717 0.0 0.0 219752 3880 ? Ssl 09:05 0:00 /usr/sbin/rsyslogd -n (-n是rsyslogd的一个命令行选项,用于指定以后台守护进程模式而不是前台模式运行rsyslogd。当使用-n选项启动rsyslogd时,它将在前台运行,日志消息将直接输出到终端,而不是作为后台服务默默运行。)
二.常见的日志文件(系统,进程,应用程序):
# tail -10 /var/log/messages //系统主日志文件
# tail -f /var/log/messages //动态查看日志文件的尾部
# tailf /var/log/secure //认证、安全
# tail /var/log/yum.log //yum
# tail /var/log/maillog //跟邮件postfix相关
# tail /var/log/cron //crond、at进程产生的日志
# tail /var/log/dmesg //和系统启动相关
(tail 用于查看文件的末尾内容一次,tail -f 和 tailf 用于实时跟踪文件的增长,但它们的实现方式可能略有不同,具体取决于系统和命令的版本。通常,tail -f 是更常见和广泛支持的命令,但 tailf 在某些情况下可能更有效率。)
三.rsyslogd配置:
1.相关程序:yum install rsyslog logrotate (默认已安装)
2.启动程序:systemctl start rsyslog.service
3.相关文件:rpm -qc rsyslog (查询已安装的 RPM 包。 -q:用于查询已安装的 RPM 包的信息。 -c 用于查询软件包的配置文件。)
/etc/rsyslog.conf rsyslogd的主配置文件(关键)
/etc/sysconfig/rsyslog rsyslogd相关文件,定义级别(了解)
/etc/logrotate.d/syslog 和日志办轮转(切割)相关
四.主配置文件:
告诉rsyslogd进程什么日志,应该存到哪里
# vim /etc/rsyslog.conf
RULES:即规则,是一套生成日志,以及存储日志的策略。规则由设备+级别+存放位置组成。
RULES由FACILITY+LEVEL+FILE组成
authpriv.* /var/log/secure(SSH信息)
mail.* -/var/log/maillog( 发邮件) 这里有一个符号,表示是使用异步的方式记录
cron.* /var/log/cron(创建任务)
FACILITY&LEVEL:
facility:是系统对某种类型APP事件的定义。如AUTHPRIV是安全事件,CRON是计划任务事件。用来收集同类程序日志。
程序类型示例:关于程序和设备的联系问题,程序自身会决定将日志交给哪类设备。如SSH程序会选择安全类设备。这一点由开发者定义。
#grep Facility /etc/ssh/sshd_config(在 /etc/ssh/sshd_config 文件中搜索包含 "Facility" 字符串的行,并将它们显示出来。)
SyslogFacility AUTHPRIV (该程序属于认证设备)
level级别:
LOG EMERG 紧急,致命,服务无法继续运行,如配置文件丢失
LOG_ALERT 报警,需要立即处理,如磁盘空使用95%
LOG CRIT 致命行为
LOG ERR 错误行为
LOG_WARNING 警告信息
LOG_NOTICE普通,重要的标准信息
LOG_INFO 标准信息
LOG_DEBUG 调试信息,排错所需,一般不建议使用
* 表示匹配所有级别,即不管消息的级别是什么,都会被匹配或捕获。(任意级别)
日志轮转logrotate
将大量的日志,分割管理,删除旧日志。
简介:日志 记录了程序运行时各种信息。通过日志可以分析用户行为,记录运行轨迹,查找程序问题。 可惜磁盘的空间是有限的 日志轮转就像飞机里的黑匣子,记录的信息再重要也只能记录最后一段时间发生的事。 为了节省空间和整理方便,日志文件经常需要按!时间或!大小等维度分成多份,删除时间久远的日志文件。
工作原理:(按照配置进行轮转)
配置文件种类:
主配置文件:/etc/logrotete.conf(决定每个日志文件如何轮转)
子配置文件夹:/etc/logrotate.d/* (自定义配置 便于管理)
[root@localhost ~] # ls /etc/logrotate.conf /etc/logrotate.d/
/etc/logrotate.conf
/etc/logrotate.d/:
bootlog cups iscsiuiolog libvirtd.gemu ppp samba wpa_supplicant
chrony httpd libvirtd numad psacct syslog yum
主配置文件介绍:
[root@localhost~]# vim /etc/logrotate.conf
=========全局设置========
weekly //轮转的周期,一周轮转
rotate 4 //保留4份
create //轮转后创建新文件
dateext //使用日期作为后缀(以时间作为文件的扩展名)
#compress //是否压缩(轮转之后,再压缩一下)
include /etc/logrotate.d //包含该目录下的子配置文件
在配置文件中,书写日志的名字和大括号,就可以独立的设定该日志的轮转规则。
/var/log/wtmp{ //对某日志文件设置轮转的方法
monthly //一月轮转一次
minsize 1M //最小达到1M才轮转,monthly and minsize(轮转周期有两大维度:系统时间和文件大小。)
create 0664 root utmp //轮转后创建新文件,并设置权限(创建日志文件 权限 属主 属组)
rotate 1 //保留一份
}
/var/log/btmp{
missingok //丢失不提示
monthly //每月轮转一次
create 0600 root utmp //轮转后创建新文件,并设置权限
rotate 1 //保留一份
}
第十二章:网络管理
NetworkManager服务:网络管理器(NetworkManager)是一个动态网络的控制器与配置系统,它用于当网络设备可用时保持设备和连接开启并激活 默认情况下,CentOS/RHEL7 已安装网络管理器并处于启用状态。
systemctl status NetworkManager(查看网络管理程序的状态)
systemctl status network(查看网络子管理程序的状态)
配置网络的工具:
配置的方法多种多样
1.图形配置:简易图形:nmtui(它是一个[root@aliyun ~]# yum -y install httpd vsftpd 安装示例服务 [root@aliyun ~]# systemctl start httpd vsftpd Show TCP sockets在命令行下管理网络连接的文本用户界面工具。是 NetworkManager 的一个用户界面前端,用于在 Linux 系统上配置和管理网络连接)
图形界面:nm-connection-editor(nm-connection-editor 是 NetworkManager 的图形用户界面工具,用于管理网络连接配置。它通常用于创建、编辑和删除网络连接配置文件,以及配置各种网络参数。)
2.命令行配置:
配置文件:vim
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
命令行:nmcli (nmcli 是 NetworkManager 的命令行工具,用于在 Linux 系统上管理网络连接和配置如果没有这个命令,可以执行安装 yum -y install NetworkManager)
配置网络参数
配置IP
方法:1.配置网卡参数(先备份网卡配置文件,在修改)
[root@localhost ~]# cp /etc/sysconfig/network-scripts/ifcfg-ens33 .
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
ONBOOT=yes //是否在设备启动时自动连接到网络
BOOTPROTO=none //(boot 启动 protocol 协议) 获取IP地址的方式:手动(none/static)还是自动(dhcp)
IPADDR=192.168.142.131 //IP地址 用来定义主机
NETMASK=255.255.255.0 //子网掩码 用来定义网络
GATEWAY=192.168.142.2 //网关,也叫默认路由
DNS1=192.168.142.2 //域名解析,将用户输入的域名解析为对应的IP地址
网卡信息 :
NAME=ens33 //指定网络接口的名称
UUID=d1769473-dc3c-4cf3-9158-8798994d24bb //网络接口的唯一标识符
DEVICE=ens33 //指定要配置的网络接口的名称,指定了配置应用于哪个网络接口。
2.重启网络服务:systemctl restart network
3.查看IP地址:ip a (查看系统上所有网络接口的信息)
主机名:
查看主机名:#hostname
配置主机名:#hostnamectl set-hostname qianfeng.example.com
查看和配置主机名:#cat /etc/hostname #vim /etc/hostname
重启生效:#reboot
网络测试工具:
测试工具:(PING Packet Internet Groper,因特网包探索器)
[root@qianfeng ~]# ip a //查看所有IP(ifconfig)
[root@qianfeng ~]# ip route //查看路由,查看网关
[root@qianfeng ~]# ip neigh //另一台主机ping通,查看邻居
[root@qianfeng ~]# ping 127.0.0.1
ports and services(端口和服务):
安装示例服务:
[root@aliyun ~]# yum -y install httpd
[root@aliyun ~]# systemctl start httpd
Show TCP sockets:查看正在使用的TCP套接字(sockets TCP套接字是构建网络应用程序的关键组件,它们允许应用程序在计算机之间进行可靠的数据传输。)
[root@aliyun ~]# ss -tnl(使用ss命令来显示TCP连接的状态 -t:仅显示TCP连接。 -n:使用数值格式显示地址和端口,而不是将其解析为主机名和服务名。 -l:仅显示监听状态的连接。)
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 *:80 *:*
State表示连接的状态。在这里,它显示为LISTEN,表示这是一个处于监听状态的连接,即服务器正在等待客户端的连接请求。
Recv-Q显示接收队列的信息。在这里,它显示为0,表示当前接收队列中没有待处理的数据包。
Send-Q显示发送队列的信息。在这里,它显示为128,表示当前发送队列中有128个待发送的数据包。
Local Address:Port显示本地地址和端口。在这里,*表示通配符,表示服务器监听所有可用的网络接口,80是本地端口号,表示服务器正在监听80端口。
Peer Address:Port显示远程对等方(客户端)的地址和端口。在这里,*表示通配符,表示服务器正在等待来自任何IP地址的连接请求,而不限定特定的对等方。
初始化服务器:
1.为你的服务器配置root密码
2.配置IP地址(VMNAT8)
3.配置YUM源:自动挂载光驱/阿里YUM 配置YUM仓库
4.关闭防火墙
systemctl stop firewalld(停止firewalld服务)
systemctl disable firewalld(禁用firewalld服务,防止firewalld服务在系统重新启动后自动启动)
systemctl status firewalld(查看firewalld服务的状态)
5.selinux (Security-Enhanced Linux是一种安全性增强的Linux操作系统安全性扩展。)
临时关闭:setenforce 0(数字0)
永久关闭:[root@localhost ~]# vim /etc/sysconfig/selinux SELINUX=disabled
状态查看:getenforce
6.安装常用程序 yum install -y lrzsz sysstat elinks wget net-tools bash-completion
7.关机快照
第十三章:网络管理实战1
OSI简历:
OSI(Open Systwm Interconnection 开放系统互联模型)
开放式系统互联: 国际标准化组织(ISO)制定 定义了不同计算机互联的标准 设计和描述,计算机网络通信的框架
全世界网络通信的工作分为7层:应用层 表示层 会话层 传输层 网络层 数据链路层 物理层
制定OSI的优势:开放 厂商兼容性 利于理解,学习 模块化工程 故障排除
OSI:7层结构/功能 :
应用层:应用程序/原始数据/ (qq/yy/爱奇艺/王者/吃鸡)
表示层:格式/压缩/加密 (快速传递 安全传递)
会话层:会话/全双工/半双工 (身份信息 电话/对讲机)
传输层:分段/重组/端口号 (传输效率)
网络层:IP地址/寻址/路由 (总目标,全球地址)
数据链路层:MAC地址/局域网/ (分段目标 ,局部地址,邮递员)
物理层:传输介质/比特流 (电流/无线信号/4G/5G)
TCP/IP:5层结构/功能:
应用层:负责处理应用程序与网络之间的通信
传输层:负责端到端的数据传输,确保数据的可靠性和完整性。
网络层:负责数据包的路由和转发,以将数据从源主机传输到目标主机。
数据链路层:负责将数据帧从一个物理介质传输到另一个物理介质,通常是在局域网中。
物理层:确保数据以二进制形式正确传输到数据链路层。
TCP/IP:4层结构/功能:
应用层:同上
传输层:同上
网络层:同上
网络接口层:网络接口层也称为数据链路层,同上
OSI模型和TCP/IP模型的区别:
OSI:推出的时间早 只有理论,没有实践
TCP/IP:传输控制协议/互联网协议(Trancation Control Protocol/Inetnet Protocol) 美国军方由实践,总结出的理论 当今通信标准
TCP/IP:数据单元/DN:
前言:牛奶从鲜奶变成奶粉,要经历很多到工序。信息从产生到接收,也会有些变化。为了方便交流,通信模型不同的模块对信息加工,并进行统一命名。
应用层数据:AP DU (应用数据单元)
APDU:ApplicationProtocolDataUnit--应用协议数据单元
传输层数据:segment DU (分段数据)
网络层数据:pack DU (包数据)
数据链路层数据:frame DU (帧数据)
物理层数据: bit DU (比特数据)
封装和解封装:
信息从一台计算产生,经过TCP/IP模型加工。后传递到另一台计算机。这个通信过程就像快递从厂家包装到顾客收到货物拆包一样。我们把这个通信过程,称作数据的封装(发送)和数据解封装(接收)。
封装的过程大致如下:
1.(应用层)用户信息转换为数据,以便在网络上传输
2.(传输层)数据转换为数据段,并在发送方和接收方主机之间建立一条可靠的连接
3.(网络层)数据段转换为数据包或数据报,并在报头中放上逻辑地址,这样每一个数据包都可以通过互联网络进行传输
4.(数据链路层)数据包或数据报转换为帧,以便在本地网络中传输。在本地网段上,使用硬件地址唯一标识每一台主机
5.(物理层)帧转换为比特流,并采用数字编码和时钟方案
TCP/IP协议族:
TCP/IP简介:(Trancation Control Protocol/Inetnet Protocol) 传输控制协议/互联网协议的简写
五层模型协议分类:
应用层:
HTTP/超文本传输协议/网站 淘宝
SSH/远程连接协议/远程控制 QQ远程桌面
FTP/文件传输协议 电影天堂
SMTP/简单邮件传输协议/Email QQ邮箱
DNS/域名服务/WWW heitu.com baiyun.com
传输层:
TCP/传输控制协议/可靠 鸡毛信 挂号信
UDP/用户数据报协议/不可靠 普通信
网络层:
IP/互联网协议/寻址 全球地址
ICMP/网络消息管理协议/测试 通信兵
数据链路层:
MAC 家到邮局的地址
物理层:
网线 公路
光纤 航道
进制转换:
十进制:数值:0~9 数位:123 位权:百位十位个位
二进制:数值:0~1 位数:10 位权:128-64-32-16-8-4-2-1
十六进制:数值 :0~9, A(10),B(11),C(12),D(13),E(14),F(15) 位数:10 位权:十六的倍数
单位换算:比特=bit=b=1/0
字节=byte=B=8个比特
1KB=1024B
1MB=1024KB
1GB=1024MB
1TB=1024GB
第十四章:网络管理实战2
物理层:
信号:
1.模拟信号:不断变换的物理量,适用电话网络
2.数字信号:两种恒定物理量 适用计算机网络
优点:抗噪音和抗衰减比较强
介质:
双绞线:EIA/TIA568标准
外形:八根线芯,两两互绞
功能分类:屏蔽型 非屏蔽性
速率分类 :cat5/5类线/10M100M cat5e/超5类线/10M100M cat6
接口:RJ45/水晶头
线序:EIA/MA568B:橙白,橙,绿白,蓝,蓝白,绿,棕白,棕
标准网线:两端线序相同。
光纤:
多模/单模 纤芯粗/纤芯细 低速/高速 近/远 便宜/贵
FC/ST/LC/(光纤连接器的类型)
数据链路层:
功能:提供可靠的数据传输,确保数据在物理介质上的有效传输,并处理一些与物理层和网络层之间的交互相关的问题。
地址:MAC地址(Media Access Control Address):媒体访问控制地址
结构:48位2进制数字 12位16进制数字
示例:00-21-CC-C3-8C-B0 (前六位是厂商标识,后六位是硬件标识)
帧封装:目标MAC//源MAC//数据//CRC
交换机工作原理:
学习(Learning):当交换机首次启动或接收到一个数据帧时,它并不知道目标设备的位置。交换机会从接收到的数据帧中提取目标MAC地址,并将这个地址与与每个接口关联的MAC地址表进行比较。
广播(Broadcast):如果MAC地址表中没有目标地址的条目,交换机将把数据帧发送到所有连接的接口,这称为广播。当交换机无法确定目标MAC地址时,它会将数据帧广播到所有接口上,以确保目标设备能够接收到数据。目标设备会接收广播帧,但其他设备会忽略它,因为广播通常只用于目标设备。
转发(Forwarding):一旦交换机学习到目标MAC地址的位置,它会将接收到的数据帧直接转发到目标设备所连接的接口,而不再广播。这种方式称为单播,它提高了网络的效率,因为只有目标设备会接收到数据帧。
更新(Updating):MAC地址表是交换机用来记录设备位置的关键工具。当交换机接收到新的数据帧并学习到新的MAC地址时,它会更新MAC地址表,将目标MAC地址与相应的接口关联起来。MAC地址表中的条目也会过期,如果一段时间内没有收到与某个MAC地址相关的数据帧,那么该条目可能会被删除。
VLAN:虚拟局域网(Virtual Local Area Network)
交换网络是互联互通的,因为人员,职务的关系需要隔离。
划分VLAN的方法:
1.创建VLAN(2-1024)
2.根据接口和VLAN的关系:接口和VLAN10 F0/1~F0/10 VLAN 10 F0/11~F0/20 VLAN 20
配置:
enable 特权
config t 进入配置模式(config)#
vlan 10 创建局域网10
vlan 20 创建局域网20
interface fastethernet0/1 必须要在接口模式下才可以输入
switch access vlan 10 将端口加入VLAN
interface f0/2
switch access vlan 10
interface f0/3
switch access vlan 20
nterface f0/4
switch access vlan 20
验证:使用相同vlan主机通信成功,不同vlan主机通信不成功。
TRUNK:干道(vlan标签只存在于trunk线路上)
核心技术:打标
目的:通过一根网线,传递不同VLAN信息
配置:
switch1实验步骤:
enable
config t
vlan 10
vlan 20
interface fastethernet0/1
switch access vlan 10
interface f0/2
switch access vlan 20
int f0/3
switch mode trunk
switch2实验步骤:
enable
config t
vlan 10
vlan 20
interface fastethernet0/1
switch access vlan 10
interface f0/2
switch access vlan 20
int f0/3
switch moke trunk
测试:实现不同交换机上,相同VLAN主机通信成功。不同交换机上,不相同的VLAN主机通信不成功。
总结:交换机接口工作模式,分为access和trunk access是指定接口连接的是主机 trunk是指定接口连接的是交换机,需要通过多个VLAN的数据
第十五章:网络管理实战3
网络层:
分割广播域,便于寻址
IP地址:
简介:32位二进制数 IP用于主机在互联网中的标识
4组十进制表示:IP地址每8位为一组,用“ . ”分割,用十进制标识 192.168.0.1
分类:A类(1~126) 127:回环地址:我 B类(128~191) C类(192~223) D类(224~239) 组播 E类(240~255) 科研
私有IP分类:A类:10.0.0.0~10.255.255.255 B类:172.16.0.0~172.31.255.255 C类:192.168.0.0~192.168.255.255
子网掩码(32位二进制数字):作用:运算出IP地址1的网络部分。
分类:A类:255.0.0.0 B类:255.255.0.0 C类:255.255.255.0
方法:
举例说明:两个IP地址是不是同一网络,依靠三部曲。
1.IP地址转换2进制
192.168.1.2
1100 0000. 1010 1000. 0000 0001. 0000 0010
2.子网掩码转换2进制
255.255.255.0
1111 1111. 1111 1111. 1111 1111. 0000 0000
3.IP地址和子网掩码逻辑运算。
IP地址
1100 0000. 1010 1000. 0000 0001. 0000 0000 IP地址
1111 1111. 1111 1111. 1111 1111. 0000 0000 子网掩码
子网掩码中1的位置,对应的IP地址照抄
子网掩码中0的位置,对应的IP地址全为0
1100 0000.1010 1000.0000 0001.0000 0000
4.得出网络地址(这个IP属于哪个网络)
192.168.1.0(网络地址:代表一群地址)
练习:另一个IP地址是哪个网络 192.168.1.254
1.IP地址转换2进制:
1100 0000. 1010 1000. 0000 0001. 1111 1110
2.子网掩码转换2进制:
255.255.255.0
1111 1111. 1111 1111. 1111 1111. 0000 0000
3.IP地址和子网掩码逻辑运算:
1100 0000. 1010 1000. 0000 0001. 1111 1110
1111 1111. 1111 1111. 1111 1111. 0000 0000
1100 0000. 1010 1000. 0000 0001. 0000 0000
4.得出网络地址(这个IP属于哪个网络):
192.168.1.0(192.168.1.254属于192.168.1.0网络的一部分)
网络地址:网络位相同,IP地址是同一网段。网络位不同,IP地址不是同一网段。
路由器工作原理:
路由:
概念:跨越从源主机到目标主机的一个互联网络来转发数据包的过程。
路由表:路由器中维护的路由条目的集合,路由器根据路由表做路径选择。
路由表的形成:自动学习直连网络 配置静态路由 动态路由协议
直连网络:与当前路由器直接相连的网络或子网。这些网络可以通过路由器的物理或逻辑接口直接访问。 当一个路由器与一个网络直接连接时,它会自动学习关于这个网络的信息,包括网络地址、子网掩码等。路由器将这些信息添加到自己的路由表中。 路由表中的直连网络条目通常会指示数据包应该通过与该网络直接连接的接口发送。
非直连网络:不是通过直接物理或逻辑连接与当前路由器相连的网络。 要路由数据到非直连网络,路由器需要了解如何到达目标网络。这通常需要使用路由协议来学习关于网络拓扑的信息。 路由器通过与其他路由器进行通信,交换路由信息,构建网络拓扑图,并形成路由表中的非直连网络条目。
第十六章:文件服务
FTP Server:
简介:
名词解释:FTP(File Transfer Protocol,文件传输协议)是TCP/IP协议组中的协议之一
作用:提供文件共享服务 互联网上多的媒体资源的软件资源,绝大部分都是通过FTP服务器传递。
软件包:vsftpd
基础:
控制端口:command 21/tcp 数据端口:data 20/tcp
FTP Server 默认配置:
1.安装vsftp:yum -y install vsftpd
2.准备分发的文件:touch /var/ftp/abc.txt(FTP服务器的总目录:/var/ftp,/是FTP程序分享内部的本机目录。)
3.启动服务:systemctl start vsftpd systemctl enable vsftpd(将vsftpd 服务配置为在系统启动时自动启动)
4.关闭防火墙:systemctl stop firewalld
systemctl disable firewalld
seteforce 0
vim /etc/selinux/config 修改内容为SELINUX=disabled
FTP Cliet
(FTP客户端是用于在计算机之间进行文件传输的工具或应用程序。FTP客户端允许用户连接到FTP服务器,并执行文件上传、下载、删除、重命名等操作。)
LinuxFTP客户端程序1:lftp
安装客户端工具:
[root@qianfeng ~]# yum -y install lftp
访问服务器:
[root@qianfeng~]# lftp 服务器的IP地址
查看并下载:
lftp qianfeng:~> Is(列出远程目录内容)
drwxr-xr-x 2 0 0 4096 Mar 31 2019 pub
-rw-r--r-- 1 0 0 0 Nov 22 03:53 abc.txt
lftp qianfeng:~> get abc.txt 下载文件
lftp qianfeng:~> mirror pub 下载目录
lftp qianfeng:~> put file.txt 上传文件
lftp qianfeng:~> rm file.txt 删除远程文件
lftp qianfeng:~> exit 退出lftp
LinuxFTP客户端程序2:wget
[root@qianfeng~]# wget ftp://192.168.142.132/abc.txt (/代表目录/var/ftp/)
[root@qianfeng ~]# wget ftp://192.168.142.132/abc.txt -O /tmp/a.sh -O指定文件名和路径。
[root@qianfeng ~]# wget http://nginx.org/download/nginx-1.10.2.tar.gz
[root@qianfeng~]# wget -m ftp://zhufo.top/soft -m 下载目录
启动上传功能:
0.配置文件简介:
vim /etc/vsftpd/vsftpd.conf(用于设定FTP服务器的功能开启或关闭的文件)
1. 检查禁用匿名账户登录开启 :
目的:启用禁用匿名账号(默认,比较方便)
anonymous_enable=YES
2.配置上传指令:
anon_upload_enable=YES 启动上传文件的能力
anon_mkdir_write_enable=YES 启动创建目录的能力
3.创建上传目录:
mkdir /var/ftp/upload
chmod 777 /var/ftp/upload
4.客户端测试
登录服务器:lftp 192.168
下载文件:get 1.txt
上传文件:前提是客户机要有一个2.txt文件
然后进入上传目录
cd upload
put 2.txt
创建目录:mkdir 222
上传目录:前提是客户机要有一个aaa的目录
mirror -R aaa
NFS Server
名词解释:
NFS:Network File System(网络文件系统),Linux/Unix系统之间共享文件的一种协议。NFS 的客户端主要为Linux。支持多节点同时挂载,以及并发写入。
作用:提供文件共享服务,为Web Server配置集群中的后端存储
案例:
环境:nas 192.168.122.130 web1 192.168.122.131 web2 192.168.122.132 web3 192.168.122.134
关防火墙:systemctl stop firewalld systemctl disable firewalld seteforce 0 vim /etc/selinux/config 修改内容为SELINUX=disabled
一.nas("NAS" 是网络附加存储(Network-Attached Storage)的缩写,是一种专用设备或存储服务器,用于存储和共享数据文件通过网络访问。)
1.安装NFS服务器:
[root@nas ~]# yum -y install nfs-utils
[root@nas ~]# mkdir /webdata 存储网站代码
[root@nas ~]# echo "nfs test.." > /webdata/index.html 放置测试页面
2.配置NFS服务器:
[root@nas ~]# vim /etc/exports(/etc/exports 是一个配置文件的路径,用于配置 NFS 服务器上的共享文件系统。)
/webdata 192.168.122.0/24(rw) (该配置条目表示位于/webdata路径下的共享文件系统可以被位于IP地址范围192.168.122.0到192.168.122.255内的主机以读写方式访问。)
3.启动NFS服务器:
[root@nas ~]# systemctl start nfs-server
[root@nas ~]# systemctl enable nfs-server
检查NFS输出是否正常
[root@nas ~]# exportfs -v (用于管理和显示NFS(Network File System)共享的命令,其中-v参数用于显示更详细的输出信息。)
/webdata 192.168.122.0/24(sync,wdelay,hide,no_subtree_check,sec=sys,rw,secure,root_squash,no_all_squash)
二. web1 web2 web3 客户端
web1服务器:
1.安装NFS客户端:
[root@web1~]# yum -y install nfs-utils httpd
[root@web1~]# systemctl start httpd
[root@web1 ~]# systemctl enable httpd
2.查看存储端共享:
[root@web1 ~]# showmount -e 192.168.122.130 // 查询NFS服务器可用目录(-e 是showmount命令的一个选项,用于指定显示NFS服务器上的所有已经共享的文件系统列表。后面通常会跟着NFS服务器的IP地址或主机名。)
Export list for 192.168.122.130:
/webdata 192.168.122.0/24
3.手动挂载:
[root@web1 ~]# mount -t nfs 192.168.122.130:/webdata /var/www/html/ (如果想要取消挂载,请使用umount [root@web1~]# umount /var/www/html/)
4.查看挂载:
[root@web1 ~]# df
192.168.122.130:/webdata 7923136 692416 6821568 10% /var/www/html
[root@web1~]# Is /var/www/html/
index.html
web2服务器:操作同web1服务器
web3服务器:操作同web1服务器
三.测试网站访问:
Firefox:192.168.122.131
Firefox:192.168.122.132
Firefox:192.168.122.134
SSH SERVER
简介:有没有感觉在服务器的字符界面,进行选取,复制,粘贴,翻页很不方便。所以就可借助SSH(安全外壳协议)远程操作和管理系统,不仅方便而且安全可靠。
SSH 服务器实战:
1、登录Centos
2、查询SSH是否安装 输入命令:rpm -qa| grep ssh
注:若没安装SSH则可输入:yum install openssh-server安装
3、SSH服务管理
启动服务 (默认启动) systemctl start sshd
查看端口 netstat -antp | grep sshd(列出所有当前与 SSH 服务器相关的 TCP 连接,并显示与这些连接关联的进程信息。)
开机启动 (默认启动) systemctl enable sshd
4、使用SSH远程管理
#ssh 账户名@IP地址
第十七章:网站服务
概念:
前言: UI的转变:B/S架构(这种架构适用于许多Web应用程序,因为它允许用户通过浏览器访问应用程序,而无需在客户端安装任何额外的软件。)
名词:
HTML:Hyper Text Markup Language(超级 文本 标记 语言)
网页:使用HTML,PHP,JAVA语言格式书写的文件。
主页:网页中呈现用户的第一个页面。
网站:多个网页组合而成的一台网站服务器。
URL:Uniform Resource Locator
统一资源定位符 访问网站的地址
网站架构:
LAMP:Linux + Apache + MySQL + PHP(Linux是操作系统。它为LAMP堆栈提供了基础。 Apache是Web服务器软件。它负责向用户的浏览器提供Web页面。Apache以其稳定性和健壮性而闻名。 MySQL是一个关系型数据库管理系统。它用于存储和检索Web应用程序的数据。MySQL因其速度和可扩展性而广泛使用。 PHP是一种服务器端脚本语言。它用于开发动态Web页面。PHP代码在服务器上执行,然后将结果发送到用户的浏览器。)
静态站点
Apache:一个流行的开源Web服务器软件,通常被称为Apache HTTP服务器。它是互联网上最常用的Web服务器之一,被许多大型和小型网站使用。
Apache基础:
Apache官网:www.apache.org
软件包名称: httpd
服务端口: 80/tcp(http) 443/tcp(https)
配置文件:/etc/httpd/conf/httpd.conf
子配置文件:/etc/httpd/conf.d/*.conf
主目录:/var/www/html 网站源代码默认位置
安装Apache:
[root@localhost ~]# yum -y install httpd 安装
[root@localhost ~]# systemctl start httpd 启动
[root@localhost ~]# systemctl status httpd 查看服务状态
[root@localhost ~]# systemctl enable httpd 开机自启
[root@localhost ~]# systemctl stop firewalld 关闭防火墙
[root@localhost ~]# setenforce 0关闭selinux
[root@localhost ~]# httpd -v 查看版本
Server version: Apache/2.4.6 (CentOS) 输出信息
虚拟主机:
目的:虚拟主机VirtualHost 作用:在一台物理服务器上运行多个网站
类型:基于主机名 www.a.com www.b.com
配置虚拟主机目标:这一台服务器上,实现两个网站的架设
网站域名 网站资源存放目录
www.a.org /var/www/html/a.org
www.b.org /b.org
注意关闭firewalld和seliunx
服务器:
一,www.a.org站点设置
1.准备网站源码(网页)目录
mkdir /var/www/html/a.org
vim /var/www/html/a.org/index.html
2.创建a.org的网站配置文件 (下面的配置示例创建了一个虚拟主机,它会监听 www.a.org 域名的HTTP请求,并将这些请求的文件从 /var/www/html/a.org 目录提供。这是典型的虚拟主机配置,允许您在同一台Web服务器上托管多个不同域名的网站,每个网站可以有自己的文档根目录和配置。)
# vim /etc/httpd/conf.d/a.org.conf
ServerName www.a.org
DocumentRoot /var/www/html/a.org
(:这是一个虚拟主机块的开始标记,指示下面的配置适用于监听端口80的虚拟主机。端口80通常是HTTP请求的默认端口。
ServerName www.a.org:这一行指定了虚拟主机的主机名或域名,即 www.a.org。这意味着这个虚拟主机配置将用于处理来自 www.a.org 域名的请求。
DocumentRoot /var/www/html/a.org:这一行指定了虚拟主机的文档根目录,即网站文件的存储位置。在这个示例中,网站文件将从 /var/www/html/a.org 目录提供。
:这是虚拟主机块的结束标记,指示虚拟主机配置的结束。)
3.检验配置文件语法,重启服务
httpd -t
systemctl restart httpd
二,www.b.org站点设置
1.准备网站源码(网页)目录
mkdir /b.org
vim /b.org/index.html
2.创建b.org的网站配置文件
# vim /etc/httpd/conf.d/b.org.conf
ServerName www.b.org
DocumentRoot /var/www/html/b.org
</VirtualHost >
<Directory "/b.org">
Require all granted
</Directory>
(这段代码告诉Apache服务器在"/b.org"目录下允许所有人访问,不需要任何特定的认证或访问限制。这可以用于允许公共访问某个目录中的文件或资源。)
3.检验配置文件语法,重启服务
httpd -t
systemctl restart httpd
客户端:
Linux客户端域名解析:
vim /etc/hosts
192.168.48.128(服务器的IP地址) www.a.org
192.168.48.128 www.b.org
Linux客户端测试网站可用性:
字符测试:yum install -y elinks elinks http://www.b.org (命令行文本浏览器 elinks )
图形测试:通过火狐浏览器,分别访问两个网站地址
动态站点:
部署论坛系统discuz(Discuz(或称为 Discuz!)是一款知名的开源社区和论坛软件,广泛用于构建在线社区和讨论平台。)
一,基础环境
[root@apache ~# sed -ri '/SELINUX=/cSELINUX=disabled' /etc/selinux/config (在 /etc/selinux/config 文件中查找包含 SELINUX= 的行,并将其替换为 SELINUX=disabled。sed:这是一个用于文本处理的命令行工具,通常用于对文本文件进行搜索和替换操作。-r:启用扩展正则表达式(Extended Regular Expression),以便更灵活地匹配文本模式。-i:表示在原始文件上进行直接编辑(in-place),而不是将结果输出到标准输出。)
[root@apache ~]# setenforce 0
[root@apache ~]# systemctl stop firewalld.service
[root@apache ~]# systemctl disable firewalld.service
二,安装LAMP
[root@apache ~]# yum -y install httpd mariadb-server mariadb php php-mysql gd php-gd(httpd:这是 Apache HTTP 服务器的软件包。Apache 是一个流行的开源 Web 服务器,用于托管网站和 Web 应用程序。
mariadb-server:这是 MariaDB 数据库服务器的软件包。MariaDB 是一个开源的关系型数据库管理系统,它兼容 MySQL,用于存储和管理数据。
mariadb:这是 MariaDB 数据库客户端软件包,它包括了与 MariaDB 服务器通信所需的工具和库。
php:这是 PHP 编程语言的核心软件包。PHP 是一种流行的服务器端脚本语言,常用于构建动态网站和 Web 应用程序。
php-mysql:这是用于 PHP 的 MySQL 数据库扩展,它允许 PHP 与 MySQL 数据库进行交互,执行数据库操作。
gd:这是一个用于图像处理的库,常用于创建和编辑图像文件。
php-gd:这是用于 PHP 的 GD 图像处理扩展,它允许 PHP 脚本生成、编辑和操作图像文件。)
[root@apache ~]# systemctl start httpd mariadb
[root@apache ~]# systemctl enable httpd mariadb
三,安装Discuz!
1.导入discuz网站源码
wget https://download.discuz.vip/DiscuzX/2.5/Discuz_X2.5_SC_UTF8.zip
[root@apache ~]# mkdir -p /webroot/discuz
[root@apache ~]# yum install -y unzip
[root@apache ~]# unzip Discuz_X2.5_SC_UTF8.zip
[root@apache ~]# cp -rf upload/*/webroot/discuz/ (把解压缩后的文件夹中的内容复制到 "/webroot/discuz/" 目录中。-r 选项表示递归复制,-f 选项表示强制复制,覆盖目标文件(如果存在)。)
[root@apache ~]# chown -R apache.apache /webroot/discuz/
2.Apache配置虚拟主机
[root@apache ~]# vim /etc/httpd/conf.d/discuz.conf
<VirtualHost *:80>
ServerName www.discuz.com
DocumentRoot /webroot/discuz
</VirtualHost>
<Directory "/webroot/discuz">
Require all granted
</Directory>
[root@apache ~]# httpd -t
[root@apache ~]# systemctl restart httpd
3.准备数据库
[root@localhost discuz]# mysql
MariaDB [(none)]> create database discuz;
4.安装discuz [任何client]
客户机测试时,添加域名解析
[root@localhost ~]# vim /etc/hosts
192.168.48.128 www.discuz.com
5.客户端测试
Linux客户端域名解析:
vim /etc/hosts
192.168.48.128 www.a.com
192.168.48.128 www.b.com
192.168.48.128 www.discuz.com
Linux客户端测试网站可用性:
图形测试:通过火狐浏览器,访问网站地址:http://www.discuz.com
第十八章:域名服务
前言:互联网的访问依靠IP地址。但IP地址不好记。所以使用域名服务(DNS),来代替访问的地址。
基本概念:
hosts文件:作用:实现名字解析,主要为本地主机名,集群节点提供快速解析
数据库:平面式结构,集中式数据库
缺点:不便于查询,更新
不同系统的位置:windows:C:\Windows\System32\drivers\etc\hosts
Linux:/etc/hosts
DNS:DNS(Domain Name System,域名系统)
作用:实现名字解析(例如将主机名解析为IP)
(分布式,层次性)
FQDN:FQDN:(Fully Qualified Domain Name)完全合规域名/全称域名
baidu.com.
www.baidu.com.
www.music.baidu.com.
www.icbc.com.cn.
主机名.二级域.顶级域.(根域)
命名空间:
命名空间name space:用于给互联网上的主机命名的一种机制
根域:.
顶级域:.net .com .org
二级域:51cto IBM kernel
主机名:www mail
顶级域名:com edu gov int mil net org
组织:商业组织 教育机构 政府部门 国际机构 军事部门 网络组织 其他组织
DNS解析流程:
本地域名解析缓存:首先,操作系统会检查本地域名解析缓存,以查找之前解析过的域名的记录。如果之前已经解析过该域名,系统会直接返回相应的 IP 地址,而不需要进行后续的 DNS 查询。
本地 DNS 服务器查询:如果本地缓存中没有找到域名的解析记录,操作系统会将 DNS 查询请求发送到配置的本地 DNS 服务器。这个本地 DNS 服务器通常由你的互联网服务提供商(ISP)或者你的网络管理员配置。本地 DNS 服务器负责处理 DNS 解析请求。
递归查询:如果本地 DNS 服务器也没有该域名的解析记录,它将开始进行递归查询。递归查询是一个多步骤的过程,通常包括以下步骤:
a. 根域名服务器查询:本地 DNS 服务器首先向根域名服务器发送查询请求,以确定顶级域名(如.com、.org)的权威域名服务器的 IP 地址。
b. 顶级域名服务器查询:一旦知道了顶级域名服务器的 IP 地址,本地 DNS 服务器会向该服务器发送查询请求,以获取次级域名(例如,example.com)的权威域名服务器的 IP 地址。
c. 权威域名服务器查询:本地 DNS 服务器再次向权威域名服务器发送查询请求,以获取特定域名的IP地址记录。这个权威域名服务器通常由域名的拥有者或管理员维护。
响应返回:一旦本地 DNS 服务器获得了域名对应的 IP 地址记录,它将这个记录存储在本地缓存中,并将解析结果返回给操作系统。操作系统将解析结果提供给应用程序,使其能够建立与目标服务器的连接。
递归/迭代:
递归查询:
在递归查询中,DNS客户端(通常是本地DNS服务器)向上游DNS服务器发出查询请求,并要求上游服务器负责完成整个解析过程,直到找到目标域名的IP地址或得出无法解析的结果。
上游DNS服务器会根据请求逐级向下查询,如果自己无法解析,会继续向更高级别的DNS服务器发出请求,直到找到答案并返回给客户端。
递归查询将整个解析过程委托给DNS服务器,而客户端只需等待最终的解析结果。这种方式通常用于普通用户的计算机或设备,因为它简化了解析过程。
迭代查询:
在迭代查询中,DNS客户端向上游DNS服务器发出查询请求,但不要求上游服务器完成整个解析过程。相反,上游服务器会返回一个指向下一个级别DNS服务器的引用,告诉客户端去询问下一个服务器。
客户端接收到引用后,会继续向下一个DNS服务器发出查询请求,然后再次收到引用,如此往复,直到找到目标域名的IP地址或得出无法解析的结果。
迭代查询将解析过程中的责任分散到多个DNS服务器,客户端需要主动参与查询过程。这种方式通常用于DNS服务器之间的通信,如根域名服务器、顶级域名服务器和权威域名服务器之间的查询。
服务器类型:
主服务器(Primary Server):主服务器通常是一个扮演关键角色的服务器,它接收和处理客户端请求,提供主要的服务或数据。主服务器通常是网络架构中的核心组件,负责处理业务逻辑、存储关键数据以及为客户端提供主要的服务功能。
从服务器(Secondary Server):从服务器是在主服务器之后的服务器,其主要功能是复制主服务器上的数据和服务。从服务器通常用于提供冗余性和负载均衡。它们可以用于备份数据,以防主服务器发生故障,也可以用于分散客户端请求的负载,以减轻主服务器的压力。
缓存服务器(Cache Server):缓存服务器是专门用于缓存数据的服务器。其主要目的是加速数据访问,减少对主服务器的负载和减少网络延迟。缓存服务器存储最近访问过的数据的副本,并在客户端请求相同数据时快速提供它们,而不需要从主服务器重新获取。这可以显著提高系统的性能和响应时间。
正向解析/反向解析:
DNS服务主要起到两个作用:
1.可以把对应的域名解析为对应的IP地址,这叫正向解析。
2.可以把相对应的IP地址解析为对应的域名,这叫反向解析。(反垃圾邮箱)
DNS域名解析示例
1.DNS本地缓存记录:
vim /etc/hosts
192.168.48.128 www.memeda.com
2.主机测试:
ping www.memeda.com
elinks http://www.memeda.com
3.网站服务器辅助验证:
Firefox:www.memeda.com
ISP(阿里)域名申请及解析
1.准备阿里云服务器。启动网站功能
搜索阿里云 ➔ 登入阿里云 ➔ 进入控制台 ➔ 选择ECS ➔ 创建实例/购买ECS ➔ 选择配置 ➔ 选择带宽 ➔ 设置管理员密码 ➔ 设置标签 ➔ 确认订单 ➔ 登陆ESC,启动网站服务:
安装LAMP
[root@apache~]# yum -y install httpd mariadb-server mariadb php php-mysql gd php-gd wget unzip vim
[root@apache~]# systemctl start httpd mariadb
[root@apache~# systemctl enable httpd mariadb
导入discuz网站源码
[root@apache~]# wget https://download.discuz.vip/DiscuzX/2.5/Discuz_X2.5_SC_UTF8.zip
[root@apache ~]# unzip Discuz_X2.5_SC_UTF8.zip
[root@apache~]# cp -rf upload/* /war/www/html/
[root@apache~]# chown -R apache.apache /var/www/html/
准备数据库
[root@apache~]# mysql
create database discuz;
\q
前台安装discuz。打开浏览器,输入服务器IP地址即可
2.通过控制台找到域名注册服务
3.输入新域名,根据需要选购合适域名。
4.选择购买
5.支付
6.返回域名控制面板,绑定IP地址
7.客户端测试
8.域名备案