Linux 操作系统
开源、稳定的服务器操作系统
第一章 Linux入门
1.1 Linux简介
Linux是一套免费使用和自由传播的类Unix操作系统,由Linus Torvalds于1991年首次发布。目前是最流行的服务器操作系统,也是超级计算机和嵌入式系统的主要操作系统。
特点:
- 开源免费:任何人都可以自由使用和修改
- 多用户多任务:支持多个用户同时使用,支持多个任务并发执行
- 稳定安全:几乎不需要重启,安全性高
- 强大的网络功能:天生支持网络
- 硬件支持广泛:支持从超级计算机到嵌入式设备
1.2 主要发行版
| 发行版 | 特点 | 适合人群 |
|---|---|---|
| Ubuntu | 易用、社区活跃、更新频繁 | 桌面/服务器初学者 |
| Debian | 稳定、包管理完善 | 服务器、系统管理员 |
| CentOS/RHEL | 企业级、稳定 | 企业服务器 |
| Fedora | 前沿、创新 | 开发者 |
| Arch | 高度自定义 | 高级用户 |
| openSUSE | 稳定、易用 | 桌面/服务器 |
1.3 Linux应用场景
- Web服务器:Apache、Nginx
- 数据库服务器:MySQL、PostgreSQL、MongoDB
- 容器平台:Docker、Kubernetes
- 云计算:AWS、阿里云等云服务
- 超级计算机:全球TOP500超算中大部分使用Linux
- 嵌入式系统:Android手机、智能设备
第二章 Linux文件系统
2.1 文件系统结构
/ 根目录,所有目录的起点
├── bin/ 系统命令(二进制文件)
├── boot/ 启动文件、内核
├── dev/ 设备文件
├── etc/ 系统配置文件
├── home/ 用户主目录
├── lib/ 共享库文件
├── media/ 可移动媒体挂载点
├── mnt/ 临时挂载点
├── opt/ 可选软件(大型第三方应用)
├── proc/ 进程信息(虚拟文件系统)
├── root/ 管理员(root)主目录
├── run/ 运行时数据
├── sbin/ 系统管理命令
├── srv/ 服务数据
├── sys/ 系统信息(虚拟文件系统)
├── tmp/ 临时文件
├── usr/ 用户程序(Unix System Resources)
└── var/ 可变数据(日志、数据库等)
2.2 常见目录用途
/etc/:存放系统配置文件
- /etc/passwd:用户账户信息
- /etc/shadow:用户密码(加密)
- /etc/group:用户组信息
- /etc/fstab:文件系统挂载表
- /etc/hosts:主机名解析
- /etc/network/*:网络配置
/var/:存放经常变化的数据
- /var/log/:系统日志
- /var/spool/:打印队列、邮件队列
- /var/lib/:软件数据
- /var/www/:Web服务器文档
/home/:普通用户主目录
- /home/username/:每个用户的主目录
2.3 文件类型
| 类型 | 符号 | 说明 |
|---|---|---|
| 普通文件 | - | 文本、二进制、图片等 |
| 目录 | d | 文件夹 |
| 符号链接 | l | 快捷方式 |
| 字符设备 | c | 字符设备文件 |
| 块设备 | b | 块设备文件 |
| 管道 | p | 命名管道 |
| 套接字 | s | 网络套接字 |
第三章 基础命令
3.1 文件操作
3.1.1 查看文件
# 列出文件
ls # 简单列表
ls -l # 详细信息
ls -a # 包括隐藏文件(以.开头)
ls -lh # 人性化显示大小
ls -R # 递归列出子目录
ls -t # 按修改时间排序
ls -S # 按文件大小排序
# 查看文件内容
cat file.txt # 全部显示
head -n 10 file.txt # 显示前10行
tail -n 10 file.txt # 显示后10行
tail -f file.txt # 实时查看文件更新
less file.txt # 分页查看(可上下滚动)
more file.txt # 分页查看(只能向下)
# 统计
wc -l file.txt # 行数
wc -w file.txt # 单词数
wc -c file.txt # 字符数
3.1.2 创建文件/目录
# 创建文件
touch file.txt # 创建空文件
touch file1.txt file2.txt # 批量创建
# 创建目录
mkdir dir/ # 创建单层目录
mkdir -p a/b/c/ # 递归创建多层目录
# 同时创建多个目录
mkdir -p dir1 dir2 dir3
3.1.3 复制文件
# 基本复制
cp source.txt dest.txt
# 复制目录
cp -r source_dir/ dest_dir/
# 复制并保留属性
cp -p source.txt dest.txt
# 复制时显示进度
cp -v source.txt dest.txt
# 常用选项
# -i: 目标存在时询问
# -v: 显示复制过程
# -r/R: 递归复制目录
3.1.4 移动/重命名
# 移动文件
mv source.txt dest/
# 重命名
mv oldname.txt newname.txt
# 移动并重命名
mv /path/source.txt /path/dest/newname.txt
# 批量移动
mv *.txt documents/
3.1.5 删除文件
# 删除文件
rm file.txt
# 删除目录
rm -r directory/
# 强制删除(不询问)
rm -rf directory/
# 删除前确认
rm -i file.txt
# 安全删除(慎用)
# trash命令(如果安装)比rm安全
3.2 文件权限
3.2.1 权限表示
# ls -l 输出示例
-rwxr-xr-- 1 user group 4096 Jan 15 10:30 file.txt
权限分为三组:
- 所有者权限 (rwx):文件所有者
- 所属组权限 (r-x):文件所属组的成员
- 其他用户权限 (r--):其他所有用户
每组权限包含:
- r (read): 读取权限,数值为4
- w (write): 写入权限,数值为2
- x (execute): 执行权限,数值为1
3.2.2 修改权限
# 数字方式
chmod 755 file.txt # rwxr-xr-x
chmod 644 file.txt # rw-r--r--
chmod 600 file.txt # rw-------
chmod 700 directory/ # rwx------
# 符号方式
chmod +x script.sh # 添加执行权限
chmod -x script.sh # 移除执行权限
chmod u+x file.txt # 所有者添加执行
chmod g+w file.txt # 所属组添加写入
chmod o-r file.txt # 其他用户移除读取
# 递归修改
chmod -R 755 directory/
3.2.3 修改所有者
# 修改文件所有者
chown username file.txt
# 修改所有者和所属组
chown username:group file.txt
# 递归修改
chown -R username:group directory/
3.3 文本处理
3.3.1 搜索
# 文本搜索
grep "pattern" file.txt # 在文件中搜索
grep -r "pattern" directory/ # 递归搜索
grep -i "pattern" file.txt # 忽略大小写
grep -n "pattern" file.txt # 显示行号
grep -v "pattern" file.txt # 显示不匹配的行
grep -c "pattern" file.txt # 统计匹配行数
# 查找文件
find / -name "*.log" # 按文件名查找
find / -size +100M # 按大小查找
find / -mtime -7 # 按修改时间查找
find / -type d -name "tmp" # 查找目录
# 高级查找
find / -name "*.txt" -exec rm {} \; # 查找并删除
3.3.2 排序
sort file.txt # 排序
sort -u file.txt # 去重排序
sort -r file.txt # 降序排序
sort -n file.txt # 数字排序
sort -t',' -k2 file.txt # 指定分隔符和列
3.3.3 统计和转换
# 统计
wc file.txt # 行数、单词数、字符数
cut -d':' -f1 file.txt # 提取第一列
awk '{print $1}' file.txt # 提取第一列
# 替换
tr 'a-z' 'A-Z' < file.txt # 大小写转换
sed 's/old/new/g' file.txt # 替换
3.4 归档和压缩
3.4.1 tar
# 创建归档
tar -cvf archive.tar dir/ # 创建tar包
tar -czvf archive.tar.gz dir/ # 创建gzip压缩包
tar -cjvf archive.tar.bz2 dir/ # 创建bzip2压缩包
tar -cJvf archive.tar.xz dir/ # 创建xz压缩包
# 解压
tar -xvf archive.tar # 解压tar包
tar -xzvf archive.tar.gz # 解压gzip
tar -xjvf archive.tar.bz2 # 解压bzip2
tar -xJvf archive.tar.xz # 解压xz
# 查看内容
tar -tvf archive.tar
# 解压到指定目录
tar -xzvf archive.tar.gz -C /path/to/dir/
3.4.2 zip/unzip
# 压缩
zip -r archive.zip dir/ # 压缩目录
zip archive.zip file1 file2 # 压缩多个文件
# 解压
unzip archive.zip # 解压到当前目录
unzip archive.zip -d /path/to/dir/ # 解压到指定目录
# 查看内容
unzip -l archive.zip
第四章 用户和权限
4.1 用户管理
4.1.1 用户账户
# 查看用户
whoami # 当前用户名
id # 当前用户ID和组信息
who # 所有登录用户
w # 详细登录信息
# 创建用户
useradd -m username # 创建用户并创建主目录
useradd -m -s /bin/bash username # 指定shell
# 设置密码
passwd username
# 删除用户
userdel -r username # 删除用户和主目录
# 修改用户
usermod -aG group username # 添加到组
usermod -s /bin/bash username # 修改shell
4.1.2 用户组
# 创建组
groupadd groupname
# 查看组
groups username # 用户所属的组
cat /etc/group # 所有组信息
# 添加用户到组
gpasswd -a user group # 添加
gpasswd -d user group # 移除
4.2 sudo权限
# 编辑sudoers(必须使用visudo)
sudo visudo
# 添加sudo权限
username ALL=(ALL:ALL) ALL
# 格式:用户 主机=(用户:组) 命令
# 无需密码的sudo
username ALL=(ALL) NOPASSWD: ALL
# 允许组
%groupname ALL=(ALL) ALL
4.3 ACL权限
# 设置ACL
setfacl -m u:username:rw file.txt # 用户ACL
setfacl -m g:groupname:r file.txt # 组ACL
setfacl -m o::r file.txt # 其他用户ACL
# 查看ACL
getfacl file.txt
# 删除ACL
setfacl -x u:username file.txt
setfacl -b file.txt # 删除所有ACL
第五章 进程管理
5.1 查看进程
# 基本命令
ps # 当前终端的进程
ps -ef # 所有进程(详细)
ps aux # 所有进程(BSD风格)
ps -ef | grep nginx # 查找特定进程
# 实时监控
top # 交互式进程监控
htop # 更友好的top(需要安装)
# top常用快捷键
# M: 按内存排序
# P: 按CPU排序
# q: 退出
# k: 杀死进程
5.2 进程控制
# 终止进程
kill PID # 正常终止
kill -9 PID # 强制终止
killall processname # 按名称终止
# 发送信号
kill -l # 列出所有信号
kill -SIGTERM PID # 发送SIGTERM信号
# 后台运行
command & # 后台运行
nohup command & # 忽略挂起信号
# 进程控制
Ctrl+Z # 暂停当前进程
bg # 后台继续
fg # 前台继续
jobs # 列出后台任务
# nice和renice
nice -n 10 command # 以低优先级启动
renice -n 5 PID # 修改运行中进程优先级
5.3 系统资源
# 内存
free -h # 人性化显示
free -m # 以MB为单位
# CPU
uptime # 系统运行时间、负载
top # CPU使用率
# 磁盘
df -h # 磁盘使用情况
du -sh dir/ # 目录大小
du -h --max-depth=1 # 各子目录大小
# 实时I/O
iotop # 需要root权限
第六章 网络管理
6.1 网络配置
# 查看IP
ip addr # 现代命令
ifconfig # 传统命令(需安装net-tools)
# 临时配置IP
ip addr add 192.168.1.100/24 dev eth0
ip link set eth0 up/down
# 永久配置(Ubuntu)
# 编辑 /etc/netplan/*.yaml
# 路由
ip route # 查看路由表
route -n # 数字格式显示
6.2 网络测试
# 连通性测试
ping -c 4 google.com # Ping测试
ping -i 0.5 host # 快速ping
# 路由追踪
traceroute google.com # 路由追踪
tracert google.com # Windows风格
# 端口扫描
netstat -tuln # 监听端口
ss -tuln # 现代替代
# 查看特定端口
lsof -i :8080 # 端口占用
fuser 8080/tcp # 同上
6.3 网络连接
# 下载
curl -O http://example.com/file # 下载文件
wget http://example.com/file # 下载文件
curl -I http://example.com # 查看头信息
# SSH
ssh user@hostname # 连接
ssh -p 2222 user@hostname # 指定端口
ssh -i ~/.ssh/key user@host # 使用密钥
# 文件传输
scp file.txt user@host:/path/ # 复制到远程
scp -r dir/ user@host:/path/ # 复制目录
rsync -av dir/ user@host:/path/ # 高效同步
# SSH密钥
ssh-keygen -t rsa # 生成密钥
ssh-copy-id user@host # 复制公钥
第七章 软件安装
7.1 APT(Debian/Ubuntu)
# 更新
apt update # 更新软件源
apt upgrade # 升级所有软件
apt full-upgrade # 完整升级(包括删除包)
# 安装/卸载
apt install nginx # 安装
apt remove nginx # 卸载(保留配置)
apt purge nginx # 完全卸载
apt autoremove # 自动删除不需要的包
# 搜索
apt search nginx
apt show nginx
# 清理
apt clean # 清理缓存
apt autoclean # 清理旧缓存
7.2 YUM/DNF(CentOS/Fedora/RHEL)
# 安装
yum install nginx # 安装
yum remove nginx # 卸载
yum update nginx # 更新
# 搜索
yum search nginx
yum info nginx
# DNF(现代Fedora)
dnf install nginx
dnf upgrade
7.3 Pacman(Arch Linux)
pacman -S nginx # 安装
pacman -R nginx # 卸载
pacman -Syu # 全面更新
pacman -Ss nginx # 搜索
7.4 编译安装
# 下载源码
wget http://example.com/software.tar.gz
# 解压
tar -xzf software.tar.gz
cd software/
# 编译安装
./configure
make
make install
# 清理
make clean
第八章 服务管理
8.1 Systemd
Systemd是现代Linux发行版的标准服务管理系统。
# 服务控制
systemctl start nginx # 启动
systemctl stop nginx # 停止
systemctl restart nginx # 重启
systemctl reload nginx # 重载配置
systemctl status nginx # 状态
# 开机启动
systemctl enable nginx # 启用
systemctl disable nginx # 禁用
systemctl is-enabled nginx # 检查状态
# 查看服务
systemctl list-units --type=service
systemctl list-dependencies nginx
# 查看日志
journalctl -u nginx # 服务日志
journalctl -e # 最新日志
journalctl -f # 实时日志
8.2 日志管理
# 系统日志文件
/var/log/syslog # 系统日志
/var/log/auth.log # 认证日志
/var/log/nginx/ # Nginx日志
/var/log/httpd/ # Apache日志
# 日志轮转
/etc/logrotate.conf # 主配置
/etc/logrotate.d/ # 各服务配置
# 手动轮转
logrotate -f /etc/logrotate.conf
第九章 Shell脚本
9.1 基础语法
#!/bin/bash
# 变量
name="Alice"
age=25
echo "Hello, $name!"
# 字符串
greeting="Hello, ${name}!"
greeting='Hello, ${name}!' # 单引号不解析变量
# 数组
arr=(1 2 3 4 5)
echo ${arr[0]} # 第一个元素
echo ${arr[@]} # 所有元素
echo ${<a class="inline-tag" href="/blog/tag/arr.html">#arr</a>[@]} # 数组长度
9.2 条件判断
# 数值比较
if [ $a -eq $b ]; then
echo "相等"
fi
# 字符串
if [ "$str" = "hello" ]; then
echo "匹配"
fi
# 文件测试
if [ -f file.txt ]; then
echo "是文件"
fi
if [ -d dir/ ]; then
echo "是目录"
fi
if [ -z "$var" ]; then
echo "变量为空"
fi
# 常用文件测试
# -e: 存在
# -f: 普通文件
# -d: 目录
# -r/w/x: 读写执行权限
# -z: 长度为0
# -n: 长度非0
9.3 循环
# for循环
for i in {1..5}; do
echo $i
done
for fruit in apple banana cherry; do
echo $fruit
done
# while循环
count=0
while [ $count -lt 5 ]; do
echo $count
((count++))
done
# 读取文件
while read line; do
echo $line
done < file.txt
# 循环控制
break # 跳出循环
continue # 跳过本次迭代
9.4 函数
function greet() {
echo "Hello, $1!" # $1是第一个参数
return 42 # 返回值
}
greet "Alice"
echo $? # 获取返回值
# 局部变量
function example() {
local x=10
echo $x
}
第十章 安全加固
10.1 防火墙
# UFW(Ubuntu)
ufw enable
ufw disable
ufw status
ufw allow 22/tcp # 允许SSH
ufw allow 80/tcp # 允许HTTP
ufw allow 443/tcp # 允许HTTPS
ufw deny from 1.2.3.4 # 禁止IP
# firewalld(CentOS)
firewall-cmd --state
firewall-cmd --permanent --add-service=http
firewall-cmd --reload
10.2 SSH安全
# /etc/ssh/sshd_config 配置
# 禁止密码登录
PasswordAuthentication no
# 禁止root登录
PermitRootLogin no
# 更改默认端口
Port 22222
# 允许特定用户
AllowUsers alice bob
# 限制失败登录次数
MaxAuthTries 3
# 重启服务
systemctl restart sshd
10.3 定期维护
# 更新系统
apt update && apt upgrade -y # Debian/Ubuntu
yum update -y # CentOS
# 检查磁盘
df -h
# 检查内存
free -m
# 检查日志异常
grep "Failed" /var/log/auth.log
grep "Invalid" /var/log/auth.log
# fail2ban(防暴力破解)
apt install fail2ban
systemctl enable fail2ban
附录:常用命令速查
| 命令 | 功能 |
|---|---|
| ls | 列出目录内容 |
| cd | 切换目录 |
| pwd | 显示当前目录 |
| mkdir | 创建目录 |
| rm | 删除文件/目录 |
| cp | 复制文件/目录 |
| mv | 移动/重命名 |
| cat | 显示文件内容 |
| grep | 搜索文本 |
| find | 查找文件 |
| chmod | 修改权限 |
| chown | 修改所有者 |
| ps | 查看进程 |
| kill | 终止进程 |
| top/htop | 进程监控 |
| df | 磁盘使用 |
| du | 目录大小 |
| free | 内存使用 |
| ping | 网络测试 |
| ssh | 远程连接 |
| scp | 文件传输 |
| tar | 归档压缩 |
| systemctl | 服务管理 |
| journalctl | 日志查看 |
笔记整理:AI助手
更新时间:2026-03-19