2022年4月16日星期六

CenteOS7–基础学习

 

linux 命令行快捷键

tab         命令补全
Ctrl+a      光标移动到行首
Ctrl+e      光标移动到行尾
Ctrl+k      剪切光标到行尾
Ctrl+u      剪切光标到行首
Ctrl+w      剪切光标前一个单词
Ctrl+y      粘贴剪切的内容
Ctrl+c      终止终端在执行的任务
Ctrl+z      暂停执行在终端的任务
Ctrl+l      清空屏幕 等于clear
Ctrl+d      退出shell命令行

Ctrl+install   复制命令行的内容
shift+install  粘贴命令行的内容

!!          执行上一条命令
!pw         执行最近以pw开头的命令(pw可以设置为任何命令的开头)
!num        执行历史命令表num行的命令(num 表示为数字,即行号)
!$          上一条命令的最后一个参数(相当于 Esc+.)

Esc+.       获取上一条命令的最后部分

开关机,重启

shutdown 
    -r        重启系统(后面接数字表示在多少分钟后重启,后面接now,表示立即重启)
    -h        定时关机(后面接数字表示在多少分钟后关机,后面接now,表示立即关机)
    -c        取消定时关机
关机命令:
    halt        
    poweroff
    init 0

重启命令:
    reboot
    init 6

文件和目录操作命令

pwd        #显示当前所在位置
        
cd        #切换目录
    /    #切换到根目录
    -    #切换到上一次目录
    ~    #切换到家目录
    ..    #切换到上一层目录
    
tree    #以树形结构显示目录
    -a    #显示所有问文件,包括隐藏文件
    -d    #只显示目录
    -L    #遍历目录的最大层数
    -f    #显示完整的路径名称
    -i    #不显示树枝部分

mkdir    #创建目录
    -p    #递归创建
    -v    #显示创建的过程
    -m    #创建时指定目录的权限

touch    #创建文件
    -a    #只更改指定文件的最后访问时间
    -m    #只更改指定文件的最后修改时间
    -d    #修改指定文件的时间属性
    -r    #使文件的时间属性与另外的文件相同
    -t    #自定是设置文件的时间格式

ls        #显示目录下的内容及相关属性信息
    -l    #显示文件的详细信息
    -a    #显示隐藏文件
    -h    #人类可读
    -t    #以最后修改时间排序
    -r    #逆序
    -F    #在条目后面加上文件类型的指示符号
    -d    #显示目录本身信息
    -i    #显示索引节点信息

cp        #复制文件或目录
    -r    #递归复制
    -p    #复制保持属性不变
    -d    #复制保持软连接
    -a    #全复制(等同于-rpd)

mv        #移动文件或重命名

rm        #删除
    -r    #删除目录
    -f    #强制删除,没有提示    

rmdir    #删除空文件


ln        #硬链接与软连接
    -s

find    #查找目录下的文件(*****)
    -f
    -name

xargs    #将标准输入换成命令行参数

rename    #重命名文件

chattr    #改变文件扩展属性
    +i     #上锁:使root用户也不能直接修改相应文件
    -i    #解锁
    
lsattr    #查看文件扩展属性

file    #显示文件类型

md5sum    #计算和校验文件的MD5值

chown    #改变文件或目录的用户和用户组
    -R    #递归更改目录下所有文件的属主属组权限
    chown -R Alex01.Alex01 oldboy_dir
    
chmod    #改变文件或目录的权限
    chmod u+s / chmod 4755 文件信息 (特殊权限位:在属主权限位多出s信息)
    作用: setuid权限位设置,将文件属主拥有的能力,分配给所有人
    
    chmod o+t  目录信息 / chmod 1777 目录信息 (粘滞位: 创建一个共享目录)
    作用: 可以将不同用户信息放置到共享目录中,实现不同用户数据可以互相查看,但是不可以互相随意修改
    
umask    #显示或设置权限掩盖

文件过滤及内容编辑处理命令

cat        #合并文件或查看文件

tac        #反向显示文件内容

more    #分页显示文件内容

less    #分页显示文件内容

head    #显示文件头部内容

tail    #显示文件尾部内容

tialf    #跟踪文件日志

cut        #从文本中提取一段文字并输出

split    #分割文件

paste    #合并文件

sort    #文本排序

uniq    #去重

wc        #统计文件的行数,单词数,字节数

diff    #比较两个文件的不同

tr        #替换或删除文字

vim        #纯文本编辑器

三剑客

grep    #文本过滤工具(查找过滤)
    -r    #在文件外查找文件内部的内容
    -v    #取反
    -o    #只输出匹配的内容
    -i    #不区分大小写
    -E    #扩展正则
sed        #字节流编辑器(取行,替换)
    -i    #内存写入磁盘
    -r    #扩展正则
    -n    #默认不输出
    sed -ri 's/搜寻的内容/替换成什么内容/g'  file       
        #sed替换文件中的内容
