Linux Ubuntu 手册
2025-08-11 10:22:58 1 举报
AI智能生成
Linux 白皮书,主要包含 Ubuntu 使用和操作技巧。
作者其他创作
大纲/内容
shell
三剑客
awk
awk '{print $1}' data.txt
grep
grep "an" data.txt
sed
sed 's/world/everyone/' data.txt
要将文件中的"world"替换为"everyone",可以使用sed
其他技巧
sort
sort file.txt
sort -r file.txt
docker ps -a | sort -V
du -m -d 1 | sort -n
du -m -d 1 | sort -k 2
cut
sudo sh -c 'echo 1 > /proc/sys/vm/drop_caches'
sudo sh -c 'echo 2 > /proc/sys/vm/drop_caches'
输入法安装
用户环境
.bashrc: 这个文件主要用于交互式的非登录shell。当你启动一个新的终端窗口或标签页时,通常会加载.bashrc文件。
.profile: 这个文件则主要应用于登录shell。当通过SSH登录到机器,或者使用诸如su -这样的命令切换到另一个用户时,系统会启动一个登录shell,并读取.profile文件(如果存在)。
Shell基础概念
Shell简介
定义与功能
命令行界面
脚本自动化
Shell类型
Bourne Shell (sh)
Bash (Bourne Again SHell)
C Shell (csh) & TC Shell (tcsh)
Shell环境配置
环境变量设置
路径与权限管理
Shell命令基础
命令格式与语法
命令名
选项与参数
命令执行与输出
标准输入/输出/错误
管道与重定向
命令查找与帮助
which与whereis
man与info
Shell编程
Shell脚本结构
脚本文件创建与执行
脚本文件命名与保存
执行权限与方式
脚本头部声明
Shebang (#!)
注释与文档
变量与数据类型
变量声明与赋值
数据类型与操作
流程控制
条件判断
if语句
case语句
循环结构
for循环
while循环
until循环
函数定义与调用
函数声明
参数传递与返回值
文件操作
文件读写
cat, echo, read
重定向与追加
文件与目录管理
ls, cd, pwd
mkdir, rm, cp, mv
文本处理
grep, sed, awk
sort, uniq, cut
Shell高级应用
Shell脚本调试与优化
语法检查与错误定位
set命令与选项
trap命令捕获信号
性能优化与资源管理
time命令评估性能
ulimit命令限制资源
Shell与其他工具集成
Shell与版本控制系统
Git基础操作
Shell脚本自动化部署
Shell与数据库交互
MySQL/MariaDB命令
Shell脚本数据导入导出
Shell脚本安全
输入验证与过滤
特殊字符处理
防止命令注入
权限管理与访问控制
文件权限设置
sudo与su命令使用
Shell实践案例
系统管理脚本
系统监控与报警
CPU与内存使用率监控
磁盘空间与I/O监控
自动化备份与恢复
定时备份任务
数据恢复策略
网络管理脚本
网络配置与诊断
IP地址与子网掩码设置
ping与traceroute命令
自动化部署与更新
应用版本管理
批量服务器配置同步
数据处理与分析
日志分析与报警
日志格式解析
异常日志检测
数据清洗与转换
数据格式转换
无效数据过滤
端口管理
natstat
查看端口号
使用netstat命令查看所有端口的详细参数:
netstat -tuln
netstat -tuln
使用lsof命令查看指定端口的应用详细参数:
lsof -i :端口号
lsof -i :端口号
ufw
检查防火墙设置
sudo ufw status
查看防火墙状态
sudo ufw status verbose
查看防火墙规则
sudo ufw enable
启用防火墙
sudo ufw allow ssh
如果防火墙开启了SSH端口(默认为22),可以使用以下命令允许SSH连接
80端口服务:
sudo ufw allow 80/tcp
对于UDP协议:
sudo ufw allow 53/udp
若要允许来自特定IP地址的连接到某个端口(如SSH端口22):
sudo ufw allow from 192.168.1.100 to any port 22
sudo ufw allow 80/tcp
对于UDP协议:
sudo ufw allow 53/udp
若要允许来自特定IP地址的连接到某个端口(如SSH端口22):
sudo ufw allow from 192.168.1.100 to any port 22
sudo ufw delete [规则编号]
如果防火墙设置了其他规则导致SSH连接受阻,可以使用以下命令删除相应规则
ip link
查看网卡状态
ip address
查看网卡的ip地址信息
curl 命令是一个用于传输数据的工具,支持多种协议(HTTP、HTTPS、FTP)
curl -X POST -H "Authorization: Bearer token" -d "username=user&password=pass" -i https://www.example.com/login
进程管理
top
top
htop
top -p id
ps -ef | grep xxx
查看XXX进程
文件系统格式
FAT32(File Allocation Table 32)
是一种较为古老的文件系统格式
支持最大单个文件4GB,最大磁盘容量为2TB。
FAT32格式通常用于移动设备和存储设备,如U盘、SD卡等。几乎所有操作系统都支持FAT32格式。
NTFS(New Technology File System)
是Windows操作系统中常用的文件系统格式
支持单个文件大小达到16TB,最大磁盘容量为256TB。
NTFS格式支持文件加密、压缩、权限控制等功能。Windows操作系统完全支持NTFS格式,其他操作系统 macOS, Linux 可以读取 NTFS格式的磁盘。
exFAT(Extended File Allocation Table)
一种针对移动设备和闪存存储设备设计的文件系统格式
支持单个文件大小达到16EB,最大磁盘容量为128PB。
exFAT格式通常用于大容量移动硬盘、闪存卡等设备。Windows、macOS和Linux 等操作系统都支持exFAT格式。
HFS+(Hierarchical File System Plus)
是苹果公司开发的文件系统格式,用于Mac OS X操作系统。
HFS+支持单个文件大小达到8EB,最大磁盘容量为8EB。
HFS+格式在macOS系统中得到完全支持,但在Windows和Linux系统中需要安装额外的驱动程序才能读取HFS+格式的磁盘。
分配单元大小
是指在磁盘上分配存储空间的最小单位。选择合适的单元大小可以影响磁盘的性能和空间利用率。
原理:分配单元大小的选择会影响文件系统的存储效率。
对于大容量的磁盘,可以选择较大的单元大小,以减少碎片化;
对于小容量的磁盘,可以选择较小的单元大小,以提高空间利用率。常见的分配单元大小有4KB、8KB、16KB等。
资源管理
磁盘管理
查看磁盘
fdisk -l
详情
lsblk
结构,总结
查看磁盘空间
df -h
df 默认以 K 计算大小
挂载磁盘
格式化磁盘
mkfs.ext4 /dev/sdb
挂载到目录
mount /dev/sdb /data
自动挂载/models案例
/etc/fstab 是 Linux 系统中的一个重要配置文件,定义系统启动时挂载
自动挂载案例
迁移docker到挂载盘案例
查看磁盘分区
parted /dev/sdc print
修改磁盘分区大小,扩容
parted /dev/sdc
内存管理
sync:将内存中的数据同步到磁盘中,确保数据的完整性。这个命令通常用于在关机之前执行,以确保数据已经保存到磁盘中。
echo 1 > /proc/sys/vm/drop_caches
清空页缓存,即释放被占用的内存。但需要注意的是,这个命令只会清空页缓存,不会清空缓冲区和缓存区。
echo 2 > /proc/sys/vm/drop_caches
清空页缓存和目录项缓存,释放缓存占用的内存。
free -h && sync && echo 3 > /proc/sys/vm/drop_caches && free -h
一个综合性的清理内存命令:会先显示当前内存使用情况,然后执行sync命令将数据同步到磁盘中,接着清空缓存,最后再次显示内存使用情况。
Linux内存管理的基本概念
物理内存与虚拟内存
物理内存的定义和作用
虚拟内存的定义和作用
物理内存与虚拟内存的关系
虚拟内存的优势
内存分页与分段
内存分页的原理
内存分段的原理
分页与分段的区别
分页与分段的应用场景
内存地址空间
用户空间与内核空间
地址空间的布局
地址转换机制
内存保护机制
内存管理单元(MMU)
MMU的功能
MMU的工作原理
MMU与TLB的关系
MMU的性能优化
Linux内存管理的核心机制
伙伴系统(Buddy System)
伙伴系统的原理
伙伴系统的分配策略
伙伴系统的碎片问题
伙伴系统的优化方法
Slab分配器
Slab分配器的原理
Slab分配器的数据结构
Slab分配器的优势
Slab分配器的应用场景
内存回收机制
页面回收(Page Reclaim)
页面回收的触发条件
页面回收的算法
页面回收的性能影响
页面回收的调优方法
交换空间(Swap)
交换空间的作用
交换空间的配置
交换空间的性能影响
交换空间的优化建议
Linux内存的监控与诊断
内存使用情况查看工具
free命令的使用
top命令的使用
vmstat命令的使用
/proc/meminfo文件解析
内存泄漏检测
内存泄漏的定义
内存泄漏的常见原因
内存泄漏检测工具
内存泄漏的解决方法
内存性能分析
内存带宽测试
内存延迟测试
内存瓶颈诊断
内存性能优化建议
OOM(Out of Memory)处理
OOM的触发机制
OOM Killer的工作原理
OOM的预防措施
OOM的应急处理
Linux内存的优化与调优
内核参数调优
vm.swappiness参数调整
vm.dirty_ratio参数调整
vm.overcommit_memory参数调整
内核参数的持久化配置
应用程序内存优化
内存池技术
内存对齐优化
减少内存碎片
高效内存访问模式
大页内存(Huge Pages)
大页内存的原理
大页内存的配置
大页内存的性能优势
大页内存的应用场景
NUMA(非统一内存访问)优化
NUMA架构的原理
NUMA感知的内存分配
NUMA性能调优
NUMA相关的工具
Linux内存的常见问题与解决方案
内存不足问题
内存不足的表现
内存不足的原因分析
临时解决方案
长期解决方案
内存泄漏问题
内存泄漏的表现
内存泄漏的排查方法
内存泄漏的修复方法
内存泄漏的预防措施
内存碎片问题
内存碎片的表现
内存碎片的影响
内存碎片的解决方法
内存碎片的预防措施
交换空间问题
交换空间不足的表现
交换空间不足的解决方法
交换空间性能问题
交换空间的最佳实践
权限管理
用户管理
adduser:用于添加新用户
常用参数:
-m:创建用户的同时创建用户的家目录。
-g:指定用户所属的初始用户组。
-m:创建用户的同时创建用户的家目录。
-g:指定用户所属的初始用户组。
usermod:用于修改用户属性
常用参数:
-aG:将用户添加到指定的用户组。
-l:修改用户名。
-aG:将用户添加到指定的用户组。
-l:修改用户名。
对于基于 Debian 的系统(如 Ubuntu),使用:
sudo usermod -aG sudo peter
对于基于 Red Hat 的系统(如 CentOS),使用:
sudo usermod -aG wheel peter
sudo usermod -aG sudo peter
对于基于 Red Hat 的系统(如 CentOS),使用:
sudo usermod -aG wheel peter
deluser:用于删除用户
常用参数:
--remove-home:删除用户的同时删除用户的家目录。
passwd:用于修改用户密码。
--remove-home:删除用户的同时删除用户的家目录。
passwd:用于修改用户密码。
su:切换用户
sudo:以超级用户权限执行命令。
whoami:显示当前登录用户的用户名。
groups:显示当前用户所属的用户组。
id:显示用户的 UID 和 GID。
组管理
addgroup:用于添加新用户组
groupadd:同addgroup,用于添加新用户组
delgroup:用于删除用户组
groupdel:同delgroup,用于删除用户组
usermod:用于修改用户属性,包括用户所属的用户组
常用参数:
-g:修改用户的初始用户组。
-aG:将用户添加到指定的用户组。
-g:修改用户的初始用户组。
-aG:将用户添加到指定的用户组。
usermod -aG root
groups:显示用户所属的用户组
权限管理 permision
含义
最前面 - 代表的是类型
中间那三个 rwx 代表的是所有者(user)
然后那三个 rw- 代表的是组群(group)
最后那三个 r-- 代表的是其他人(other)
中间那三个 rwx 代表的是所有者(user)
然后那三个 rw- 代表的是组群(group)
最后那三个 r-- 代表的是其他人(other)
权限
r 表示文件可以被读(read)
w 表示文件可以被写(write)
x 表示文件可以被执行(如果它是程序的话)
- 表示相应的权限还没有被授予
w 表示文件可以被写(write)
x 表示文件可以被执行(如果它是程序的话)
- 表示相应的权限还没有被授予
其中:rwx也可以用数字来代替
r ------------4
w -----------2
x ------------1
- ------------0
r ------------4
w -----------2
x ------------1
- ------------0
操作
其中:
u 代表所有者(user)
g 代表所有者所在的组群(group)
o 代表其他人,但不是u和g (other)
a 代表全部的人,也就是包括u,g和o
chmod a+r xxx.xx
表示给所有人读取xxx.xxx这个文件的权限
chmod go-rw xxx.xx
表示删除xxx.xxx中组群和其他人的读和写的权限
u 代表所有者(user)
g 代表所有者所在的组群(group)
o 代表其他人,但不是u和g (other)
a 代表全部的人,也就是包括u,g和o
chmod a+r xxx.xx
表示给所有人读取xxx.xxx这个文件的权限
chmod u+rwx xxx.xx
表示给所有者 添加读写执行的权限
表示给所有者 添加读写执行的权限
chmod go-rw xxx.xx
表示删除xxx.xxx中组群和其他人的读和写的权限
其他常用样例
sudo chmod 600 ××× (只有所有者有读和写的权限)
sudo chmod 700 ××× (只有所有者有读和写以及执行的权限)
sudo chmod 644 ××× (所有者有读和写的权限,组用户只有读的权限)
sudo chmod 666 ××× (每个人都有读和写的权限)
sudo chmod 777 ××× (每个人都有读和写以及执行的权限)
sudo chmod -R 777 文件或文件夹的名字(若分配给某个文件所有权限)
sudo chmod 700 ××× (只有所有者有读和写以及执行的权限)
sudo chmod 644 ××× (所有者有读和写的权限,组用户只有读的权限)
sudo chmod 666 ××× (每个人都有读和写的权限)
sudo chmod 777 ××× (每个人都有读和写以及执行的权限)
sudo chmod -R 777 文件或文件夹的名字(若分配给某个文件所有权限)
环境变量
置环境变量有多种方法,具体取决于环境变量的作用范围(全局或用户级别)以及生效的时间(临时或永久)。
用户级别
永久环境变量
修改 ~/.bashrc 文件
~/.bashrc 是每个用户专属的配置文件,适用于交互式非登录 shell。
~/.bashrc 是每个用户专属的配置文件,适用于交互式非登录 shell。
全局级别
永久环境变量
修改 /etc/environment 文件
/etc/environment 是一个系统级配置文件,用于定义全局环境变量。
如果希望环境变量对所有用户都生效,可以将其添加到全局配置文件中。
/etc/environment 是一个系统级配置文件,用于定义全局环境变量。
如果希望环境变量对所有用户都生效,可以将其添加到全局配置文件中。
时区的查看和管理
查看当前时区
timedatectl
样例输出
设置当前时区
timedatectl list-timezones | grep Shang
sudo timedatectl set-timezone Asia/Shanghai
sudo timedatectl set-timezone Asia/Shanghai
Asia/Shanghai
手动设置(传统方法)
1. 查看当前时区软链接:
sudo ls -l /etc/localtime
2. 手动创建软链接到 /usr/share/zoneinfo/ 中的某个时区:
sudo ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
0 条评论
下一页