Linux 基础
Linux 系统基础知识与常用命令,面向运维工程师。涵盖文件系统、常用命令、权限管理、磁盘管理、用户管理、网络管理、进程管理、软件包管理、VI/VIM 编辑器。
1. Linux 文件系统
1.1. 目录结构
| 目录 | 说明 |
|---|
/bin | 系统基本命令(ls、cp、mv),普通用户和系统管理员可用 |
/sbin | 系统管理命令(ifconfig、shutdown、reboot),通常需管理员权限 |
/etc | 系统配置文件(网络配置、用户账户、服务配置) |
/home | 普通用户家目录,每个用户有独立子目录 |
/root | root 用户家目录 |
/usr | 系统安装的软件和应用程序(类似 Windows Program Files) |
/var | 运行时变化的数据(日志、邮件、缓存) |
/dev | 设备文件(硬盘、光驱、串口等) |
/proc | 虚拟文件系统,提供内核和进程信息 |
/sys | 虚拟文件系统,提供硬件设备信息和控制接口 |
/boot | 启动核心文件(内核、引导程序) |
/lib | 系统最基本的动态连接共享库 |
/media | 系统自动识别设备的挂载点(U盘、光驱) |
/mnt | 用户临时挂载文件系统 |
/opt | 第三方程序安装目录 |
/tmp | 临时文件存放目录 |
/run | 临时文件系统,存储系统启动以来信息(重启清空) |
1.2. 文件命名规则
- 严格区分大小写(
File 和 file 是两个不同文件)
- 目录名或文件名长度不超过 255 个字符
- 不以文件扩展名区分文件(Linux 通过文件头识别类型)
1.3. 文件类型
| 标识 | 类型 | 说明 |
|---|
- | 普通文件 | 文本、二进制、数据文件 |
d | 目录文件 | 文件夹 |
l | 软链接 | 类似 Windows 快捷方式 |
b | 块设备文件 | 硬盘、光驱等 |
p | 管道文件 | 进程间通信 |
c | 字符设备文件 | 串口设备、光猫等 |
s | 套接口文件 | 网络通信 |
查看命令:ls -l 第一列标识文件类型。
2. Linux 常用命令
2.1. 查看命令帮助
- 判断命令类型:
type [命令](内部命令 vs 外部命令)
- 内部命令帮助:
help [命令]
- 外部命令帮助:
[命令] --help
- man 手册:
man [命令](不区分内外部命令)
2.2. 系统信息
| 命令 | 说明 | 示例 |
|---|
uname -a | 查看完整系统信息 | 内核版本、主机名、架构 |
whoami | 查看当前用户 | — |
hostname | 查看/设置主机名 | — |
2.3. 目录操作
| 命令 | 说明 | 常用参数 |
|---|
ls [目录] | 列出目录内容 | -a 显示隐藏文件,-l 详细列表,-h 可读性大小 |
pwd | 显示当前路径 | — |
cd [目录] | 切换目录 | cd ~ 回家目录,cd - 回上级目录 |
clear | 清屏 | — |
mkdir [目录] | 创建目录 | -p 递归创建 |
rmdir [目录] | 删除空目录 | — |
2.4. 文件操作
| 命令 | 说明 | 常用参数 |
|---|
touch [文件] | 创建空文件/更新时间戳 | — |
cp [源] [目标] | 复制文件 | -r 递归复制目录,-p 保留属性 |
mv [源] [目标] | 移动/重命名 | — |
rm [文件] | 删除文件 | -r 递归删除,-f 强制删除 |
cat [文件] | 查看文件内容 | — |
head [文件] | 查看文件头部 | -n 指定行数 |
tail [文件] | 查看文件尾部 | -f 实时跟踪 |
wc [文件] | 统计行/词/字符 | -l 仅行数 |
echo [内容] | 输出内容 | — |
2.5. 文本处理
| 命令 | 说明 | 示例 |
|---|
grep [模式] [文件] | 文本搜索 | grep "error" /var/log/messages |
sed | 流编辑器 | sed -i "s/old/new/g" file |
awk | 文本分析工具 | awk "{print \$1}" file |
sort | 排序 | sort -n 按数字排序 |
uniq | 去重 | uniq -c 统计重复次数 |
cut | 截取字段 | cut -d":" -f1 |
2.6. 查找命令
| 命令 | 说明 | 示例 |
|---|
find [路径] [条件] | 查找文件 | find / -name "*.log" |
which [命令] | 查找命令路径 | which python3 |
whereis [命令] | 查找命令及文档 | — |
locate [文件] | 快速查找(依赖数据库) | — |
3. Linux 权限管理
3.1. 用户与用户组
- 用户分类:超级用户(root,UID=0)、系统用户(UID 1-999)、普通用户(UID 1000+)
- 相关文件:
/etc/passwd(用户信息)、/etc/shadow(密码)、/etc/group(组信息)
- 相关命令:
id、who、w、users
3.2. 文件权限
Linux 权限三位一组:属主(u)、属组(g)、其他(o),每位包含 r(读)、w(写)、x(执行)。
# 权限表示
-rwxr-xr-x # 属主rwx,属组r-x,其他r-x
# 修改权限
chmod 755 file # 数字法
chmod u+x file # 符号法
# 修改属主/属组
chown user:group file
chgrp group file
权限数字对应:r=4、w=2、x=1
| 数字 | 权限 | 说明 |
|---|
| 7 | rwx | 读+写+执行 |
| 6 | rw- | 读+写 |
| 5 | r-x | 读+执行 |
| 4 | r— | 只读 |
| 0 | --- | 无权限 |
3.3. 特殊权限
| 权限 | 标识 | 作用 |
|---|
| SUID | rws | 以文件属主身份执行程序 |
| SGID | rws(组) | 以文件属组身份执行程序 |
| Sticky Bit | t | 仅文件属主可删除(如 /tmp) |
3.4. ACL 访问控制
# 查看 ACL
getfacl file
# 设置 ACL
setfacl -m u:username:rwx file
setfacl -m g:groupname:rx file
# 递归设置
setfacl -R -m u:username:rx directory/
3.5. sudo 权限
# 配置文件:/etc/sudoers(使用 visudo 编辑)
# 语法:user host=(runas) commands
# 示例:允许 user1 以 root 执行所有命令
user1 ALL=(ALL) ALL
# 示例:允许运维组执行系统管理命令
%ops ALL=(ALL) /usr/bin/systemctl, /usr/bin/journalctl
4. 磁盘管理
4.1. 磁盘查看
| 命令 | 说明 | 常用参数 |
|---|
fdisk -l | 查看磁盘分区 | — |
lsblk | 列出块设备 | -f 显示文件系统 |
blkid | 查看设备 UUID 和文件系统 | — |
df -h | 查看磁盘使用情况 | -h 可读性 |
du -sh [目录] | 查看目录大小 | — |
4.2. 分区管理
# 使用 fdisk 分区(MBR,<2TB)
fdisk /dev/sdb
# 使用 parted 分区(GPT,>2TB)
parted /dev/sdb
分区表类型:
- MBR:传统分区表,支持 4 个主分区,最大 2TB
- GPT:新一代分区表,支持 128 个分区,最大 18EB
4.3. 格式化与挂载
# 格式化
mkfs.ext4 /dev/sdb1
mkfs.xfs /dev/sdb2
# 挂载
mount /dev/sdb1 /mnt/data
# 开机自动挂载:编辑 /etc/fstab
UUID=xxx /mnt/data ext4 defaults 0 2
# 查看挂载
mount | grep sdb
4.4. RAID
| 级别 | 说明 | 最少磁盘 | 容错 |
|---|
| RAID 0 | 条带化,性能高无冗余 | 2 | 无 |
| RAID 1 | 镜像,完全冗余 | 2 | 1块 |
| RAID 5 | 分布式奇偶校验 | 3 | 1块 |
| RAID 10 | 镜像+条带 | 4 | 每组1块 |
4.5. LVM 逻辑卷管理
# 创建物理卷
pvcreate /dev/sdb1 /dev/sdc1
# 创建卷组
vgcreate vg_data /dev/sdb1 /dev/sdc1
# 创建逻辑卷
lvcreate -L 100G -n lv_data vg_data
# 格式化挂载
mkfs.ext4 /dev/vg_data/lv_data
mount /dev/vg_data/lv_data /mnt/data
# 扩容逻辑卷
lvextend -L +50G /dev/vg_data/lv_data
resize2fs /dev/vg_data/lv_data
5. 用户管理
| 命令 | 说明 |
|---|
useradd [用户名] | 创建用户 |
passwd [用户名] | 设置/修改密码 |
usermod [选项] [用户名] | 修改用户属性 |
userdel [用户名] | 删除用户(-r 同时删除家目录) |
groupadd [组名] | 创建组 |
gpasswd [选项] [组名] | 管理组成员 |
# 创建用户并指定家目录和 shell
useradd -m -d /home/user1 -s /bin/bash user1
# 添加用户到组
usermod -aG docker user1
# 锁定/解锁用户
passwd -l user1 # 锁定
passwd -u user1 # 解锁
# 查看用户信息
cat /etc/passwd | grep user1
chage -l user1 # 查看密码过期信息
6. 网络管理
| 命令 | 说明 | 常用参数 |
|---|
ip addr | 查看 IP 地址 | — |
ip link | 查看/管理网络接口 | set eth0 up/down |
ip route | 查看路由表 | — |
ss -tlnp | 查看端口监听 | -t TCP,-l 监听,-n 数字,-p 进程 |
ping [IP] | 网络连通测试 | -c 次数 |
traceroute [IP] | 路由追踪 | — |
curl [URL] | HTTP 请求 | — |
wget [URL] | 下载文件 | — |
nslookup [域名] | DNS 查询 | — |
dig [域名] | DNS 详细查询 | — |
6.1. 网络配置
# 查看网络接口信息
ip addr show eth0
# 临时配置 IP
ip addr add 192.168.1.100/24 dev eth0
# 配置路由
ip route add default via 192.168.1.1
# 查看网络统计
netstat -s
7. 进程管理
7.1. 查看进程
| 命令 | 说明 |
|---|
ps -ef | 查看所有进程 |
ps aux | 查看所有进程(BSD 格式) |
top | 实时进程监控 |
htop | 增强版 top |
pstree | 进程树 |
7.2. 进程信号
# 常用信号
kill -15 PID # SIGTERM,优雅终止
kill -9 PID # SIGKILL,强制杀死
kill -1 PID # SIGHUP,重载配置
kill -2 PID # SIGINT,中断(Ctrl+C)
7.3. 进程优先级
# 查看优先级
ps -eo pid,ni,comm
# 启动时设置优先级
nice -n -5 command
# 运行时调整优先级
renice -n -5 -p PID
7.4. 后台作业
command & # 后台运行
jobs # 查看后台作业
fg %1 # 前台执行
bg %1 # 后台执行
nohup command & # 后台运行(终端退出后继续)
screen / tmux # 会话管理(推荐)
8. 软件包管理
8.1. YUM / DNF(RHEL/CentOS)
| 命令 | 说明 |
|---|
yum install [包] | 安装软件包 |
yum remove [包] | 卸载软件包 |
yum update [包] | 更新软件包 |
yum search [关键词] | 搜索软件包 |
yum list installed | 列出已安装包 |
yum info [包] | 查看包信息 |
yum groupinstall [组] | 安装包组 |
8.2. RPM
rpm -ivh package.rpm # 安装
rpm -e package # 卸载
rpm -qa # 列出所有已安装包
rpm -ql package # 查看包文件列表
rpm -qf /path/to/file # 查看文件属于哪个包
8.3. 源码编译
./configure --prefix=/usr/local
make
make install
9. VI / VIM 编辑器
Vim 有三种模式:一般模式、编辑模式、指令行模式。
9.1. 一般模式
| 按键 | 说明 |
|---|
h/j/k/l | 左/下/上/右移动 |
0 / $ | 行首 / 行尾 |
gg / G | 文件首行 / 尾行 |
x | 删除光标处字符 |
dd | 删除整行 |
yy | 复制整行 |
p / P | 粘贴到下一行 / 上一行 |
u | 撤销 |
Ctrl+r | 重做 |
9.2. 编辑模式
| 按键 | 说明 |
|---|
i | 光标处插入 |
a | 光标后插入 |
o | 下一行插入新行 |
Esc | 退出编辑模式 |
9.3. 指令行模式
| 命令 | 说明 |
|---|
:w | 保存 |
:q | 退出 |
:wq | 保存并退出 |
:q! | 强制退出不保存 |
:set nu | 显示行号 |
:set nonu | 取消行号 |
:/keyword | 搜索关键词 |
:s/old/new/g | 替换 |
关联文档