awk        #awk工具(取列)
    -F    #指定分隔符
    NR    #表示行号
    $NF    #表示最后的列数
    $0    #表示一行的所有内容
    $X    #表示x列的内容
    awk    -F ":" 'NR=1 {print $1,$5,$NF}' file    
        #打印出文件第一行中,以:分割的第1列,第5列,最后一列的内容
    
# 三剑客常用的一些操作
1. 取ip
    grep:    ip a s eth0|grep -oE "[0-9]+.[0-9]+.[0-9]+.[0-9]+" 
    sed:    ip a s eth0|sed -nr '3s#^.*et (.*)/24.*eth0$#\1#gp'
    awk:    ip a s eth0|awk 'NR==3'|awk -F "[ /]" '{print $6}'
    
2. 统计日志
    awk -F '/' '{print $3}' /var/log/messages  
    awk '{url[$1]++}END{for(i in url)print i,url[i]}' test
    

3. 替换网卡ip
    sed -ri.back 's/10.0.0.5/10.0.0.10/g'  
    
4. 当前WEB服务器中联接次数最多的ip地址
    netstat -ntu |awk '{print $5}' |sort | uniq -c| sort -nr
    
    

linux信息显示与搜索文件命令

uname        #显示系统信息
    -a        #查看所有
    -r        #查看版本信息

hostname    #显示或设置系统的主机名
    set-hosstname + 主机名       #永久修改主机名
    主机名                        #临时修改主机名
    
stat        #显示文件或文件系统状态(查看文件时间)

