Linux 实用指南:从入门到熟练的全面技术手册

Linux 作为一款开源、稳定且高度可定制的操作系统,已深度渗透到服务器、云计算、嵌入式设备、移动终端(如 Android 底层)等多个领域。无论是开发者、系统管理员,还是普通用户,掌握 Linux 技能都能显著提升工作效率和系统掌控力。

本指南旨在为 Linux 初学者到中级用户 提供一套系统化的实践教程,涵盖从安装配置到日常运维的核心知识点。我们将结合实际场景,通过具体命令示例、最佳实践和常见问题解析,帮助你快速上手并深入理解 Linux 系统。

目录#

  1. Linux 简介与发行版选择
  2. Linux 系统安装步骤
  3. Linux 基本命令与文件操作
  4. Linux 文件系统结构详解
  5. 用户与权限管理
  6. 包管理器:软件安装与维护
  7. 进程管理与系统监控
  8. 网络配置与故障排查
  9. Linux 系统安全最佳实践
  10. Shell 脚本入门与实用案例
  11. 效率提升:Linux 技巧与工具
  12. 总结与进阶方向
  13. 参考资料

1. Linux 简介与发行版选择#

1.1 Linux 核心优势#

  • 开源免费:源代码公开,可自由修改和分发,降低企业成本。
  • 稳定性与安全性:服务器领域平均无故障运行时间长,漏洞修复响应快。
  • 多任务与多用户:支持同时运行多个进程和多用户并发操作。
  • 高度可定制:从内核到应用,可根据需求裁剪系统。

1.2 常见发行版(Distro)及选择建议#

发行版特点适用场景
Ubuntu易用性强,社区活跃,软件生态丰富桌面用户、开发环境、小型服务器
CentOS/RHEL稳定性极佳,企业级支持,长期维护生产服务器、企业级应用
Debian严谨稳定,开源洁癖,适合定制服务器、嵌入式系统
Arch Linux滚动更新,极简设计,适合技术爱好者个人桌面、深度定制需求
Fedora前沿技术,RedHat 测试版,更新频繁开发测试、新技术尝鲜

选择建议:初学者优先推荐 Ubuntu(桌面/服务器版)或 CentOS Stream(免费企业级体验)。

2. Linux 系统安装步骤#

Ubuntu Server 22.04 LTS 为例,演示安装流程:

2.1 准备工作#

  • 下载 ISO 镜像:Ubuntu 官网
  • 制作启动盘:使用工具(如 Rufus、Etcher 或 Linux dd 命令)
    # Linux 下用 dd 制作启动盘(需替换 /dev/sdX 为 U 盘设备名)
    sudo dd if=ubuntu-22.04-live-server-amd64.iso of=/dev/sdX bs=4M status=progress
  • 硬件要求:至少 2GB 内存,20GB 存储(服务器建议 4GB+ 内存,40GB+ 存储)。

2.2 安装流程#

  1. 启动与选择语言:从 U 盘启动,选择安装语言(推荐英文,避免中文路径问题)。
  2. 网络配置:默认 DHCP 自动获取 IP,服务器建议手动设置静态 IP(通过 ip addr 确认网卡名,如 ens33)。
  3. 磁盘分区
    • 简单方案:单个 / 分区 + swap 分区(内存 ≤8GB 时设为内存 1-2 倍,>8GB 可设 8GB)。
    • 企业方案:/boot(200MB)、/(根分区)、/home(用户数据)、/var(日志和缓存)、swap 单独分区。
  4. 用户设置:创建管理员用户(非 root),建议勾选 “Install OpenSSH Server” 以便远程管理。
  5. 等待安装完成:重启后移除启动盘,系统即可使用。

2.3 安装后必做事项#

# 更新系统包
sudo apt update && sudo apt upgrade -y
 
# 安装常用工具
sudo apt install -y vim wget curl htop net-tools

3. Linux 基本命令与文件操作#

3.1 文件系统导航与查看#

