前言 本文档纯粹是初学者的一面之词,谬误之处还请海涵。
目录
一、Linux 基础命令 1.1 Vim 编辑器 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 set nu 显示行号set nonu 取消行号set list 显示空格及空行yy 复制当前行 3 yy 复制3 行p 粘贴dd 删除当前行 3 dd 删除3 行dG 删除光标行到末尾 u 撤销G 光标到最后一行 gg 移动到行首 :数字 跳转到指定行 wq! 强制保存并退出 q! 强制退出 s/123 /321 /g 替换当前行第一个/后的关键字为第二个(单行) %s/123 /321 /g 替换全文 :1 ,29 s/^#// 取消1 -29 行的注释 sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config sed -i 's/PasswordAuthentication no/PasswordAuthentication yes/' /etc/ssh/sshd_config
1.2 文件与目录操作 1 2 3 4 5 6 7 8 9 10 touch 文件名 mkdir 目录名 cd 目录 rm -rf 目录或文件名 cp 文件 路径/xx.bak mv 文件 路径 mv 旧文件名 新文件名 touch {1..3}.txt touch `date +%F` touch `date +%Y-%m-%d-%H-%M-%S`
1.3 文件查看 1 2 3 4 5 6 7 8 cat 文件名 head -3 文件名 tail -20 文件名 tail -f 文件名 tailf 文件名 more 文件名 less 文件名 man 命令
1.4 系统信息 1 2 3 4 5 6 7 cat /etc/system-release uname -r uname -a hostname hostnamectl set-hostname xx date date 010100012020
1.5 文件属性与链接 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 d 目录 f 文件 l 链接 b 块设备 c 字符设备 s 套接字 ls -i df -i ln 源文件 链接文件 ln -s 源文件 链接文件 chattr +i 文件名 chattr -i 文件名 lsattr 文件名 lsattr -d 目录名
1.6 文件大小与磁盘 1 2 3 4 5 du -sh 文件名 du -sh * lsblk blkid df -Th
1.7 Alias 别名 1 2 3 4 5 6 7 8 9 10 11 12 13 alias [name[=value]] unalias 别名 alias alias ll='ls -l' alias grep='grep --color=auto' alias ..='cd ..' alias ...='cd ../..' alias lls='ls -l;ls -a' echo "alias ll='ls -l'" >> ~/.bashrc
⚠️ 不要使用危险别名,如 alias ls='rm -rf',会导致误删。
1.8 重定向
1.9 文件查找 find 基本查找 1 2 3 4 5 6 7 8 9 10 find /tmp/ -name "1.txt" find /tmp/ -iname "file1" find /tmp/ -type f find /tmp/ -type d find /tmp/ -perm 755 find /tmp/ -size 1M find . -empty find . -size +1k -a -size -10k find . -name "1" -o -name "2" find /tmp/ ! -name "1.txt"
时间查找 1 2 3 find /tmp/ -mtime -10 find /tmp/ -mtime 0
查找后处理 1 2 3 4 5 6 7 8 9 10 11 find /tmp/ -name "*.txt" -exec rm -rf {} \; find /tmp/ -size 1M -exec cp -rf {} /srv/ \; find /tmp/ -name "1.txt" | xargs rm -rf find /tmp/ -name "*.txt" | xargs tar czf `date +%F`.tar.gz
1.10 压缩与归档 1 2 3 4 5 tar czf 包名.tar.gz 源文件/目录 tar xzf 包名.tar.gz tar xzf 包名.tar.gz -C /指定路径 tar tf 包名.tar.gz
1.11 SCP 与 Rsync 1 2 3 4 scp 文件 IP:/路径 scp -r 目录 IP:/路径 scp IP:/路径/文件 /本地路径
1.12 Wget 与 Curl 1 2 3 4 5 6 7 8 wget URL wget -O 路径/文件名 URL wget -c URL curl -O URL curl -o 路径/文件名 URL curl -I URL curl -s -w '...' -o /dev/null URL
1.13 计划任务 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 crontab -e crontab -l crontab -r 0 2 * * 5 /usr/bin/touch /tmp/1.txt 0 */2 * * * /usr/bin/touch /tmp/1.txt 0 2 14 * * /usr/sbin/shutdown now crontab -u jack -e at now +1min at 11:45 < at.jobs
1.14 随机密码生成 1 2 3 4 < /dev/urandom tr -dc a-z | head -c ${1:-32} ; echo < /dev/urandom tr -dc A-Z | head -c ${1:-10} ; echo < /dev/urandom tr -dc 0-9 | head -c ${1:-10} ; echo < /dev/urandom tr -dc 0-9A-Z | head -c ${1:-10} ; echo
1.15 实用一行命令 1 2 3 4 5 6 7 8 9 10 11 12 13 14 netstat -n | awk '/^tcp/ {++y[$NF]} END {for(w in y) print w, y[w]}' grep 关键字 * -R grep IP * -R | awk -F : '{print $1}' | uniq -c | awk 'NR==2{print $2}' sed -r 's#原字符串#新字符串#' 文件 sort -t":" -k3 -n /etc/passwd
1.16 MD5 校验 1 2 3 4 5 6 7 8 9 10 md5sum 文件名certutil -hashfile 文件名 MD5 md5 文件名 md5 -r 文件名 md5 -s "字符串"
1.17 tcpdump 抓包 1 2 3 4 5 6 7 tcpdump -i eth0 -nn port 80 tcpdump -i eth0 udp port xxx tcpdump -i eth0 -nn port 22 and src host 192.168.20.100 tcpdump -i eth0 dst 192.168.100.100 and tcp port 9080 tcpdump -i eth0 -tnn dst port 80 -c 1000 | awk -F "." '{print $1"."$2"."$3"."$4}' | sort | uniq -c | sort -nr | head -20
1.18 压力测试 1 2 ab -n 1000 -c 10 http://xxx.xxx.xxx.xxx/ stress -c 2 --timeout 600
1.19 小工具
二、用户与权限管理 2.1 用户管理 1 2 3 4 5 6 7 useradd 用户名 useradd -r 用户名 -M -s /bin/false passwd 用户名 userdel -r 用户名 cat /etc/passwd | wc -l su 用户名 su - 用户名
2.2 权限管理 1 2 3 4 5 6 7 8 chmod u+x file1.txt chmod a=rwx file1.txt chmod a=- file1.txt chmod ug=rw,o=r file1.txt chown 属主:属组 文件 chown -R 属主:属组 目录 chgrp 组名 文件
2.3 umask 权限掩码 1 2 3 4 5 文件默认权限 = 0666 - umask 目录默认权限 = 0777 - umask root 用户 umask:0022 → 文件644 目录755 普通用户 umask:0002 → 文件664 目录775
2.4 sudo 提权 1 2 3 4 5 6 7 8 9 useradd jumper echo "jumper ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/jumperuseradd 用户名 -G wheel
2.5 环境变量 1 2 3 vim /etc/profile.d/myenv.sh source /etc/profile
三、进程管理 3.1 查看进程 1 2 3 4 5 6 7 ps aux | less ps -ef | less ps aux --sort -%cpu | less ps aux --sort -%mem | less ps aux | grep gedi[t] top
3.2 进程信号
信号
编号
作用
HUP
-1
重新加载(PID不变)
KILL
-9
强制杀死
TERM
-15
正常终止(默认)
CONT
-18
激活进程
STOP
-19
挂起进程
1 2 3 4 5 6 kill -9 PID pkill 服务名 pkill -u 用户名 killall 进程名 lsof -p PID lsof -i:端口号
3.3 进程状态
状态
含义
R
运行中(Running)
S
可中断睡眠(Sleep)
D
不可中断睡眠(Disk Sleep)
T
停止(Stopped)
Z
僵尸进程(Zombie)
X
死掉的进程
1 ps aux | awk '{print $8}' | grep Z | wc -l
僵尸进程 :子进程结束但父进程未回收 → 占用进程号 → 系统无法创建新进程。
孤儿进程 :父进程结束但子进程还在 → 由 init(PID=1) 回收 → 不占用资源。
3.4 CPU 上下文切换
CPU 寄存器 :CPU 内置的高速小容量内存。
程序计数器(PC) :存储 CPU 正在执行或即将执行的指令位置。
上下文切换 :保存前一个任务的上下文 → 加载新任务 → 跳转到新位置运行。
三种类型:进程上下文切换 、线程上下文切换 、中断上下文切换 。
3.5 Nice 优先级
Nice 值范围:-20 ~ +19
Nice 值越高 → 优先级越低(更容易让出 CPU)
Nice 值越低 → 优先级越高(更不容易让出 CPU)
1 2 3 ps -l nice -n 优先级 命令 renice 优先级 -p PID
四、系统信息与监控 4.1 系统目录结构
目录
用途
/
根目录
/usr/
系统应用存储目录
/etc/
系统配置文件
/tmp/
临时文件
/home/
普通用户家目录
/root/
root 用户家目录
/dev/
设备目录
/var/
系统日志
/boot/
引导程序、内核
/proc/
伪文件系统(进程、内核参数)
/sys/
伪文件系统
/opt/
第三方软件
/srv/
服务数据
4.2 重要配置文件速查
文件
作用
/etc/fstab
开机自动挂载
/etc/rc.local
开机自启动脚本
/etc/hostname
主机名
/etc/hosts
本地域名解析
/etc/resolv.conf
DNS 地址
/etc/exports
NFS 主配置
/etc/cron.deny
禁止创建计划任务的用户
4.3 系统启动流程 1 2 加电 → BIOS → GRUB → 加载内核 → 加载配置文件 → 加载内核模块 → 初始化服务 → 启动 systemd(PID=1) → login 界面
关键进程 :systemd (PID=1 负责启动其他程序)、kthreadd (PID=2 内核线程管理)。
4.4 系统运行级别
级别
含义
0
关机
1
单用户模式(root 权限,禁止远程登录)
2
多用户模式(无 NFS)
3
完整多用户文本模式(常用服务器模式)
4
保留
5
图形化模式
6
重启
4.5 系统监控命令 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 cat /proc/cpuinfo free -m free -h cat /proc/meminfo | awk '{print $1,$2/1024" MB"}' |column -t top / w / uptime watch -d -n1 uptime mpstat -P ALL 5 pidstat -u 5 1 vmstat 1 5
4.6 重要参数文件 1 2 3 4 cat /proc/cpuinfo cat /proc/meminfo echo 3 > /proc/sys/vm/drop_caches cat /proc/sys/vm/vfs_cache_pressure
4.7 CentOS 6 vs 7
对比项
CentOS 6
CentOS 7
防火墙
iptables
firewalld
默认数据库
MySQL
MariaDB
服务管理
service xx restart
systemctl restart xx
启动加载器
SysV init
systemd
五、磁盘与文件系统 5.1 分区 1 2 3 fdisk /dev/sdb gdisk /dev/sdb lsblk
MBR vs GPT :MBR 最大支持 2TB、4 个主分区;GPT 支持更大容量、更多分区,配合 UEFI 启动。
5.2 格式化与挂载 1 2 3 4 5 6 7 8 9 10 11 mkfs.xfs /dev/sdb -f mkfs.ext4 /dev/sdb mount /dev/sdb /mnt/d1 umount /dev/sdb /mnt/d1 mount -a
5.3 ext4 vs XFS
对比
ext4
XFS
inode
创建时固定数量,消耗完不能创建文件
动态产生
容量
较小
支持 >16TB
格式化速度
慢
快
修复速度
慢
快
适用
兼容性广
大存储、高性能
5.4 XFS 修复 1 2 xfs_check /dev/sdd; echo $?
5.5 Swap 分区
内存大小
推荐 Swap
< 4GB
≥ 2GB
4~16GB
≥ 4GB
16~64GB
≥ 8GB
64~256GB
≥ 16GB
1 dd if =/dev/zero of=/swap2.img bs=1M count=1024
5.6 磁盘 I/O 监控 1 2 3 4 iostat -xk 1 pidstat -d 1 iotop -o -d 5 iotop -oP
磁盘瓶颈 5 大指标 :使用率(%util)、饱和度、IOPS(r/s+w/s)、吞吐量(rkB/s+wkB/s)、响应时间(r_await+w_await)。
六、LVM 逻辑卷管理 6.1 核心概念 1 PV(物理卷) → VG(卷组) → LV(逻辑卷)
注意 :PV 不能跨越 VG,LV 不能跨越 VG,一个系统可创建多个 VG,一个 VG 可创建多个 LV。
6.2 创建 LVM 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 pvcreate /dev/sdb pvs / pvscan vgcreate datavg /dev/sdb vgs / vgscan lvcreate -L 200M -n lv1 datavg lvcreate -L 300M -n lv2 datavg lvs / lvscan mkfs.xfs /dev/datavg/lv1 mkfs.ext4 /dev/datavg/lv2 mkdir /mnt/lv1 /mnt/lv2mount /dev/datavg/lv1 /mnt/lv1 mount /dev/datavg/lv2 /mnt/lv2
6.3 VG 扩容与缩小 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 pvcreate /dev/sdc vgextend datavg /dev/sdc pvmove /dev/sdb /dev/sdc vgreduce datavg /dev/sdb lvextend -L +5G /dev/centos/root xfs_growfs /dev/centos/root lvreduce -L 80M /dev/datavg/lv1
6.4 删除 LVM(顺序:LV → VG → PV) 1 2 3 lvremove /dev/vg2/lv2 vgremove /dev/vg2 pvremove /dev/sdc
七、RAID 磁盘阵列 7.1 RAID 级别对比
RAID
最少盘数
利用率
容错
特点
RAID 0
2 (全盘0) / 1 (单盘0)
100%
无
读写快,无容错
RAID 1
2
50%
1块
镜像,读快写慢,常用于系统盘
RAID 5
3
(n-1)/n
1块
读写均衡
RAID 6
4
(n-2)/n
2块
双重校验,写慢
RAID 1+5
—
—
—
机械盘 RAID1 装系统 + 固态盘 RAID5 存数据
7.2 磁盘状态
状态
含义
Online
正常在线
Failed
故障(亮红灯)
Rebuild
正在重建同步
Ready
未加入阵列
Foreign
未知残留数据(需 Clear 后变为 Ready)
7.3 DELL 服务器 RAID 操作
进入 RAID 卡:重启时按 Ctrl+R
Foreign 状态处理:切到 Foreign 栏 → F2 → Clear
磁盘槽位:DELL 从 Slot 0 开始,HP/H3C/浪潮等可能从 Slot 1 开始
7.4 更换硬盘流程
确认故障盘型号(容量、转速、接口、尺寸)
新盘做检测,清除数据至 Ready 状态
发到 IDC 机房,附带工单(机房位置+服务器名+Slot ID)
工程师更换后确认状态 → 工单关闭
旧盘单独存放,定期销毁
八、网络管理 8.1 基础命令 1 2 3 4 5 6 ip a / ifconfig curl ifconfig.me route -n ping -c 10000 -i 0.01 IP地址 ethtool eth0 lspci | grep -i ethernet
8.2 网络诊断思路 1 2 3 4 5 6 ifconfig 看 RX/TX: 发包大收包小 → 网卡没问题,问题在上一级网络 发包小收包大 → 网卡出问题或遭受攻击 看 error 和 drop: 数值大 → 网络质量差 → 换网线/查带宽/查网卡驱动/查攻击
判断是服务器问题还是链路问题 :
ip a 确认 IP 段 → 2. 笔记本直连服务器 → 3. 笔记本配同段 IP ping 服务器 → 4. 通则服务器没问题 → 5. 把服务器网线插笔记本验证链路。
8.3 网卡配置 1 2 3 4 5 6 7 8 9 10 11 12 13 14 TYPE=Ethernet BOOTPROTO=none NAME=ens33 DEVICE=ens33 ONBOOT=yes IPADDR=192.168.10.20 PREFIX=24 GATEWAY=192.168.10.1 DNS1=8.8.8.8 nmcli c reload nmcli c up ens33
8.4 子接口配置 1 2 3 4 cp ifcfg-ens33 ifcfg-ens33:0systemctl restart network
8.5 网卡重命名 (ens33 → eth0) 1 2 3 4 vim /etc/sysconfig/grub grub2-mkconfig -o /boot/grub2/grub.cfg reboot
8.6 Bond 网卡绑定 Bond 模式 :常用 mode=4(动态链接聚合 LACP),其他如 mode=0(平衡轮循)、mode=1(主备)。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 vim /etc/sysconfig/network-scripts/ifcfg-bond0 DEVICE=bond0 TYPE=Ethernet ONBOOT=yes BOOTPROTO=none IPADDR=192.168.x.x PREFIX=24 vim ifcfg-ens33 DEVICE=ens33 MASTER=bond0 SLAVE=yes vim /etc/modprobe.d/bond0.conf alias bond0 bondingoptions bonding mode=4 miimon=100 systemctl restart network
8.7 解决网卡乱序 方法:进入 BIOS 拍照 MAC 地址 → 在网卡配置文件中绑定 MAC
1 2 HWADDR=52:54:00:9e:d5:4d
8.8 端口与连接 1 2 3 4 5 6 ss -tnlp netstat -tnlp netstat -unlp netstat -nat | grep ESTABLISHED | wc -l netstat -n | awk '/^tcp/ {++y[$NF]} END {for(w in y) print w, y[w]}' netstat -natlp | grep "tcp" | awk '{print$5}' | awk -F: '{print$1}' | sort | uniq -c | sort -rn
ss vs netstat :ss 直接读 /proc/net,利用内核 tcp_diag 模块获取第一手信息,比 netstat 遍历 /proc/PID 快得多。
8.9 路由 1 2 3 4 route -n route add -p IP mask 掩码 网关 route add -net 192.168.8.0/8 gw 10.0.0.1
8.10 防火墙 1 2 3 4 5 6 7 8 9 systemctl status firewalld systemctl stop firewalld systemctl disable firewalld setenforce 0 vim /etc/selinux/config iptables -L -n --line-numbers iptables -D INPUT 6
8.11 SSH 1 2 3 4 5 6 7 8 9 10 11 12 13 ssh-keygen ssh-copy-id -i 目标IP ssh 目标IP vim /etc/ssh/sshd_config Port 1000 systemctl restart sshd ssh 8.130.28.48 'ps -aux'
8.12 DNS
记录类型
作用
A
域名 → IPv4
AAAA
域名 → IPv6
CNAME
别名(域名 → 域名)
MX
邮件服务器
NS
名称服务器
SOA
起始授权结构
PTR
反向解析(IP → 域名)
1 2 3 dig 域名 vim /etc/resolv.conf
8.13 TCP Wrappers 优先级:/etc/hosts.allow > /etc/hosts.deny,都未匹配则默认放行。
1 2 3 sshd:ALL sshd:192.168.246.159
8.14 常用端口与服务 1 2 3 netstat -tnlp netstat -unlp lsof -i:端口号
8.15 丢包测试 1 2 3 ping -c 10000 -i 0.01 IP地址
九、交换机配置 9.1 Cisco VLAN 模板 1 2 3 4 5 6 7 8 9 10 11 enable configure terminal vlan 25 interface FastEthernet0/1 switchport mode access switchport access vlan 25 no shutdown end write
9.2 Cisco Bond 模板 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 enable configure terminal vlan 100 interface port-channel1 switchport mode access switchport access vlan 100 interface FastEthernet0/4 switchport mode access switchport access vlan 100 channel-group 1 mode on interface FastEthernet0/8 switchport mode access switchport access vlan 100 channel-group 1 mode on end write
1 2 3 4 " 查看命令 show ip interface brief " 查看接口状态 show vlan brief " 查看 VLAN show etherchannel summary " 查看聚合组
9.3 H3C VLAN 模板 1 2 3 4 5 6 7 8 9 10 system-view vlan 348 interface GigabitEthernet1/0/4 port link-mode bridge port access vlan 348 undo shutdown quit save
9.4 H3C Bond 模板 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 system-view vlan 335 interface Bridge-Aggregation1 port access vlan 335 exit interface GigabitEthernet1/0/17 port link-mode bridge port access vlan 335 port link-aggregation group 1 interface GigabitEthernet1/0/18 port link-mode bridge port access vlan 335 port link-aggregation group 1 quit save
1 2 3 4 " 查看命令 display interface brief " 查看接口状态 display vlan / display vlan all " 查看 VLAN display link-aggregation verbose Bridge-Aggregation " 查看聚合端口
9.5 网络常识
二层交换机 :数据链路层设备,按 MAC 地址转发(服务器机柜上)。
三层交换机 :有路由功能,可跑协议(机房核心交换机)。
VLAN :虚拟局域网,控制广播、提高安全性,同 VLAN 才能通信。
网线线序 568B:橙白 橙 绿白 蓝 蓝白 绿 棕白 棕(数据传输用 1、2、3、6 脚)。
光口交换机 → 光纤 → 万兆光模块 → 万兆网卡 → 服务器。
十、软件包管理 10.1 YUM 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo yum -y install epel-release yum clean all yum makecache yum repolist yum search 关键词 yum provides 命令 yum list yum -y install 包名 yum -y remove 包名 yum -y erase 包名 yum -y reinstall 包名 yum -y remove `rpm -qa | grep httpd` yum install xxx --nogpgcheck
10.2 挂载 ISO 作为 YUM 源 1 2 3 4 5 6 7 8 9 10 11 mkdir -p /mnt/kylin-isomount -o loop -t iso9660 /root/Kylin-Server-V10-SP3.iso /mnt/kylin-iso cd /etc/yum.repos.d/mkdir bak && mv *.repo bak/vim /etc/yum.repos.d/kylin-local.repo [kylin-local] name=Kylin V10 Local ISO Repository baseurl=file:///mnt/kylin-iso enabled=1 gpgcheck=0
10.3 RPM 1 2 3 4 5 6 rpm -ivh 包名 rpm -q 包名 rpm -qa | grep 关键词 rpm -e 包名
10.4 源码编译安装 1 2 3 4 5 6 7 8 9 tar xzf xxx.tar.gz cd xxx./configure --prefix=/usr/local/xxx make make install ./configure --prefix=/usr/local/a --with-b=/usr/local/b --with-c=/usr/local/c
10.5 安装方式对比
方式
适用场景
特点
RPM
银行、国企等无公网环境
需手动处理依赖
YUM
有公网
自动处理依赖,最方便
源码编译
需要特定版本的场景
最稳定,但耗时长
10.6 互传工具 1 2 3 yum -y install lrzsz rz sz 文件名
十一、服务与中间件 11.1 systemctl 服务管理 1 2 3 4 5 6 systemctl status 服务名 systemctl restart 服务名 systemctl stop 服务名 systemctl enable 服务名 systemctl disable 服务名 systemctl list-unit-files --state=enabled | grep nginx
11.2 时间同步 1 2 3 4 5 6 7 8 9 10 yum -y install ntp ntpdate -s pool.ntp.org vim /etc/chrony.conf server 210.72.145.44 iburst server ntp.aliyun.com iburst systemctl restart chronyd.service chronyc sources -v
11.3 HTTPD (Apache) 1 2 yum -y install httpd systemctl restart httpd
虚拟主机 :
基于端口:一个 IP 开放多个端口(如 80、1000、2000)
基于 IP:多个 IP 共用一个端口
1 2 3 4 5 6 7 8 9 10 11 12 13 <VirtualHost *:80 > ServerName www.example.com ServerAlias example.com DocumentRoot /web/example </VirtualHost> <Directory "/web/example" > Require all granted </Directory> Listen 1000
11.4 搭建 WordPress 博客 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 yum -y install mariadb mariadb-server mariadb-libs php php-mysql php-gd php-fpm php-cli gd httpd systemctl restart mariadb mysqladmin -uroot password "123" mysql -uroot -p123 -e "CREATE DATABASE boke; FLUSH PRIVILEGES;" mkdir -p /web/tianyuntar xzf wordpress-4.7.2-zh_CN.tar.gz cp -rf wordpress/* /web/tianyun/chmod -R 777 /web/systemctl restart httpd
11.5 Nginx 1 2 3 4 5 ./configure --prefix=/usr/local/nginx make && make install /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx -s stop
11.6 Nginx + GridFS 图片服务器 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 vim /etc/yum.repos.d/mongodb-org-3.4.repo [mongodb-org-3.4] name=MongoDB Repository baseurl=https://repo.mongodb.org/yum/redhat/$releasever /mongodb-org/3.4/x86_64/ gpgcheck=1 enabled=1 gpgkey=https://www.mongodb.org/static/pgp/server-3.4.asc yum makecache && yum -y install mongodb-org systemctl restart mongod mongofiles put --host 127.0.0.1 --port 27017 --db test 1.jpg --type jpg git clone https://github.com/rjhunjhunwla/nginx-gridfs cd nginx-gridfs && git submodule init && git submodule updatecd nginx-1.7.4./configure --add-module=../nginx-gridfs make && make install location /img/ { gridfs test field=filename type =string; mongo 127.0.0.1:27017; }
11.7 FTP (vsftpd) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 yum -y install vsftpd systemctl restart vsftpd yum -y install lftp lftp IP地址 get 文件 -o /tmp/ put 文件 mirror 目录 anon_upload_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=YES chmod -R 777 /var/ftp/
FTP 工作模式 :主动模式 / 被动模式,使用 20(数据)、21(控制)端口。
11.8 NFS 网络文件系统 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 yum -y install nfs-utils mkdir /webdataecho "hello" > /webdata/index.htmlvim /etc/exports /webdata 192.168.15.0/24(rw,sync ,no_root_squash) systemctl restart nfs exportfs -v yum -y install nfs-utils httpd showmount -e 服务端IP mount -t nfs 服务端IP:/webdata /var/www/html/ 服务端IP:/webdata /var/www/html nfs defaults 0 0
十二、数据库 MySQL/MariaDB 12.1 常用命令 1 2 3 4 5 6 7 8 9 10 11 12 13 mysql - u 用户名 - h IP地址 - P 3306 - p DROP USER 'test1' @'%' ;GRANT ALL ON * .* TO 'test1' @'%' IDENTIFIED BY 'Password' WITH GRANT OPTION;FLUSH PRIVILEGES; update mysql.user set authentication_string= PASSWORD('新密码' ) where User = 'root' ;alter user 'root' @'localhost' identified by '新密码' ;SET PASSWORD FOR 'root' @'%' = PASSWORD('新密码' );
12.2 MySQL 5.7 源码编译安装 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 yum erase mariadb mariadb-server mariadb-libs mariadb-devel -y userdel -r mysql rm -rf /etc/my* /var/lib/mysqluseradd -r mysql -M -s /bin/false wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-boost-5.7.27.tar.gz yum -y install ncurses ncurses-devel openssl-devel bison gcc gcc-c++ make cmake mkdir -p /usr/local/{data,mysql,log }tar xzvf mysql-boost-5.7.27.tar.gz -C /usr/local/ cd /usr/local/mysql-5.7.27cmake . \ -DWITH_BOOST=boost/boost_1_59_0/ \ -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ -DSYSCONFDIR=/etc \ -DMYSQL_DATADIR=/usr/local/mysql/data \ -DMYSQL_TCP_PORT=3306 \ -DMYSQL_UNIX_ADDR=/tmp/mysql.sock \ -DDEFAULT_CHARSET=utf8 \ -DEXTRA_CHARSETS=all \ -DDEFAULT_COLLATION=utf8_general_ci \ -DWITH_READLINE=1 \ -DWITH_SSL=system \ -DWITH_EMBEDDED_SERVER=1 \ -DENABLED_LOCAL_INFILE=1 \ -DWITH_INNOBASE_STORAGE_ENGINE=1 make && make install cd /usr/local/mysqlchown -R mysql.mysql ../bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data vim /etc/my.cnf [client] port = 3306 socket = /tmp/mysql.sock default-character-set = utf8 [mysqld] port = 3306 user = mysql basedir = /usr/local/mysql datadir = /usr/local/mysql/data socket = /tmp/mysql.sock character_set_server = utf8 ./bin/mysqld_safe --user=mysql & /usr/local/mysql/bin/mysql -uroot -p'临时密码' mysqladmin -u root -p'旧密码' password '新密码' echo 'PATH=$PATH:$HOME/bin:/usr/local/mysql/bin' >> /etc/profilesource /etc/profilecp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqldchkconfig --add mysqld chkconfig mysqld on /etc/init.d/mysqld start
十三、TCP/IP 协议深入 13.1 TCP 三次握手 1 2 3 4 客户端 服务端 |-------SYN(seq=x)---------->| SYN-SENT → SYN-RCVD |<---SYN+ACK(seq=y,ack=x+1)--| |-------ACK(ack=y+1)-------->| ESTABLISHED
为什么是三次?
防止已失效的连接请求到达服务端,导致服务端错误建立连接(浪费资源)。
三次能确认双方收发能力正常。
前两次握手不带数据 :防止 SYN Flood 攻击放大。
13.2 TCP 四次挥手 1 2 3 4 5 6 客户端 服务端 |-------FIN(seq=x)---------->| FIN-WAIT-1 → CLOSE-WAIT |<------ACK(ack=x+1)---------| | | (服务端继续发剩余数据) |<------FIN(seq=y)----------| LAST-ACK |-------ACK(ack=y+1)-------->| TIME-WAIT → CLOSED
为什么是四次? 服务端收到 FIN 后可能还有数据要发,ACK 和 FIN 分开发送。
13.3 TCP 11 种状态
状态
含义
LISTEN
监听连接请求
SYN-SENT
发送 SYN 后等待确认
SYN-RECEIVED
收到 SYN 后等待确认
ESTABLISHED
连接已建立
FIN-WAIT-1
等待远程 TCP 中断确认
FIN-WAIT-2
等待远程 TCP 中断请求
CLOSE-WAIT
等待本地用户中断请求
CLOSING
等待远程 TCP 中断确认
LAST-ACK
等待最终 ACK
TIME-WAIT
等待足够时间(2MSL)确保远程收到确认
CLOSED
无连接
TIME-WAIT 为何是 2MSL? 保证两端未收到或迟到的报文都已消失。
TIME-WAIT 过多的危害 :每个占用一个本地端口(上限 65535),端口耗尽则无法建立新连接。
13.4 SYN Flood 攻击
伪造大量不存在 IP 发送 SYN → 服务端大量 SYN-RCVD 占满半连接队列 → 无法处理正常请求。
防御:net.ipv4.tcp_syncookies = 1 启用 SYN Cookie。
13.5 OSI 七层模型
层
名称
协议
7
应用层
HTTP, FTP, SMTP, DNS, Telnet, SNMP
6
表示层
数据格式、加密、压缩
5
会话层
建立/管理/终止会话
4
传输层
TCP, UDP
3
网络层
IP, ICMP, RIP, OSPF, BGP
2
数据链路层
ARP, MAC
1
物理层
电缆、光纤、无线
TCP/IP 四层模型 :数据链路层(1+2) → 网络层(3) → 传输层(4) → 应用层(5+6+7)
13.6 TCP vs UDP
对比
TCP
UDP
连接
面向连接
无连接
可靠性
可靠(确认+重传)
不可靠
速度
慢
快
适用场景
文件传输、Web
视频通话、直播、DNS
13.7 IP 地址分类
类别
范围
默认掩码
A
0.0.0.0 ~ 127.255.255.255
/8
B
128.0.0.0 ~ 191.255.255.255
/16
C
192.0.0.0 ~ 223.255.255.255
/24
D
224.0.0.0 ~ 239.255.255.255
组播
E
240.0.0.0 ~ 254.255.255.255
保留
13.8 DNS 解析流程 1 2 3 浏览器输入URL → 查本地 hosts → 查本地DNS缓存 → 查区域DNS → 逐级向上(根域 → 顶级域 → 权威DNS)→ 返回IP给浏览器 → 浏览器发起HTTP请求
十四、性能调优 14.1 CPU 调优 1 2 3 4 5 6 7 stress -c 2 --timeout 600 mpstat -P ALL 5 pidstat -u 5 1
14.2 内存调优 1 2 3 4 5 6 free -h cat /proc/meminfo
14.3 磁盘 I/O 调优
换用更快的磁盘(SSD 替代 HDD)
使用 XFS 替代 ext4(更大容量、更高性能)
调整 vfs_cache_pressure(默认100,越大越易回收)
使用 RAID 提升读写性能和数据可靠性
14.4 内核参数调优 (sysctl.conf) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 sysctl -a | grep tcp net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_max_syn_backlog = 8192 net.core.somaxconn = 10240 net.core.rmem_max = 16777216 net.core.wmem_max = 16777216 net.core.rmem_default = 8388608 net.core.wmem_default = 8388608 net.ipv4.tcp_max_tw_buckets = 5000 net.ipv4.tcp_fin_timeout = 30 net.core.netdev_max_backlog = 8192 net.core.optmem_max = 81920 net.ipv4.tcp_rmem = 8760 262144 4194304 net.ipv4.tcp_wmem = 8760 262144 4194304 net.ipv4.tcp_mem = 88491 262144 4194304
14.5 JVM 调优
堆内内存 = 新生代 + 老年代 + 元空间,由 GC 统一管理。
堆外内存 = Direct Byte Buffers + Metaspace 等,直接受 OS 管理,减少 GC 暂停。
十五、安全加固与应急响应 15.1 最小化安装后安全加固
修改 YUM 源(换国内源)
防火墙只开放对外服务端口
精简开机自启动服务
禁止 root 远程登录
修改 SSH 端口
添加普通用户并 sudo 提权
安装杀毒软件 ClamAV
配置 NTP 时间同步
定时清理垃圾文件防止 inode 占满
内核参数优化
15.2 防攻击 攻击现象 :CPU/内存飙高、登录卡顿、带宽占满、大量异常 IP 登录、莫名账号和进程。
1 2 3 4 5 6 7 8 9 10 11 last history / vim ~/.bash_history ps aux --sort -%cpu | head lsof -p PID rm -rf 病毒路径 && kill -9 PID
15.3 防 CC/DOS/DDOS
防火墙过滤高访问频率 IP
拒绝代理服务器 IP
CC 攻击危害:大量流量冲击 → 负载升高 → 服务器宕机
15.4 病毒处理 1 2 3 4 netstat -tnlp lsof -i:端口 chattr +i 目录
15.5 忘记 root 密码 1 2 3 4 重启 → 内核界面按 e → 在 UTF8 后加 init=/bin/bash → Ctrl+X mount -o remount,rw / passwd root exec /sbin/init
十六、Shell 脚本与实用工具 16.1 日志管理
日志文件
内容
/var/log/messages
系统主日志
/var/log/secure
登录认证日志
/var/log/dmesg
系统启动日志
/var/log/cron
计划任务日志
/var/log/yum.log
YUM 安装日志
/etc/logrotate.d/syslog
日志轮转配置
1 2 3 4 5 6 tail -f /var/log/messages grep Accepted /var/log/secure grep Failed /var/log/secure dmesg -d -T | grep -i Memory
16.2 日志分析案例
16.3 Nginx 日志分析 1 2 3 4 5 6 7 8 9 10 11 grep -E '19/Jul/2023' access.log | awk '{ips[$1]++}END{for(i in ips){print i,ips[i]}}' | sort -k2 -rn | head -10 grep '06/Jul/2023' access_06.log | awk '{ips[$1]++}END{for(i in ips){if(ips[i]>100){print i,ips[i]}}}' | sort -k2 -nr | head -30 grep '18/Aug/' access.log | awk '{ips[$7]++}END{for(i in ips){print i,ips[i]}}' | sort -k2 -nr | head -15 awk '{urls[$7]++;size[$7]+=$10}END{for(i in urls){print urls[i],size[i],i}}' | sort -k1 -rn | head -10
16.4 GoAccess 日志分析 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 wget https://tar.goaccess.io/goaccess-1.7.2.tar.gz tar xf goaccess-1.7.2.tar.gz -C ./goaccess cd goaccess/goaccess-1.7.2 && mkdir /usr/local/goaccessyum -y install gcc autoconf gettext autopoint libmaxminddb-devel ./configure --prefix=/usr/local/goaccess --enable-utf8 --enable-geoip=mmdb make && make install ln -s /usr/local/goaccess/bin/goaccess /bin/cat <<-EOF >> /etc/goaccess.conf time-format %T date-format %d/%b/%Y log_format %h - %^ [%d:%t %^] "%r" %s %b "%R" "%u" "%^" "%T" EOF LANG="zh_CN.UTF-8" goaccess -f access.log -p /etc/goaccess.conf -o report.html
16.5 内核升级 1 2 3 4 5 6 7 uname -r rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm yum --enablerepo=elrepo-kernel install -y kernel-lt cat /boot/grub2/grub.cfg | grep menuentry grub2-set-default "CentOS Linux (4.4.221-1.el7.elrepo.x86_64) 7 (Core)" grub2-editenv list reboot
16.6 定时任务发邮件 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 mail -s '主题' -a 附件 收件人 < 正文文件 showdate=$(date +%Y-%m-%d-%H-%M) workdir=/mnt/dbpython echo "$(date) " > ./test.txt/bin/python3 /mnt/dbpython/daily_paper.py cd ${workdir} kyfile=$(find . -type f -name '*_ky_daily_paper.xlsx' ) tar -czvf ${showdate} .tar.gz ${kyfile} mail -s 'ky_daily_paper' -a ./${showdate} .tar.gz 收件人 < test.txt find . -type f -name '*_ky_daily_paper.xlsx' -delete
备注 :本文档为个人学习笔记整理,部分命令和配置可能因系统版本不同而有差异,请以实际环境为准。