du                #统计磁盘空间使用情况(查看文件大小)
    -sh            #人类可读方式显示文件大小
    du -sh ./*  #递归排查block过大文件,清理空间
date        #显示与设置系统时间

echo        #显示一行文本

watch        #监视命令执行情况

which        #显示命令的全路径

whereis        #显示命令及其相关文件的全路径

locate        #快速定位文件路径

dmesg        #系统启动异常诊断

文件备份与压缩命令

tar            #打包备份
    -zcvf     #压缩文件,定义压缩文件名(文件名需要以tar.gz结尾)
    -xvf    #解压文件
    -C        #指定解压路径
    
gzip        #压缩或解压缩

zip            #打包和压缩工具

unzip        #解压zip文件

scp            #远程文件复制

rsync        #文件同步工具

linux用户管理及信息查询

useradd        #创建用户
    -u 指定用户uid数值信息
    -g 指定用户所属的主要组信息
    -M 不创建家目录
    -s 指定使用的shell方式
    -G 指定用户所属的附属组信息
    -c 添加指定用户注释说明信息
    
userdel        #删除用户
    -r 彻底删除用户以及用户的家目录

usermod        #修改用户信息
    -s    修改用户的登录方式
    -g    修改用户的主要的组信息
    -G    修改用户的附属组信息
    -c    修改用户的注释信息

groupadd    #创建用户组
    -g 指定用户所属的主要组信息
    
groupdel    #删除用户组

passwd        #修改用户密码
    passwd oldboy 123456                    交互式设置密码
    echo 123456|passwd --stdin oldboy        非交互设置密码
    
change        #修改用户密码有效期

chpasswd    #批量更新用户密码

su            #切换用户

visudo        #编辑sudoers文件

sudo        #以令一用户身份执行命令

id            #显示用户的全信息

w            #显示已经登录的用户信息

who            #显示已经登录的用户信息

users        #显示已经登录的用户

whoami        #显示当前登录用户的名字

last        #显示用户登录列表

lastb        #显示用户登陆失败的记录

lastlog        #显示所有用户的最近登录记录

linux 磁盘与文件系统管理命令

fadisk        #磁盘分区工具

parted        #磁盘分区工具(2T以上)

mkfs        #创建linux系统文件

fsck        #检查并修复linux文件系统

dd            #转换或复制文件

mount        #挂载文件系统

umount        #卸载文件系统
    -lf        #强制卸载

df            #报告文件系统磁盘空间的使用情况

mkswap        #创建交换分区

swapon        #激活交换分区

swapoff        #关闭交换分区

sync        #刷新文件系统缓冲区

linux 进程管理命令

ps            #查看进程
    -aux
    -ef

pstree        #显示进程状态树

pgrep        #查找匹配条件的进程

kill        #终止进程
    -9        #强制终止进程
    
pkill        #通过进程名终止进程

killall        #通过进程名终止进程

top            #显示系统资源事实状况

nice        #调整系统运行时的优先级

renice        #调整系统运行中的进程的优先级

nohup        #用户退出系统继续工作

strace        #跟踪进程的系统调用

ltsce        #跟踪进程调用库函数

runlevel    #输出对当前运行级别

init        #初始化linux 进程

service        #管理系统服务(centos-7 使用 systemctl)

linux 网络管理命令

ifconfig        #配置或显示网络接口信息

ifup            #激活网络接口

ifdown            #关闭网络接口

route            #显示或管理路由表

arp                #管理系统的arp缓存

ip                #网络配置工具

netstat            #查看网络状态
    -lnutp
    
ss                #查看网络状态

ping            #测试主机之间网络的连通性

traceroute        #追踪数据传输路由状况

arping            #发送arp请求

telnet            #远程登录主机

nc                #多功能网络工具

ssh                #安全的远程登录主机

wget            #命令行下载工具

mail            #发送和接受文件

nslookup        #域名查询工具

host            #域名查询工具

nmap            #端口扫描器

tcpdump            #监听网络流量

linux 系统管理命令

lsof            #查看进程打开的文件

uptime            #显示系统的运行时间及负载

free            #查看系统内存信息

iftop            #动态显示网络借口流量信息

vmstat            #虚拟内存统计

mpstat            #cpu信息统计

iostat            #io信息统计

iotop            #动态显示磁盘

sar                #收集系统信息

chkconfig        #管理开机服务

setup            #系统管理工具

ethtool            #查询网卡参数

rpm                #rpm包管理工具 *****
    -ivh        安装rpm包
    -ql            查看rpm包的相关文件
    -qa            查看是否安装这个包
    -e            卸载
    
yum                #自动化rpm包管理工具 *****
    -y install    安装软件
    provides    查看命令属于哪个包
    repolist    查看yum源及仓库数量    
    remove        卸载(会卸载依赖)
    clean all    缓冲数据

linux 系统常用内置命令

sourec        #刷新文件
    sourec file   (等同于  . file)

alias        #别名
    alias rm="echo please-mv"

unalias        #取消别名
    unalias rm
    
history        #查看历史命令

export        #设置全局变量
    export q=1231231

unset        #清空变量
    unset q

基础学习–目录结构

/lost #found系统修复

/bin #二进制命令所在的目录

/boot #系统引导程序所需要的文件目录

/dev #设备软目录

/etc #系统配置,启动程序

/home #普通用户家目录

/lib #启动系统和运行命令需要的共享库文件和内核模块存放

/mnt #临时挂载点

/opt #额外的软件包安装目录

/proc #系统的内核目录

/root #root的家目录,最高权限

/sbin #root使用的 二进制命令所在的目录

/tmp #临时存放目录

/usr #用户或协同软件应用程序目录

/var #存放日志的目录

/etc 目录下的重要配置文件

/etc/sysconfig/network-scripts/ifcfg-eth0        #网卡配置文件
/etc/resolv.conf                                #linux系统DNS客户端配置文件
/etc/hostname                                    #主机名配置文件
/etc/hosts                                        #本地DNS配置文件
/etc/fastb                                        #开机自动挂载配置文件
/etc/rc.loacl                                    #开机自启配置文件
/etc/inittab                                    #系统启动运行级别配置文件
/etc/profile | /etc/bashrc                        #配置系统的环境变量|别名 文件
/etc/profile.d                                    #用户登陆后执行的脚本所在的目录
/etc/issue                                        #配置在用户登录端前显示的信息文件
/etc/motd                                        #配置在用户登录端后显示的信息文件
/etc/redhat-release                                #声明redhat版本号和名称信息的文件
========================================================================================
/etc/passwd                                      #记录系统用户信息文件
/etc/shadow                                       #系统用户密码文件
/etc/group                                       #组用户记录文件
/etc/gshadow                                     #组用户密码信
修改/etc 目录下的重要配置文件
/etc/sysconfig/network-scripts/ifcfg-eth0
    # 修改之后使用systemcet restart network 重启生效
    
/etc/resolv.conf
    # 本地DNS配置文件
    
/etc/hostname
    # 临时修改:
       hostname 主机名
    # 永久修改:(重启系统才能加载配置文件)
       vim /etc/hostname  (在配置文件里修改主机名)    
    # 通过命令:直接可以即临时修改,又永久修改
       hostnamectl set-hostname 主机名

##### 网卡配置文件详解

[root@Huang ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0  
TYPE=Ethernet                    #网络类型:以太网
BOOTPROTO=none                    #是否开启网络 none:静态开启  dhcp:动态开启
NAME=eth0                        #网卡逻辑名称
DEVICE=eth0                        #网卡物理名称
ONBOOT=yes                        #是否开机启动
IPADDR=10.0.0.200                #ip地址
PREFIX=24                        #子网掩码 (也可以写作:255.255.255.0)
GATEWAY=10.0.0.254                #网关
DNS1=223.5.5.5                    #DNS

/proc 目录下的重要知识介绍

/proc/loadavg                #系统的负载信息
/proc/memrino                #系统的内存信息
/proc/cpuinfo                #系统的cpu信息
/proc/mounts                #系统的挂载信息

/usr 目录下的重要知识介绍

/usr/loacl                    #编译安装的默认文件路径
/usr/src                    #存放源码文件的目录

/var 目录下的重要知识介绍

/var/log                    #记录系统运行文件的日志所在目录
/var/log/messages            #系统级别的日志文件
/var/log/secure                #用户登录信息日志文件(安全,重复多次登录)
/var/log/dmesg                #记录硬件信息加载情况的日志文件(也可以用 dmesg 命令查看)

基础学习–开机启动流程

CentOS-6启动流程

1. 按下电源
2. bios开机自检
3. mbr引导
4. grub菜单
5. 加载内核
6. 运行init进程
7. 读取/etc/inittab
8. 读取/etc/rc.sysinit初始化系统
9. 根据运行级别运行/etc/rc数字.d 下面的脚本
10. 启动mingetty显示登录界面

CentOS-7启动流程

1. 按下电源
2. bios开机自检
3. mbr引导
4. grub菜单
5. 加载内核
6. 运行systemd进程
7. systemd执行默认target配置(执行默认target配置文件/etc/systemd/system/default.target)
8. 并行启动各种服务(/usr/lib/systemd/system/   /etc/systemd/system/)
9. 启动mingetty显示登录界面

基础学习–CentOS-6/7 的区别

系统

项目CentOS6CentOS7
1. 安装过程6 一步一步7随意
2. 默认的文件系统ext4xfs
3. 启动流程串行并行
4. 运行级别runleveltarget
5. 内核2.6.323.10.0
6. 开机自启动服务chkconfigsystemctl enable/disable rsyncd
7. 开启或关闭服务/etc/init.d/network stop/startsystemctl start/stop rsyncd
8. 网卡命名eth0 eth1ens33
9. 普通用户uid>=500>=1000
10.修改主机名hostname和/etc/sysconfig/networkhostnamectl和/etc/hostname
11.修改字符集/etc/sysconfig/i18nlocalectl 和/etc/locale.conf
12.软件包名字tree-1.6.0-10.el6.x86_64 el6 C6tree-1.6.0-10.el7.x86_64 el7 C7
13.管理网卡主要服务:networkNetworkManager network
14.防火墙:iptablesfirewalld
15.查看内存free -h可用内存需要看bufer/cache这一行的可用内存直接看 ava
16./etc/fstab/根分区和/boot分区默认都是检查/根分区和/boot分区默认都是不检查

服务软件

项目CentOS6CentOS7
1.rsync直接使用rsync用户即可需要使用fake super = yes
2.数据库yum源中默认是MySQLyum源中默认是MariaDB
3.时间同步ntpdate 或ntpd服务chrony

基础学习–系统运行级别

查看系统运行级别方法:runlevel

[root@Huang ~]# runlevel 
N 3
切换运行级别:
    临时调整:
           init 切换的运行级别
    永久调整:
           centos6:
        # vi /etc/inittab
        centos7:
        # systemctl set-default rescue.target
        检查默认运行级别:
        # systemctl get-default

CentOS-6启动级别

启动级别:
       00  系统的关机级别   init 0 进入到关机状态
       01  系统的单用户模式 用于修复系统 或重置密码信息    没有网络
       02  系统的多用户模式                            没有网络
       03  系统的多用户模式 正常系统运行级别多用户模式级别  有网络
       04  预留级别
       05  图形化界面级别
       06  系统的重启级别   

CentOS-7启动级别

启动级别:target目标
       00  系统的关机级别   init 1 进入到维修模式                  poweroff.target
       01  系统的单用户模式 用于修复系统 或重置密码信息                rescue.target
       02  系统的多用户模式                            没有网络   multi-user.target
       03  系统的多用户模式 正常系统运行级别多用户模式级别  有网络     multi-user.target
       04  预留级别                                            multi-user.target
       05  图形化界面级别                                       graphical.target
       06  系统的重启级别                                       reboot.target

基础学习-vi/vim

# 命令模式
   vi 文件信息
   i   --- 进入编辑模式
   esc --- 退出编辑模式
   :wq --- 保存并退出
   :w
   :q
   :wq!--- 强制保存退出
   :q! --- 强制退出
   u   --- 撤销操作
   :noh--- 取消高亮
# 命令模式-->插入模式
  i   --- 表示从光标所在位置进入编辑状态    
  I   --- 表示将光标移动到一行的行首,再进入编辑状态
  o   --- 在光标所在行的下面,新起一行进行编辑
  O   --- 在光变所在行的上面,新起一行进行编辑
  a   --- 将光标移动到右边的下一个字符,进行编辑
  A   --- 将光标移动到一行的行尾,进入到编辑状态
  C   --- 将光标到行尾内容进行删除,并进入编辑状态
  cc  --- 将整行内容进行删除并进入编辑状态
# 底行模式
  :           输入一些命令
  /           进入搜索状态(向下搜索 n依次向下)
  ?           进入搜索状态(向上搜索 n依次向上)
  :set nu      显示行号
  :set nonu      取消显示行号

基础学习–系统符号/正则符号

系统符号

# 基础符号系列    
   美元符号:$
   叹号符号: !     取反
   竖线符号: |     管道符号 前一个命令执行结果交给后面命令处理
   井号符号: #     注释/root用户提示符
   
# 引号符号系列
   ''  输出的信息,所见即所得
   ""  和单引号功能类似 但对特殊信息会做解析
   
# 重定向符号
  >或1>    标准输出重定向符号
  2>      错误输出重定向符号
  >>或1>   标准输出追加重定向符号
  2>>     错误输出追加重定向符号
  <    标准输入重定向符号
  <<   标准输入追加重定向符号

# 路径信息系列
  ../  上一级目录
  ./   当前路径
  ~    返回到家目录
  -    两个目录之间进行快速切换

# 逻辑符号系列
  &&  与逻辑符号  前一个命令执行成功, 再执行后面的命令
  ||  或逻辑符号  前一个命令执行失败, 再执行后面的命令

系统通配符

*  模糊匹配所有内容  oldboy old ol o*
{} 生成序列信息 (生成一行序列)

正则符号

# 基础正则符号
 ^         以什么开头的信息
 $        以什么结尾的信息
 ^$        空行
 .        匹配任意一个字符,且只有一个字符
 *        匹配前一个字符连续出现了0次或者多次
 .*     匹配任意所有信息
 \        转义符号
 [ ]    匹配多个字符信息
 [^]    排除符号
 
# 扩展正则符号
  +        匹配前一个字符连续出现了1次或者多次 
  |     并且符号,用于匹配多个信息
  ()    指定信息进行整体匹配
  {}    可以指定字符连续匹配的次数
  ?        定义匹配前一个字符出现0或者1次

shell脚本的判断/比较 符号

  判断比较符号
  -gt     >
  -lt     <
  -eq     ==
  -ge     >=
  -le     <=
  -ne     <>

基础学习–定时任务

# 用户定时配置文件
/var/spool/cron/用户名
   crontab -l    #用户定时任务查看
   crontab -e    #用户定时任务编辑
   
# 系统定时配置文件
/etc/crontab

# 定时任务日志文件
/var/log/cron

# 定时任务编写格式:
编写语法规范:
# Example of job definition:
# .---------------- 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
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed

*   *   *    *   * 具体做什么事情
分  时  日  月  周

# 特殊的时间设置:
*/5  *  *  *  *        每隔5分钟