命令功能示例
pwd显示当前工作目录pwd/home/user
cd切换目录cd /var/log(绝对路径)、cd ../(相对路径)
ls列出目录内容ls -l(详细信息)、ls -la(显示隐藏文件)
tree树形结构显示目录(需安装)tree -L 2 /home(显示 2 层)

3.2 文件/目录操作#

命令功能示例
mkdir创建目录mkdir -p /tmp/test/subdir(递归创建)
touch创建空文件或更新时间戳touch newfile.txt
cp复制文件/目录cp file1.txt /tmp/(文件)、cp -r dir1 /tmp/(目录)
mv移动/重命名文件mv oldname.txt newname.txt(重命名)、mv file /tmp/(移动)
rm删除文件/目录rm file.txtrm -rf dir/(强制删除目录,谨慎使用!)
cat查看文件内容(适合小文件)cat /etc/passwd
less/more分页查看大文件less /var/log/syslog(按 q 退出)
head/tail查看文件开头/结尾内容head -n 10 file.txt(前 10 行)、tail -f /var/log/nginx/access.log(实时跟踪日志)

3.3 文本搜索与处理#

  • grep:在文件中搜索字符串
    grep "error" /var/log/syslog  # 搜索包含 "error" 的行
    grep -r "password" /etc/       # 递归搜索 /etc 下含 "password" 的文件
  • find:按条件查找文件
    find /home -name "*.txt"       # 查找 /home 下所有 .txt 文件
    find / -size +100M             # 查找系统中大于 100MB 的文件

3.4 最佳实践#

  • 谨慎使用 rm -rf:删除前先用 ls 确认目录内容,重要文件建议备份。
  • 善用 Tab 补全:输入命令/路径时按 Tab 键自动补全,减少输入错误。
  • 使用绝对路径操作系统文件:如 /etc/fstab 而非相对路径,避免误操作。

4. Linux 文件系统结构详解#

Linux 遵循 Filesystem Hierarchy Standard (FHS),所有文件以树形结构组织,根目录为 /

4.1 核心目录功能#

目录功能描述
/根目录,所有文件的起点
/bin基础用户命令(二进制可执行文件),如 lscp
/sbin系统管理命令,如 rebootifconfig
/usr共享资源目录,包含 bin(用户命令)、lib(库文件)、local(第三方软件)
/etc系统配置文件,如 passwd(用户信息)、nginx.conf(Nginx 配置)
/home普通用户家目录,如 /home/user
/var动态变化文件,如 log(日志)、cache(缓存)、spool(邮件/打印队列)
/tmp临时文件,系统重启后清空
/proc虚拟文件系统,映射内核与进程信息(如 /proc/cpuinfo 显示 CPU 信息)
/sys虚拟文件系统,硬件设备与驱动信息

4.2 示例:查看系统关键信息#

