网络与linux基础
网络
一、查端口通信
1.查tcp端口
-
远程服务器的端口通不通 telnet ip 端口 :查tcp端口
2.查udp端口
-
nc -vu -z <IP地址> <端口号> -
-v(verbose):显示详细信息(告诉你连接是成功还是失败)。 -
-u(udp):指定使用 UDP 协议(默认为 TCP)。 -
-z(zero-I/O):只扫描端口,不发送任何数据。
二、osi七层模型
应用层(用户网络接口),表示层(数据加解密,压缩解压缩,格式转换),会话层,传输层(端到端的通信,段tcp 数据报UDP),网络层(路由选择,数据包),数据链路层(mac地址寻址,物理层信息封装成帧),物理层(比特)
典型协议 应用层:http80 https443 telnet23 dns53 dhcp67(服务端) 68(客户端)
ftp20(数据端) 21(控制端) smtp 25 ssh 22
传输层:
tcp 面向链接 可靠(三次握手建立连接,四次挥手断开连接)
(SYN SYN+ACK ACK) 三次握手
SYN标志位,用于建立连接 ACK(确认)确认收到数据。seq 序列号(数值) ack确认号(数值)
例如主机A,B之间通信
-
第一步 (SYN):A 发送
SYN=1, Seq=100。-
含义: “你好 B,我想建立连接,我的数据从 100 开始编排。”
-
-
第二步 (SYN + ACK):B 回复
SYN=1, ACK=1, Seq=500, Ack=101。-
含义: “收到 Seq 100 了(Ack=101 表示想要 101),我也想连你,我的数据从 500 开始编排。”
-
-
第三步 (ACK):A 回复
ACK=1, Ack=501。-
含义: “收到 Seq 500 了,握手成功,咱们开聊!”
-
四次挥手断开连接FIN+ACK ACK FIN+ACK ACK
-
第一挥手:客户端 ----> 服务端
-
标志位:
FIN=1,seq=u -
含义:客户端说:“我这边没数据要发了,申请关闭连接。”(进入
FIN_WAIT_1状态)
-
-
第二挥手:服务端 ----> 客户端
-
标志位:
ACK=1,seq=v,ack=u+1 -
含义:服务端回:“收到你的申请了,但我可能还有点尾巴数据要传,你等我下。”(客户端进入
FIN_WAIT_2,服务端进入CLOSE_WAIT)
-
-
第三挥手:服务端 ----> 客户端
-
标志位:
FIN=1,ACK=1,seq=w,ack=u+1 -
含义:服务端发完最后的数据后说:“好了,我也发完了,你可以彻底断开了。”(服务端进入
LAST_ACK)
-
-
第四挥手:客户端 ----> 服务端
-
标志位:
ACK=1,seq=u+1,ack=w+1 -
含义:客户端回:“收到,拜拜!”(客户端进入
TIME_WAIT,等待 2MSL 后彻底关闭;服务端收到后直接CLOSED)
-
udp(无连接不可靠)
网络层:ip ARP RARP ICMP IGMP(组播)
三、修改网卡配置
文件 /etc/sysconfig/network-script/ifcfg-网卡名
命令行 nmcli connection
四、查看
查看ip ip a /ifconfig
查看网关 route -n /ip route
查看DNS服务器地址 cat /etc/resolv.conf
六、添加临时路由
route add -net 目的网段 gw 下一跳地址
-
永久路由
方案一:/etc/rc.d/rc.local
写法; route add -net 目的网段 gw 下一跳地址
在 Linux 系统(尤其是 CentOS/RHEL 系列)中,/etc/rc.d/rc.local 是一个传统的开机自启动脚本文件。相当于每次开机执行一遍添加路由,以做到永久路由
方案二:/etc/sysconfig/network-scripts/route-出网卡名称(更规范)
写法:目标网络/掩码 via 网关 dev 网卡
七、tcpdump抓包工具
tcpdump -i 网卡名称 -nn 条件
tcpdump -i ens33 -nn port 80 add host 192.168.1.1
八、 网络
-
网络类型:局域网,广域网
-
网络的组成 终端(主机,打印机,电话)、交换机、路由器
-
传输介质 :网线,双绞线 光纤,单模光纤多模光纤 无线电波
IP地址表示方式 点分十进制
-
IP地址类型
A类0-127
B类128-191
C类191-223 单播地址
D类224-239 组播地址
E类 240-255
-
私网IP
A10.0.0.0 -- 10.255.255.255
B172.16.0.0 --- 172.31.255.255
C192.168.0.0 --- 192.168.255.255
-
子网掩码
A类255.0.0.0/8
B类255.255.0.0/16
C类255.255.255.0/24
识别一个IP地址是否为有效IP?
-
IP地址 ==== 网络位、主机位
-
子网掩码中的1对应的部分,称为网络位
-
子网掩码中的0对应的部分,称为主机位
从二进制角度讲,主机位不全为0、或者不全为1,称为有效IP
-
全为0, 称为网段、网络, 代表一串连续的IP地址
-
全为1, 称为广播地址
网关gateway: 网络出口
ping测试通信
-c 【数量】 指定icmp包的次数 -s 【字节数】 数据包大小
-i 【秒数】指定两个数据包发送间隔 默认1秒 -W 【秒数】 设置超时时间
-l 【网卡/IP】 指定发送数据包的网卡
Linux基础
一、linux系统启动过程
-
BIOS加点自检
-
读取MBR中的引导程序
-
加载grub
-
加载内核
-
系统初始化
-
运行login登录程序,等待用户登录
dmesg 命令速查
-
全称:Display Message / Diagnostic Message
-
功能:显示 Linux 内核环形缓冲区日志(硬件、驱动、OOM、启动、死机信息)
-
不记录:应用日志(Java/Nginx)、用户命令
| 参数 | 作用 |
|---|---|
| 无参数 | 显示原始日志,时间为 系统启动秒数(如 [123.456]) |
-T | 时间转为 人类可读格式(如 Mon Jul 27 17:41:05 2026) |
-c | 显示后清空缓冲区 |
-H | 分页带颜色显示 |
⚠️ 关键警告:服务器重启后,dmesg 缓冲区清空,之前的日志全部丢失。排查死机重启问题,重启后第一时间保存日志。
-
系统还能敲命令 → 重启前立即执行
dmesg -T > /tmp/oom_$(date +%Y%m%d).log保存。 -
系统已卡死无法操作 → 重启后执行
journalctl -k -b -1查看上一次启动的日志,当前dmesg已被清空,查不到死机原因。
二、查看
Linux的几种运行模式
0 关机模式 1 单用户模式 2字符模式无网络(无图形) 3.完整字符模式(标准)
4 预留 5 图形界面模式 6 重启模式
查看系统内核版本 uname -r
uname -a 更详细
查看系统发行版本 cat /etc/os-release
查看cpu详细信息 /proc/cpuinfo
查看内存详细信息 /proc/meminfo
stat 查元数据信息
文件类型识别工具 file
wc 统计文件字符数 显示 行数 单词数 字符数
wc -l 行数
了解命令详细信息 man
查看主机名配置文件 cat /etc/hostname
切换用户 su - 用户
查看用户登录信息who
修改字符集 /etc/profile export LANG=zh_CN.UTF-8 中文
export LANG=en_US.UTF-8 英文
三、文件目录操作
-
查看当前目录 pwd
-
查看目录下文件ls [选项] [目录名称]
选项: -a 所有文件(包括隐藏文件,以.开头的文件) -l查文件详细信息 -h人类可读(B,M,G) -d显示目录详细信息 S 按文件大小排序显示 t 按时间排序显示
- :普通文件
d : 目录
c : 字符设备文件、键盘,鼠标,显示器,打印机
b : 块设备文件,硬盘,分区,U盘,光盘
l : 软连接/符号链接,类似于快捷方式
-
查看文件,目录占用的硬盘空间
du -h 文件: 统计文件大小
du -sh 目录: 统计目录大小
du -ah 目录: 统计目录下所有文件大小
touch 文件名称 :创建空白文件
mkdir 【选项】 目录名称 :创建目录 -p 递归创建目录 -v显示创建过程
大括号展开,命令引用
-
大括号展开 touch /opt/db/{1..10}.sql
-
命令引用 $(命令) : touch /opt/web$(date +%F%T)
date +%Y 年 2024 date +%m 月 09 date +%d 日 27 date +%H 时 14 date +%M 分 22 date +%S 秒 37 date +%H_%M_%S 14_23_21 date +%F 2024-09-27 date +%T 14:23:55 date +%F_%T 2024-09-27_14:24:11
删除文件 rm -r目录 -f 强制删除
cat 文件名 查看文件内容
分页显示内容
-
more :只能向下滚动
-
less :支持上下滚动
head/tail 默认显示十行
管道符 | :将前一个命令的执行结果,交给后一条命令处理
cp -r复制目录 -a递归复制保留权限
mv 移动文件或者目录
四、压缩解压缩
压缩文件
-
gzip 文件名 :压缩 ---> xxx.gz
-
bzip 文件名 :------> xxx.bz2
-
xz 文件名 :------> xxx.xz
-
文件名 -d: 解压缩
创建压缩包tar
tar cf 归档文件.tar 源文件
c 创建 f 指定归档文件名称
调用gzip 压缩: tar czf 文件名.tar.gz 源文件
调用bzip2压缩: tar cjf 文件名.tar.bz2 源文件
调用xz 压缩: tar cJf 文件名.tar.xz 源文件
解压缩 : tar xf 压缩包名 【-C 目录名称】
-C 指定解压目录,x解压
五、vim编辑器
三种模式:命令模式,插入模式,末行模式
末行模式操作:
-
:set nu 显示行号
-
:%s/原字符/替换字符/g
命令模式操作:
-
$跳到行尾 ^行首
-
gg第一行
-
27gg 跳到27行
-
G最后一行
-
yy p复制沾沾
-
dd p剪切沾沾
-
dd删除一行
-
/内容 查找 n向下找 N向上找
-
u撤销
1.别名
查看别名alias
定义别名 alias 别名=’真实命令‘
永久定义别名所有用户生效 /etc/bashrc --> source /etc/bashrc
单个用户定义别名 用户家目录/.bashrc
删除别名 unalias 别名
2.定制vim vim /etc/vimrc
set nu
set tabstop=4
六、文件查找过滤
1.查找文件 find 目录 查找条件
-
按文件名称 -name -iname:忽略大小写
-
按文件大小查 -size +20M大于20M -20M 小于20M
-
按文件类型找 -type 类型
f文件 d 目录 b块设备文件 c字符设备文件
-
修改时间 -mtime
-
创建时间 -ctime
-
-maxdepth 数字:设置查找的最大深度。 -
多条件查找 -a
find /var/log/ -name "*.log" -a -ctime -7
-
执行操作 -exec 命令\;
find /opt/ -name "*.sql" -exec rm -rf {} \;
find /boot/ -size +20M -exec ls -lh {} \;
2.文本排序,去重
去重uniq 文件
排序 sort [选项] 文件
-
-n 按自然数大小排序
-
-r 倒叙 默认升序
-
-k2 按每行第2列排序
-
-t 指定分隔符,默认空白
-
-h 按照计算机K M G 单位排序
3.grep文件过滤
grep [选项] 条件 文件名称 文件名称
条件
-
[0-9] [a-z] [A-Z] [a-zA-Z] [0-9a-zA-Z] [rmt] 任意单个
grep "[0-9]" /etc/fstab
-
^xxx 以xxx开头
-
xxx$ 以xxx结尾
-
^$ 空行
-
[[:space:]] 正则空格
选项
-
-i 忽略大小写
-
-v 反向过滤,取反
-
-e 多条件过滤
-
-n 显示行号
-
-c统计行数 -
-E 支持扩展正则表达式
七、用户操作
-
/etc/password 用户信息
用户名称:x:uid:gid:说明信息:家目录:shell
-
/etc/shadow 用户密码信息
-
/etc/group 用户组信息
1.创建用户 useradd [选项] 用户名称
-
-s 指定shell 默认/bin/bash /sbin/nologin不允许与系统交互
-
-M不创建家目录 系统用户
-
-r 创建系统用户
-
-G 指定用户附加组
-
-u 数字 : 指定用户uid
查看用户登录信息 who
查看用户id:id 用户名称
修改用户密码 : passwd 用户名称
锁定用户 : passwd -i 用户名称
解锁用户 : passwd -u 用户名称
2.修改用户信息usermod
-
-s 修改shell
-
-G 修改附加组 -aG加入多个组
3. 删除用户 userdel -r 用户名称 -r同时删除用户相关文件
4.用户组操作
-
创建用户组 groupadd 组名
-
删除用户组 groupdel 组名
-
将用户加入组 gpasswd -a 用户名 组名
-
将用户踢出组 gpasswd -d 用户名 组名
八、硬盘操作
-
硬盘类型: 机械硬盘 转速 RPM 5400/7200/10000/120000RPM SSD固态硬盘
-
数据块 block,默认每个块4K 数据存储时会被转换成数据块、随机存储
建立完分区需要partprobe让硬盘识别分区
查看块设备 lsblk
1.硬盘分区
方便分类存储数据
系统盘:至少得有1个主分区 数据盘:无所谓
主分区 最多创建4个
扩展分区 方便创建逻辑分区,最多只能有1个; 主分区 + 扩展分区 <= 4
逻辑分区 无数量限制
2.常见文件系统
windows NTFS ,fat32(淘汰)
linux xfs ext4
3.MBR格式硬盘操作
分区工具 fdisk
n:新建分区 d:删除 p:显示 w:保存 q:退出
创建文件系统/格式化
mkfs -t 文件系统 设备名称
硬盘挂载mount
临时挂载mount 设备名称 挂载点
卸载 umount 挂载点
永久挂载 开机自动挂载 /etc/fstab
设备名称 挂载点 文件系统 挂载信息 0 0
4.GPT格式分区
1、分区表类型
-
MBR 容量不能超过2T 分区表容量是固定64字节, 所以, 主+扩展<=4 分区工具: fdisk
-
GPT 支持容量大于2T的硬盘 分区工具: parted
分区工具 parted
// 指定分区表格式为gpt
[root@martin-host ~]# parted /dev/sdd mklabel gpt
// 创建分区, parted 硬盘 mkpart 分区名称 起始大小 终止大小
[root@martin-host ~]# parted /dev/sdd mkpart p1 1 500G
[root@martin-host ~]# partprobe /dev/sdd
5.inode/i节点
df -i 查看inode节点
[root@martin-host ~]# df -i /db/oracle/ 文件系统 Inode 已用(I) 可用(I) 已用(I)% 挂载点 /dev/sdc5 51200 10 51190 1% /db/oracle
查元数据信息 stat /etc/fstab
6.链接文件
软连接 相当于快捷方式
硬链接 在源文件inode上加了个标识
软硬链接区别:
软连接可以链接目录,文件,硬链接只可链接文件
源文件删除软连接失效硬链接没事
软连接支持跨分区,硬链接不行
7.dd命令
测试硬盘读写
dd if =/dev/zero of=文件 bs=4M count=100
九、LVM逻辑卷
pv 物理卷操作
pvscan 查看物理卷
pvcreate 物理设备
vg 卷组操作
vgscan
vgdisplay 详细信息
vgcreate 卷组名 物理卷
vgextend 卷组名 物理卷
lv逻辑卷操作
lvscan
lvcreate -L 5G -n 逻辑卷名 卷 组名
lvextend -L 20G 逻辑卷名 卷 组名 :扩展到20G
扩展20G是 +20G
lvremove 删除逻辑卷
逻辑卷扩容,先扩卷组,在逻辑卷,文件系统
扩展文件系统
-
xfs :xfs_growfs 逻辑卷名称
-
ext4 : resize2fs /dev/cloud/docker(逻辑卷名称)
逻辑卷缩容,XFS不支持
1.数据备份
2.卸载逻辑卷,不支持在线
3.检查文件系统是否损坏 e2fsck -f 逻辑卷
4.先缩减文件系统大小 resize2fs /dev/cloud/docker 5G 缩减到5G
5.在缩减逻辑卷大小lvredius
6.重新挂载验证数据
十、RAID
冗余磁盘阵列
加快数据读写速度,提高数据可靠性
RAID0
至少两块盘,没有数据冗余不可靠,读写速度块,利用率100%
RAID1
至少两块盘,读写速度适中,利用率50%,适合作系统盘,数据可靠,降低写数据
RAID5
至少三块盘,读写快,数据可靠,磁盘利用率少一块盘,n-1/n,最多同时坏一块盘,奇偶校验卷
READ6 和READ5一样,但是最多同时坏两块盘
RAID10
至少4快盘,先READ1 在READ0 数据可靠,读写速度快,磁盘利用率50%,适合作数据盘
十一、主机网卡配置
-
查看网关 route -n
-
查dns cat /etc/resolv.conf
-
网卡配置文件 /etc/sysconfig/network-script/ifcfg-ens33
nmcli工具
-
查看网卡配置:nmcli connection show
-
删除网卡配置:nmcli connection delete ens33
-
配置网卡:nmcli connection add type ethernet ifname ens33 con-name ens33
-
nmcli connection modify ens33 ipv4.address "x.x.x.x/24"
-
nmcli connection modify ens33 ipv4.gateway "x.x.x.x"
-
nmcli connection modify ens33 ipv4.dns "x.x.x.x"
-
nmcli connection modify ens33 ipv.method manual
-
nmcli connection modify ens33 autoconect on
-
nmcli connection reload
-
nmcli connection up ens33
路由设置
-
配置静态路由 :route add -net 目的网段 gw 下一跳地址
-
查看路由表: route -n
-
添加永久路由: /etc/rc.d/rc.local
-
开启路由转发功能:sysctl -a
vim /etc/sysctl.conf
net.ipv4.ip_forward =1
sysctl -p
网卡绑定
解决问题
-
单块网卡单点故障
-
单块网卡带宽有限,提升带宽
绑定方式:
-
bond centos6.x之前,最多支持绑定2块网卡
-
team centos7.x后最多支持绑定8块网卡
team绑定的模式
-
activebackup默认,主备,同一时间只有一块网卡正常接收流量,另外网卡作为备用
-
roundrobin/loadbalance 负载均衡模式,所有网卡共同处理访问流量
配置activebackup模式的网卡绑定
-
删除物理网卡所有配置
-
创建网卡绑定,虚拟网卡team1,指定工作模式为activebackup
nmcli connection add type team ifname team1 con-name tesm1 config '{"runner":{"name":"activebackup"}}' -
添加物理网卡
nmcli connection add type team-slave ifname ens36 con-name team1-ens36 master team1 nmcli connection add type team-slave ifname ens37 con-name team1-ens37 master team1
4.配置ip
[root@localhost ~]# nmcli connection modify team1 ipv4.addresses "192.168.140.200/24"
[root@localhost ~]# nmcli connection modify team1 ipv4.gateway "192.168.140.2"
[root@localhost ~]# nmcli connection modify team1 ipv4.dns "223.5.5.5"
[root@localhost ~]# nmcli connection modify team1 +ipv4.dns "114.114.114.114"
[root@localhost ~]#
[root@localhost ~]# nmcli connection modify team1 ipv4.method manual
[root@localhost ~]# nmcli connection modify team1 autoconnect on
[root@localhost ~]#
[root@localhost ~]# nmcli connection reload
[root@localhost ~]# nmcli connection up team1
产看绑定后的网卡信息:ifconfig team1
5.查看网卡绑定状态 teamdctl team1 state
十二、软件安装
Linux安装包格式 centos : rpm包 Debian/Ubuntu: deb包 源码安装包 xxx.tar.gz
rpm工具
-
rpm -ivh 软件安装包
-
rpm -q dhcp 查看软件是否安装
-
rpm -qa 查看所有安装的软件
-
查询文件由那个软件生成
which ifconfig
rpm -qf /usr/sbin/ifconfig
-
查询软件生成的文件 rpm -ql 软件名
-
卸载软件 rpm -e 软件名
yum工具
自动解决安装依赖
-
yum install 软件 ;下载
-
yum remove 软件 ;卸载
-
yum update 软件 : 更新
-
yum search 软件
yum provides 软件 搜索
-
编写yum源
cat /ect/yum.repos.d/mysql80.repo [mysql80] name=mysql80 baseurl=ftp://10.11.0.254/software/mysql8.0.42/ enabled=1 gpgcheck=0
-
查看yum源 : yun repolist
-
清理yum 缓存: yun clean all
-
查看所有软件 yum list all
yum缓存
开启yum缓存
vim /etc/yum.conf
[main]
cachedir=/var/cache/yum/$basearch/$releasever
keepcache=1
获取缓存安装包(下载软件)
[root@localhost ~]# yum install openstack-glance
[root@localhost ~]# mkdir /glance
[root@localhost ~]# find /var/cache/yum/ -name "*.rpm" -exec cp {} /glance/ \;
编写本地源 createrepo /本地目录/
[root@localhost ~]# cat /etc/yum.repos.d/glance.repo
[glance]
name=glance
baseurl=file:///glance
enabled=1
gpgcheck=0
源码软件的安装
下载安装包 xxx.tar.gz xxx.tar.bz2
解压缩
切换软件解压目录 cd 软件解压目录/
配置软件安装路径,功能参数./configure --prefix=/usr/local/htop
编译,将代码转换成计算机可执行文件make
安装,生成软件相关文件make install
十三、进程操作
1.进程查看 ps -elf
查进程树 pstree
查看内存 free -m / free -h
2.控制进程前后台运行
将命令放入后台 nohup 命令 &
查看后台任务 jobs -l
将命令调入前台 fg 1
将正在运行的任务放入后台暂停执行ctrl + z
将后台暂停任务继续执行 bg 1
3.向进程发送信号
kill [信号] PID
默认是结束信号
查看信号 kill -l 15正常结束 9强制杀死 18恢复进程 19挂起进程
计划任务
-
一次性任务
前提:依赖于atd服务正常运行 rpm -q at systemctl status atd
创建一次性任务 : at 10:32
[root@localhost ~]# at 10:32
at> rm -rf /tmp/*
at> <EOT>
job 1 at Sat Oct 19 10:32:00 2024
// 查看一次性任务
[root@localhost ~]# at -l
1 Sat Oct 19 10:32:00 2024 a root
-
周期性任务
创建周期性任务 crontab -e
分 时 日 月 周 任务
/每隔多少时间 */30 每隔半小时 10-12 连续时间 30 8,1012 * * * 每天早上8点半,10点半 12点半
查看周期性任务:crontab -l
注意:写命令的全路径,%默认识别为命令的结束符,需要转义加\
性能查看工具
top
动态显示进程 M :按内存占比,倒叙显示进程
P:按CPU占比,倒叙显示进程
查看系统负载CPU负载
top - 15:12:59 up 6:09, 1 user, load average: 0.02, 0.02, 0.13
最近1、5、15分钟的平均负载
负载值 <= CPU数量 * 2, 正常
查系统负载uptime
查cpu数量nproc lscpu
查看内存 free -h vmstat 1 3
查看cpu mpstat 1 5
查硬盘io iostat
查网卡流量 sar -n DEV 1 3
查网卡带宽 ethtool ens33
十四、SSH协议介绍
常用操作
-
远程连接 ssh 用户名@主机
-
执行远程命令 ssh root@192.168.140.10 ifconfig ens33
-
远程拷贝文件 scp file01 root@192.168.140.10:/tmp
加密
对称加密
-
加密 openssl enc -e -des -in /opt/file01(要加密的文件) -out /opt/file01_new(加密后文件)
-
解密数据 openssl enc -d -des -in /opt/file01_new -out /opt/file01
非对称加密(公钥加密私钥解密)
生成密钥对 :ssh-keygen -t rsa
将公钥拷贝到远端的服务器 : ssh-copy-id root@192.168.140.10
---可以实现主机间的免密登录
如果想要多个主机间相互实现免密登录,需要在其中一个主机生成密钥对,再把这个密钥对里面的公钥改名成authorized_keys,分别拷贝到需要免密登录的主机用户的家目录就可以。
ssh-copy-id做了什么?
-
将公钥文件拷贝到远端服务器对应用户的家目录,改名为authorized_keys
-
将密钥文件的权限修改为600
ssh服务配置
-
配置文件 /etc/ssh/sshd_config
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)