01-05  *  *  *  *    每小时的1到5分钟

14,20  *  *  *  *    每小时的14分和20分钟

#  定时任务设置注意事项:
1) 定时任务编写时需要加注释信息
2) 文件的路径尽量采用绝对路径
3) 命令信息最好也要用绝对路径 
4) 编写定时任务尽量在后面加上重定向黑洞 &>/dev/null
5) 尽可能让命令不要产生正确或错误的输出信息
   tar zcvf  --> tar zcf 
6) 多个定时任务命令,最好使用脚本实现
7) 定时任务中无法识别任务中的一些特殊符号  
   解决方式一: 利用转义符号        
   * * * * *  /bin/date "+\%F \%T" >/tmp/time.txt
   解决方式二: 利用脚本编写任务
   vim /oldboy/date.sh
   /bin/date "+%F %T"
      * * * * *  /bin/sh /oldboy/date.sh &>/dev/null

基础学习–linux磁盘分区方法

# 情况一: 磁盘分区实践--磁盘小于2T
    1) 准备磁盘环境
    准备了一块新的10G硬盘

    2) 在系统中检查是否识别到了新的硬盘
    检查是否有新的磁盘存储文件
    [root@oldboyedu ~]# ll /dev/sdb
    brw-rw----. 1 root disk 8, 16 Apr 28 08:54 /dev/sdb    
    
    3) 对磁盘进行分区处理(fdisk-- 进行分区处理 查看分区信息)
    fdisk -l   --- 查看分区信息 
    [root@oldboyedu ~]# fdisk /dev/sdb
    Welcome to fdisk (util-linux 2.23.2).
    
    Changes will remain in memory only, until you decide to write them.
    Be careful before using the write command.
    
    Device does not contain a recognized partition table
    Building a new DOS disklabel with disk identifier 0x6c918c6d.
    
    Command (m for help):   可以对磁盘进行分区了
    Command action
    d   delete a partition  *****
        删除分区    
    g   create a new empty GPT partition table
        创建一个新的空的GPT分区表(可以对大于2T磁盘进行分区)
    l   list known partition types
        列出可以分区的类型???
    m   print this menu
        输出帮助菜单
    n   add a new partition  *****
        新建增加一个分区
    p   print the partition table  *****
        输出分区的结果信息
    q   quit without saving changes 
        不保存退出
    t   change a partition's system id
        改变分区的系统id==改变分区类型(LVM 增加swap分区大小)
    u   change display/entry units
        改变分区的方式  是否按照扇区进行划分
    w   write table to disk and exit  *****
        将分区的信息写入分区表并退出==保存分区信息并退出
  
    开始分区: 
    1. 规划分4个主分区 每个分区1G
    分区操作过程
    Command (m for help): n                          
    Partition type:
       p   primary (0 primary, 0 extended, 4 free)
       e   extended
    Select (default p): p
    Partition number (1-4, default 1): 1
    First sector (2048-20971519, default 2048): 
    Using default value 2048
    Last sector, +sectors or +size{K,M,G} (2048-20971519, default 20971519): +1G
    Partition 1 of type Linux and of size 1 GiB is set
    
    分区操作检查:
    Command (m for help): p
    Disk /dev/sdb: 10.7 GB, 10737418240 bytes, 20971520 sectors
    Units = sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disk label type: dos
    Disk identifier: 0x3069f1dd
    
       Device Boot      Start         End      Blocks   Id  System
    /dev/sdb1            2048     2099199     1048576   83  Linux
    /dev/sdb2         2099200     4196351     1048576   83  Linux
    /dev/sdb3         4196352     6293503     1048576   83  Linux
    /dev/sdb4         6293504     8390655     1048576   83  Linux
    
    Command (m for help): n
    If you want to create more than four partitions, you must replace a
    primary partition with an extended partition first.
    
    2. 规划分3个主分区 1个扩展分区 每个主分区1G  剩余都给扩展分区
    删除分区 
    Command (m for help): d   
    Partition number (1-4, default 4): 1
    Partition 1 is deleted    
    创建逻辑分区
    Command (m for help): p
    
    Disk /dev/sdb: 10.7 GB, 10737418240 bytes, 20971520 sectors
    Units = sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disk label type: dos
    Disk identifier: 0x3069f1dd
    
       Device Boot      Start        End     Blocks   Id  System
    /dev/sdb1            2048    2099199    1048576   83  Linux
    /dev/sdb2         2099200    4196351    1048576   83  Linux
    /dev/sdb3         4196352    6293503    1048576   83  Linux
    /dev/sdb4         6293504   20971519    7339008    5  Extended 
    (有了扩展分区才能逻辑分区)
    
    Command (m for help): n
    All primary partitions are in use
    Adding logical partition 5
    First sector (6295552-20971519, default 6295552): 
    Using default value 6295552
    Last sector, +sectors or +size{K,M,G} (6295552-20971519, default 20971519): +1G
    Partition 5 of type Linux and of size 1 GiB is set
    
    Command (m for help): p
    Disk /dev/sdb: 10.7 GB, 10737418240 bytes, 20971520 sectors
    Units = sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disk label type: dos
    Disk identifier: 0x3069f1dd
    
       Device Boot      Start         End      Blocks   Id  System
    /dev/sdb1            2048     2099199     1048576   83  Linux
    /dev/sdb2         2099200     4196351     1048576   83  Linux
    /dev/sdb3         4196352     6293503     1048576   83  Linux
    /dev/sdb4         6293504    20971519     7339008    5  Extended
    /dev/sdb5         6295552     8392703     1048576   83  Linux
  
    需求: 划分2个主分区 划分2个逻辑分区
    sdb1  2G
    sdb2  2G
    sdb5  3G
    sdb6  1G    
      
    4) 保存退出,让系统可以加载识别分区信息
    让系统可以加载识别分区文件
    partprobe /dev/sdb 