cat /proc/version   # 查看内核版本
cat /etc/os-release # 查看发行版信息
df -h               # 查看磁盘空间使用情况(-h 人类可读单位)
du -sh /home/*      # 查看 /home 下各目录大小(-s 汇总,-h 单位)

5. 用户与权限管理#

5.1 用户与组基本概念#

  • 用户(User):每个用户有唯一 UID(0 为 root,1-999 系统用户,1000+ 普通用户)。
  • 组(Group):用户的集合,便于批量权限管理,每个用户至少属于一个主组和多个附加组。

5.2 用户管理命令#

命令功能示例
useradd创建用户sudo useradd -m -s /bin/bash newuser(-m 创建家目录,-s 指定 shell)
passwd设置用户密码sudo passwd newuser(输入密码)
usermod修改用户属性sudo usermod -aG sudo newuser(添加到 sudo 组,获取管理员权限)
userdel删除用户sudo userdel -r newuser(-r 同时删除家目录)
id查看用户 UID/GID 信息id newuseruid=1001(newuser) gid=1001(newuser) groups=1001(newuser),27(sudo)

5.3 文件权限表示与修改#

Linux 文件权限通过 9 个字符 表示,分为 3 组(用户 owner、组 group、其他 others),每组包含 r(读,4)、w(写,2)、x(执行,1)。

示例:权限解析#

ls -l file.txt
# 输出:-rw-r--r-- 1 user user 0 Jun 1 12:00 file.txt
# 权限部分:- rw- r-- r--
# 第1位:文件类型(- 普通文件,d 目录,l 链接)
# 2-4位:owner 权限(rw- → 6)
# 5-7位:group 权限(r-- → 4)
# 8-10位:others 权限(r-- → 4)

修改权限命令 chmod#

chmod u+x file.txt   # 给 owner 添加执行权限
chmod g+w file.txt   # 给 group 添加写权限
chmod o-r file.txt   # 移除 others 的读权限
chmod 640 file.txt   # 数字表示:owner=6(rw),group=4(r),others=0(无)

修改所有者命令 chown#

sudo chown user:group file.txt  # 将文件所有者改为 user,所属组改为 group
sudo chown -R user:group dir/   # 递归修改目录及内容的所有者

5.4 最佳实践#

  • 禁用 root 直接登录:通过普通用户 + sudo 提权操作,增强安全性。
  • 最小权限原则:文件/目录权限仅授予必要的 rwx,避免 777(任何用户可读写执行)。
  • 定期清理无用用户:删除离职员工账户,避免权限泄露。

6. 包管理器:软件安装与维护#

Linux 软件通常通过 包管理器 安装,自动解决依赖关系。不同发行版使用不同工具:

6.1 Debian/Ubuntu(APT 包管理器)#

核心命令#

sudo apt update          # 更新软件源索引(/etc/apt/sources.list)
sudo apt upgrade         # 升级已安装软件
sudo apt install nginx   # 安装 Nginx
sudo apt remove nginx    # 卸载软件(保留配置文件)
sudo apt purge nginx     # 彻底卸载(删除配置文件)
sudo apt autoremove      # 自动删除无用依赖
sudo apt search "text editor"  # 搜索软件
apt show vim             # 查看软件详情

配置国内源(加速下载)#

编辑 /etc/apt/sources.list,替换为阿里云/清华源(以 Ubuntu 22.04 为例):

# 阿里云源
deb http://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted universe multiverse

6.2 CentOS/RHEL(DNF/YUM 包管理器)#

DNF 是 YUM 的升级版,兼容 YUM 命令。

sudo dnf check-update    # 检查可更新软件
sudo dnf update          # 升级所有软件
sudo dnf install httpd   # 安装 Apache
sudo dnf remove httpd    # 卸载软件
sudo dnf repolist        # 列出已启用的软件源
sudo dnf clean all       # 清理缓存

6.3 最佳实践#

  • 定期更新系统apt upgradednf update,修复安全漏洞。
  • 优先使用官方源:第三方源可能导致依赖冲突,仅添加可信源。
  • 保留配置文件:卸载软件时用 remove 而非 purge(APT),避免误删配置。

7. 进程管理与系统监控#

7.1 进程基本概念#

  • 进程:运行中的程序实例,拥有独立的内存空间和 PID(进程 ID)。
  • 父进程与子进程:进程可创建子进程,父进程结束后子进程可能成为“孤儿进程”(由 init 进程收养)。

7.2 进程查看命令#

命令功能示例
ps查看当前终端进程ps aux(查看系统所有进程,a=所有用户,u=详细信息,x=无终端进程)
top实时动态监控进程(交互式)top -p 1234(监控 PID=1234 的进程)
htop增强版 top,支持鼠标操作(需安装)htop(按 F6 排序,F9 终止进程)
pstree树形显示进程关系pstree -p(显示 PID)

7.3 进程控制命令#

命令功能示例
kill发送信号终止进程kill 1234(默认发送 SIGTERM,允许进程优雅退出)、kill -9 1234(强制终止,SIGKILL)
pkill按名称终止进程pkill nginx(终止所有 nginx 进程)
bg/fg后台/前台运行进程sleep 100 &(后台运行)、bg %1(将任务 1 放入后台)、fg %1(调回前台)
nohup忽略挂断信号,进程后台持久运行nohup ./script.sh &(日志输出到 nohup.out)

7.4 系统资源监控#

free -h        # 查看内存使用(-h 单位:G/M)
vmstat 2       # 每 2 秒输出一次系统状态(CPU、内存、IO)
iostat -x 2    # 查看磁盘 IO 性能(需安装 sysstat)
netstat -tuln  # 查看监听端口(t=TCP,u=UDP,l=监听,n=数字端口)
ss -tuln       # 替代 netstat 的新命令,更高效

8. 网络配置与故障排查#

8.1 网络基础命令#

命令功能示例
ip addr查看/配置网络接口(替代 ifconfig)ip addr show ens33(显示指定网卡信息)
ping测试网络连通性ping -c 4 baidu.com(发送 4 个包)
traceroute跟踪数据包路径traceroute baidu.com(显示路由跳数)
curl/wget下载文件或测试 HTTP 连接curl -I https://baidu.com(查看响应头)、wget https://example.com/file.iso
ss -tulnp查看端口占用及对应进程(需 root)`ss -tulnp

8.2 静态 IP 配置(Ubuntu 示例)#

方法 1:netplan(Ubuntu 18.04+)#

编辑配置文件 /etc/netplan/00-installer-config.yaml

network:
  version: 2
  renderer: networkd
  ethernets:
    ens33:  # 网卡名(通过 ip addr 查看)
      dhcp4: no
      addresses: [192.168.1.100/24]  # IP 及子网掩码
      gateway4: 192.168.1.1         # 网关
      nameservers:
        addresses: [8.8.8.8, 114.114.114.114]  # DNS 服务器

应用配置:sudo netplan apply

8.3 网络故障排查步骤#

  1. 检查物理连接:网线是否插好,无线是否连接。
  2. 查看 IP 配置ip addr 确认是否获取到 IP。
  3. 测试网关连通性ping 192.168.1.1(网关 IP)。
  4. 测试 DNS 解析ping baidu.com(若 IP 通但域名不通,可能 DNS 故障)。
  5. 查看防火墙规则sudo ufw status(Ubuntu)或 sudo firewall-cmd --list-all(CentOS),确认端口是否开放。

9. Linux 系统安全最佳实践#

9.1 防火墙配置#

Ubuntu(UFW,简单防火墙)#

sudo ufw enable           # 启用防火墙(开机自启)
sudo ufw disable          # 禁用防火墙
sudo ufw status           # 查看状态
sudo ufw allow 22/tcp     # 允许 SSH 端口(TCP)
sudo ufw allow 80,443/tcp # 允许 HTTP/HTTPS 端口
sudo ufw deny 3306/tcp    # 禁止 MySQL 端口外部访问

CentOS(Firewalld)#

sudo systemctl start firewalld     # 启动服务
sudo systemctl enable firewalld    # 开机自启
sudo firewall-cmd --add-service=ssh --permanent  # 永久开放 SSH 服务
sudo firewall-cmd --add-port=80/tcp --permanent  # 永久开放 80 端口
sudo firewall-cmd --reload         # 重载配置生效

9.2 SSH 安全加固#

SSH 是远程管理的主要方式,需重点防护:

  1. 禁用密码登录,使用密钥登录
    # 客户端生成密钥对
    ssh-keygen -t ed25519  # 生成 ed25519 算法密钥(更安全)
    # 上传公钥到服务器
    ssh-copy-id user@server_ip
    # 服务器端编辑 /etc/ssh/sshd_config
    PasswordAuthentication no  # 禁用密码登录
    PubkeyAuthentication yes   # 启用密钥登录
    sudo systemctl restart sshd  # 重启 SSH 服务
  2. 修改默认 SSH 端口(如 22 → 2222)
    编辑 /etc/ssh/sshd_config,设置 Port 2222,并更新防火墙规则。
  3. 限制登录用户
    sshd_config 中添加 AllowUsers user1 [email protected]/24(仅允许 user1 和 192.168.1.x 网段的 user2 登录)。

9.3 其他安全措施#

  • 定期更新系统sudo apt upgradesudo dnf update,修复安全漏洞。
  • 安装 Fail2ban:防御 SSH 暴力破解
    sudo apt install fail2ban  # 安装
    sudo systemctl enable --now fail2ban  # 启动并自启
  • 文件权限控制:敏感文件(如私钥、配置文件)设置为 600(仅所有者读写)。

10. Shell 脚本入门与实用案例#

Shell 脚本是自动化任务的利器,支持变量、循环、条件判断等逻辑。

10.1 基础语法#

  • Shebang:指定解释器,开头添加 #!/bin/bash
  • 变量name="Linux",引用时用 $name${name}
  • 条件判断if [ condition ]; then ... fi(注意 [ ] 前后空格)。
  • 循环for 循环、while 循环。

10.2 实用脚本案例:日志备份工具#

#!/bin/bash
# 功能:备份 /var/log 目录到 /backup,保留最近 7 天的备份
 
# 变量定义
LOG_DIR="/var/log"
BACKUP_DIR="/backup"
DATE=$(date +%Y%m%d)
BACKUP_FILE="${BACKUP_DIR}/log_backup_${DATE}.tar.gz"
 
# 创建备份目录
mkdir -p ${BACKUP_DIR}
 
# 备份并压缩
echo "Starting backup: ${BACKUP_FILE}"
tar -czf ${BACKUP_FILE} ${LOG_DIR}
 
# 检查备份是否成功
if [ $? -eq 0 ]; then
  echo "Backup succeeded."
else
  echo "Backup failed!"
  exit 1
fi
 
# 删除 7 天前的备份
find ${BACKUP_DIR} -name "log_backup_*.tar.gz" -mtime +7 -delete
echo "Old backups deleted."

使用方法:

chmod +x backup_logs.sh  # 添加执行权限
sudo ./backup_logs.sh    # 运行脚本(需 root 权限访问 /var/log)

11. 效率提升:Linux 技巧与工具#

11.1 命令行快捷键#

  • Ctrl + A:移动光标到行首
  • Ctrl + E:移动光标到行尾
  • Ctrl + U:删除光标前所有字符
  • Ctrl + K:删除光标后所有字符
  • Ctrl + R:搜索历史命令(输入关键词后按 Ctrl + R 循环查找)

11.2 实用工具推荐#

  • htop:进程监控,替代 top
  • tmux:终端复用工具,支持多窗口、会话保存(断网重连后恢复工作状态)。
    tmux new -s session1   # 创建会话
    tmux attach -t session1 # 连接会话
    tmux ls                # 列出所有会话
  • fzf:命令行模糊搜索工具,快速查找文件/历史命令。
  • axel:多线程下载工具,替代 wget(如 axel -n 10 http://example.com/file.iso)。

12. 总结与进阶方向#

12.1 核心知识点回顾#

  • Linux 发行版选择与安装流程。
  • 基本命令:文件操作、用户权限、进程管理、网络配置。
  • 系统管理:包管理、服务控制、安全加固。
  • 自动化:Shell 脚本基础应用。

12.2 进阶学习方向#

  • Linux 内核:内核编译、模块开发、性能调优。
  • 容器技术:Docker、Kubernetes 部署与管理。
  • Shell 高级编程:函数、数组、正则表达式、awk/sed 文本处理。
  • 监控与运维:Prometheus、Grafana、ELK 日志分析。

13. 参考资料#

希望本指南能帮助你快速掌握 Linux 实用技能!实践是学习 Linux 的最佳方式,多动手操作、解决实际问题,才能真正提升熟练度。如有疑问,欢迎留言交流~