# 情况二: 磁盘分区实践--磁盘大于2T
    第一个里程: 准备磁盘环境 
    虚拟主机中添加一块3T硬盘
    
    第二个里程: 使用parted命令进行分区
    
    mklabel,mktable LABEL-TYPE               create a new disklabel (partition table)
                                             创建一个分区表 (默认为mbr)
    print [devices|free|list,all|NUMBER]     display the partition table, available devices, free space, all found
                                             partitions, or a particular partition
                                             显示分区信息
    mkpart PART-TYPE [FS-TYPE] START END     make a partition
                                             创建一个分区 
    quit                                     exit program
                                             退出分区状态
    rm NUMBER                                delete partition NUMBER
                                             删除分区 

    修改磁盘分区类型: mklabel gpt
    分区方法: mkpart primary 0  2100G
    
    第三个里程: 加载磁盘分区
    partprobe /dev/sdc
03. 磁盘层次结构--格式化操作(创建文件系统)
    mkfs.xfs  /dev/sdb1 
    mkfs -t xfs /dev/sdb2
    
    创建文件系统: 磁盘分区存储数据的方式
    
    ext3/4  centos6 
    xfs     centos7  格式效率较高  数据存储效率提升(数据库服务器)
    
    [root@oldboyedu /]# mkfs.xfs /dev/sdb2
    meta-data=/dev/sdb2              isize=512    agcount=4, agsize=65536 blks
             =                       sectsz=512   attr=2, projid32bit=1
             =                       crc=1        finobt=0, sparse=0
    data     =                       bsize=4096   blocks=262144, imaxpct=25
             =                       sunit=0      swidth=0 blks
    naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
    log      =internal log           bsize=4096   blocks=2560, version=2
             =                       sectsz=512   sunit=0 blks, lazy-count=1
    realtime =none                   extsz=4096   blocks=0, rtextents=0
    
04. 磁盘层次结构--磁盘挂载应用
    mount /dev/sdb1 /mount01
    mount /dev/sdb2 /mount02    
    检查确认:
    [root@oldboyedu /]# df -h
    /dev/sdb1      1014M   33M  982M   4% /mount01
    /dev/sdb2      1014M   33M  982M   4% /mount02
    
    如何实现开机自动挂载:
    方法一: 将挂载命令放入/etc/rc.local
    [root@oldboyedu /]# tail -2 /etc/rc.local 
    mount /dev/sdb1 /mount01
    mount /dev/sdb2 /mount02

    系统开机加载rc.local流程:
    加载/etc/rc.local --> /etc/rc.d/rc.local --> 以绝对路径方式执行
    /etc/rc.d/rc.local 
    chmod +x /etc/rc.d/rc.local
    
    方法二: 在/etc/fstab文件中进行设置
    UUID=e2fc8646-2b36-47cc-a35a-8c13208f4d0b /          xfs   defaults    0     0
    UUID=34fc45ba-c38c-42bc-a120-90f9d5dd2382 /boot      xfs   defaults    0     0
    UUID=62100743-6f8a-4f83-a37d-e2088c4830e2 swap       swap  defaults    0     0
    挂载磁盘文件(存储设备)                   挂载点     指定文件系统类型   挂载的参数    是否备份磁盘  是否检查磁盘 
    mount 挂载的磁盘文件 挂载点
    
    [root@oldboyedu ~]# tail -2 /etc/fstab
    /dev/sdb1            /mount01                xfs     defaults        0 0
    UUID=144738ff-0da3-4162-b574-40af379cbe9e /mount02      xfs     defaults        0 0
# 如何调整swap分区大小
    第一个历程: 将磁盘分出一部分空间给swap分区使用
    dd if=/dev/zero  of=/tmp/1G  bs=100M count=10
    
    第二个历程: 将指定磁盘空间作为swap空间使用
    [root@oldboyedu tmp]# mkswap /tmp/1G 
    Setting up swapspace version 1, size = 1023996 KiB
    no label, UUID=6dd70684-dec2-48cf-8fd9-f311548bbb4f

    第三个历程: 加载使用swap空间
    [root@oldboyedu tmp]# swapon /tmp/1G         (开启swap)
    swapon: /tmp/1G: insecure permissions 0644, 0600 suggested.
    [root@oldboyedu tmp]# free -h
                  total        used        free      shared  buff/cache   available
    Mem:           1.9G        225M        575M        9.6M        1.2G        1.5G
    Swap:          2.0G          0B        2.0G
    [root@oldboyedu tmp]# swapoff /tmp/1G          (关闭swap)
    [root@oldboyedu tmp]# free -h
                  total        used        free      shared  buff/cache   available
    Mem:           1.9G        224M        576M        9.6M        1.2G        1.5G
    Swap:          1.0G          0B        1.0G
    [root@oldboyedu tmp]# rm /tmp/1G -f            (删除swap)

基础学习–网络基础

ISO/OSI 七层模型

应用层           * 应用层程序接口规范  
表示层            * 数据转换加密 压缩
会话层            * 控制网络连接建立或者终止
传输层            * 保证数据传输的可靠性
网络层           * 可以实现通过路由找到目标网络
数据链路层       * 可以实现通过交换找到真正目标主机
物理层            * 指定一些网络物理设备标准 

七层模型的传输流程

TCP/UDP

TCP协议: 传输控制协议  --- 面向连接的网络协议
    在线发送文件==面向连接
    发送文件 --> 对端点击接收
    优点: 数据传输可靠性高 
    缺点: 数据传输效率低
    
UDP协议: 用户报文协议  --- 无连接的网络协议
    离线发送文件==无连接
    发送文件 --> 直接发送了
    优点: 数据传输效率高
    缺点: 数据传输可靠性低

TCP三次握手,四次挥手

# 重要控制字段:
syn(1): 请求建立连接控制字段
fin(1): 请求断开连接控制字段
ack(1): 数据信息确认控制字段
TCP三次握手过程: 
    1) 第一次握手: 
       发送syn请求建立连接控制字段, 发送seq序列号信息(X), 第一个数据包的系列号默认为0
    2) 第二次握手:
       发送syn请求建立连接控制字段, 同时还会发送ack确认控制字段
       发送seq序列号信息也为(Y), 还会发送ACK确认号(X+1)信息(对上一个数据序列号信息进行确认)
    3) 第三次握手:
       发送ack确认控制字段,发送seq序列号信息(X+1),发送ack确认号(Y+1)
TCP四次挥手过程: 
    1) 第一次挥手:
       发送fin请求断开连接控制字段,发送seq序列号信息(X), 发送上一条数据信息的确认ACK
    2) 第二次挥手:
       发送ack确认控制字段 
    3) 第三次挥手:
       发送fin请求断开连接字段, 发送ack确认字段
    4) 第四次挥手:
       发送ack控制字段

TCP的十一种状态集

TCP三次握手: 5种状态
    00: 最开始两台主机都处于关闭状态         closed
    01: 服务端将相应服务进行开启              closed --- listen
    02: 客户端向服务端发出连接请求            closed --- syn_sent
    03: 服务端接收到连接请求,进行确认          listen --- syn_rcvd
    04: 客户端再次进行确认                    syn_sent --- established
    05: 服务端接收到确认信息                  syn_rcvd --- established
    
TCP四次挥手: 6种状态
    01: 客户端发送请求断开连接信息                established -- fin_wait1
    02: 服务端接收断开连接请求,并进行确认          established -- close_wait
    03: 客户端接收到了确认信息                   fin_wait1   -- fin_wait2
    04: 服务端发送ack和fin字段                   close_wait  -- last_ack
    05: 客户端接收到请求断开连接信息,发送确认      fin_wait2   -- time_wait 
    06: 服务端接收到确认信息                     last_ack   -- closed
    07: 客户端等待一段时间                       time_wait   -- closed

TCP 问题

# 为什么连接需要3次?
    为了防止服务器端开启一些无用的连接增加服务器开销以及防止已失效的连接请求报文段突然又传送到了服务端,因而产生错误。
    
# 为什么断开连接需要4次? 
因为TCP是全双工通信的   
(1)第一次挥手     因此当主动方发送断开连接的请求(即FIN报文)给被动方时,仅仅代表主动方不会再发送数据报文了,但主动方仍可以接收数据报文。    
(2)第二次挥手     被动方此时有可能还有相应的数据报文需要发送,因此需要先发送ACK报文,告知主动方“我知道你想断开连接的请求了”。这样主动方便不会因为没有收到应答而继续发送断开连接的请求(即FIN报文)。   
(3)第三次挥手    被动方在处理完数据报文后,便发送给主动方FIN报文;这样可以保证数据通信正常可靠地完成。发送完FIN报文后,被动方进入LAST_ACK阶段(超时等待)。   
(4)第四挥手    如果主动方及时发送ACK报文进行连接中断的确认,这时被动方就直接释放连接,进入可用状态。

DNS 解析过程

1、在浏览器中输入www.baidu.com域名,操作系统会先检查自己本地的hosts文件是否有这个网址映射关系,如果有,就先调用这个IP地址映射,完成域名解析。 

2、如果hosts里没有这个域名的映射,则查找本地DNS解析器缓存,是否有这个网址映射关系,如果有,直接返回,完成域名解析。 

3、如果hosts与本地DNS解析器缓存都没有相应的网址映射关系,首先会找TCP/ip参数中设置的首选DNS服务器,在此我们叫它本地DNS服务器,此服务器收到查询时,如果要查询的域名,包含在本地配置区域资源中,则返回解析结果给客户机,完成域名解析,此解析具有权威性。 

4、如果要查询的域名,不由本地DNS服务器区域解析,但该服务器已缓存了此网址映射关系,则调用这个IP地址映射,完成域名解析,此解析不具有权威性。 

5、如果本地DNS服务器本地区域文件与缓存解析都失效,则根据本地DNS服务器的设置(是否设置转发器)进行查询,如果未用转发模式,本地DNS就把请求发至13台根DNS,根DNS服务器收到请求后会判断这个域名(.com)是谁来授权管理,并会返回一个负责该顶级域名服务器的一个IP。本地DNS服务器收到IP信息后,将会联系负责.com域的这台服务器。这台负责.com域的服务器收到请求后,如果自己无法解析,它就会找一个管理.com域的下一级DNS服务器地址(baidu.com)给本地DNS服务器。当本地DNS服务器收到这个地址后,就会找baidu.com域服务器,重复上面的动作,进行查询,直至找到www.baidu.com主机。 

6、如果用的是转发模式,此DNS服务器就会把请求转发至上一级DNS服务器,由上一级服务器进行解析,上一级服务器如果不能解析,或找根DNS或把转请求转至上上级,以此循环。不管是本地DNS服务器用是是转发,还是根提示,最后都是把结果返回给本地DNS服务器,由此DNS服务器再返回给客户机。

没有评论:

发表评论

Ubuntu 20.04 搭建Discuz论坛

  sudo apt install apache2 mysql-server php php-mysql php-xml -y git clone https://gitee.com/3dming/DiscuzL.git cp -a DiscuzL/upload/* /var...