前言:为什么选择 CentOS?
- 企业级的稳定性和可靠性:CentOS(Community Enterprise Operating System)是 Red Hat Enterprise Linux (RHEL) 的免费复刻版,继承了 RHEL 的稳定基因,非常适合用作服务器操作系统。
- 强大的社区支持:拥有庞大的用户和开发者社区,遇到问题很容易找到解决方案。
- 免费与开源:完全免费,没有授权费用。
- 丰富的软件生态:通过 YUM/DNF 包管理器,可以轻松安装和管理海量软件。
重要提示:CentOS 项目已经发生重大变化,官方推荐的新版本是 CentOS Stream,它作为 RHEL 的“上游”开发版,更新更频繁,而传统的、稳定的 CentOS 7/8 已停止维护(EOL),对于追求极致稳定的生产环境,建议使用 Rocky Linux 或 AlmaLinux,它们是 CentOS 7/8 的直接替代品,本教程的大部分内容同样适用于这些发行版。
(图片来源网络,侵删)
第一部分:入门基础
什么是 Linux?
Linux 是一套免费使用和自由传播的类 Unix 操作系统内核,我们通常所说的 "Linux",其实是指包含 Linux 内核和各种 GNU 软件的一个完整操作系统发行版,CentOS、Ubuntu、Debian 等。
Linux 文件系统结构
理解 Linux 文件系统是学习的第一步,它像一个倒置的树,所有东西都从根 开始。
| 目录 | 用途 |
|---|---|
| 根目录,唯一顶级目录,所有文件和目录都在它下面。 | |
/bin |
基本命令,如 ls, cp, mv,所有用户可用。 |
/sbin |
系统管理员命令,如 fdisk, ifconfig,通常需要 root 权限。 |
/etc |
系统配置文件存放地,如 nginx.conf, my.cnf。 |
/home |
普通用户的家目录,每个用户都有自己的一个目录,如 /home/username。 |
/root |
超级管理员 (root) 的家目录。 |
/usr |
用户程序和数据,存放大部分应用程序,如 /usr/bin, /usr/local。 |
/var |
经常变化的文件,如日志 (/var/log)、邮件、Web 服务器内容。 |
/tmp |
临时文件,系统重启时通常会被清空。 |
/boot |
启动文件,如 Linux 内核、引导加载程序。 |
/dev |
设备文件,代表系统中的硬件设备,如硬盘、光驱。 |
/proc |
虚拟文件系统,内核与进程信息的映射,不占用磁盘空间。 |
/opt |
可选软件包,存放第三方大型软件。 |
/mnt, /media |
挂载点,临时挂载存储设备。 |
终端/Shell 简介
Shell 是用户与 Linux 内核交互的桥梁,我们通过在终端(Terminal)输入命令来控制 Shell。
- 常用 Shell:
Bash(Bourne-Again Shell) 是目前最主流的 Shell。 - 打开终端: 在桌面环境下,通常可以通过应用程序菜单找到 "终端" 或 "控制台"。
第二部分:核心命令操作
文件和目录操作
这是最常用、最基础的操作。

| 命令 | 全称 | 描述 | 示例 |
|---|---|---|---|
ls |
list | 列出目录内容 | ls -l (长格式), ls -a (显示隐藏文件), ls -h (人性化显示大小) |
cd |
change directory | 切换目录 | cd /home (去到 home 目录), cd .. (返回上一级), cd ~ (回到自己的家目录) |
pwd |
print working directory | 显示当前所在目录 | pwd |
mkdir |
make directory | 创建新目录 | mkdir my_folder (创建), mkdir -p a/b/c (递归创建多级目录) |
touch |
touch | 创建空文件或更新文件时间戳 | touch new_file.txt |
cp |
copy | 复制文件或目录 | cp file1.txt file2.txt (复制文件), cp -r dir1/ dir2/ (递归复制目录) |
mv |
move | 移动/重命名文件或目录 | mv old_name.txt new_name.txt (重命名), mv file.txt /tmp/ (移动文件) |
rm |
remove | 删除文件或目录 | rm file.txt (删除文件), rm -r dir/ (递归删除目录), rm -f file.txt (强制删除,不提示) |
cat |
concatenate | 查看文件内容(适合小文件) | cat file.txt |
more / less |
- | 分页查看文件内容(适合大文件),less 更强大 |
less file.txt (按 q 退出) |
head / tail |
- | 查看文件的开头/结尾部分 | head -n 10 file.txt (看前10行), tail -f /var/log/messages (实时查看日志文件) |
文件权限管理
Linux 是多用户系统,权限管理至关重要,每个文件都有三类用户:
- User (u): 文件所有者。
- Group (g): 文件所属组。
- Other (o): 其他所有用户。
每类用户有三种权限:
- r (read): 读权限 (数字
4) - w (write): 写权限 (数字
2) - x (execute): 执行权限 (数字
1)
查看权限:
ls -l file.txt # 输出: -rw-r--r--. 1 user group 0 Jun 20 10:00 file.txt # 解释: - (文件类型) rw- (用户权限) r-- (组权限) r-- (其他权限)
修改权限:
- 符号法:
chmod u+x file.txt # 给用户添加执行权限 chmod g-w file.txt # 移除组的写权限 chmod o=r file.txt # 设置其他用户只有读权限 chmod a=rwx file.txt # 给所有用户添加所有权限
- 数字法 (更常用):
# r=4, w=2, x=1 # 7 = 4+2+1 (rwx), 6 = 4+2 (rw-), 5 = 4+1 (r-x), 4 = 4 (r--) chmod 755 file.txt # 所有者 rwx, 组 r-x, 其他 r-x chmod 600 secret.txt # 所有者 rw-, 组 ---, 其他 ---
修改所有者:
# chown [用户]:[组] 文件/目录 chown user1:group1 file.txt # 同时修改所有者和所属组 chown -R user1 /path/to/dir # 递归修改目录及其下所有内容的所有者
用户和组管理
- 创建用户:
sudo useradd -m -s /bin/bash newuser # 创建新用户,并创建家目录,指定默认shell sudo passwd newuser # 为新用户设置密码
- 删除用户:
sudo userdel newuser # 删除用户,但保留家目录 sudo userdel -r newuser # 删除用户及其家目录
- 切换用户:
su - newuser # 切换到 newuser,并加载其环境变量 exit # 退出当前用户,回到原用户
sudo命令: 以超级管理员身份执行命令,普通用户需要配置/etc/sudoers文件才能使用sudo。
文本处理三剑客
grep, sed, awk 是 Linux 下强大的文本处理工具。
grep: 全局正则表达式打印,用于在文本中搜索匹配的行。grep "error" /var/log/messages # 在日志中搜索包含 "error" 的行 grep -i "warning" /var/log/messages # 忽略大小写 grep -v "ok" /var/log/messages # 反向选择,输出不包含 "ok" 的行
sed: 流编辑器,用于对文本进行编辑(增删改查)。sed 's/old/new/g' file.txt # 将文件中所有 "old" 替换为 "new" (s=substitute, g=global) sed -i 's/old/new/g' file.txt # 直接在原文件上修改 sed -n '10,20p' file.txt # 只打印第10到20行
awk: 文本报告生成器,用于按列处理和格式化文本。# 打印 /etc/passwd 文件的第1和第7列(用户名和默认shell) awk -F: '{print $1, $7}' /etc/passwd # -F 指定分隔符,默认是空格
第三部分:软件包管理
YUM/DNF 包管理器
CentOS 7 及之前版本使用 yum,CentOS 8 及以后使用 dnf(dnf 是 yum 的下一代,命令基本兼容)。
- 搜索软件包:
sudo dnf search nginx
- 查看软件包信息:
sudo dnf info nginx
- 安装软件包:
sudo dnf install nginx
- 更新软件包:
sudo dnf update # 更新所有已安装的软件包 sudo dnf update nginx # 更新指定的软件包
- 删除软件包:
sudo dnf remove nginx
- 清理缓存:
sudo dnf clean all
第四部分:系统管理
系统信息查看
- 查看内核版本/系统信息:
uname -a # 显示所有信息 cat /etc/os-release # 显示详细的系统版本信息 (推荐) cat /etc/redhat-release # 传统方式显示 RedHat/CentOS 版本
- 查看CPU信息:
lscpu # 查看CPU详细信息 cat /proc/cpuinfo # 查看原始CPU信息
- 查看内存使用情况:
free -h # 以人性化的方式显示内存和交换空间
- 查看磁盘空间:
df -h # 查看各文件系统的磁盘使用情况 du -sh /path/to/dir # 查看指定目录的总大小
进程管理
- 查看进程:
ps aux # 显示所有进程的详细信息 ps -ef # 另一种查看所有进程的方式 top # 动态实时地显示进程和系统资源占用情况 (按 `q` 退出)
- 结束进程:
kill PID_NUMBER # 正常结束进程 kill -9 PID_NUMBER # 强制杀死进程 (慎用)
网络配置
- 查看网络接口:
ip a # 查看所有网络接口的IP地址 ifconfig # 传统命令,功能类似
- 查看路由表:
ip r
- 查看网络连接:
ss -tulnp # 查看所有监听的端口和对应的进程 netstat -tulnp # 传统命令
- 测试网络连通性:
ping google.com
- 下载文件:
wget http://example.com/file.zip curl -O http://example.com/file.zip
第五部分:服务管理 (Systemd)
CentOS 7 及以后使用 systemd 作为系统和服务管理器。
- 启动、停止、重启服务:
sudo systemctl start nginx.service sudo systemctl stop nginx.service sudo systemctl restart nginx.service
- 设置开机自启:
sudo systemctl enable nginx.service # 启用自启 sudo systemctl disable nginx.service # 禁用自启
- 查看服务状态:
sudo systemctl status nginx.service
- 查看所有已启动的服务:
systemctl list-units --type=service --state=running
第六部分:软件安装方式
除了 YUM/DNF,还有两种常见方式:
-
源码编译安装:
- 从官网下载
.tar.gz或.tar.bz2源码包。 - 执行
./configure(配置),make(编译),sudo make install(安装)。 - 优点: 定制性高,能获得最新功能。
- 缺点: 编译时间长,依赖复杂,不易管理。
- 从官网下载
-
RPM 包安装:
- 下载
.rpm格式的二进制包。 - 使用
rpm命令管理。 sudo rpm -ivh package.rpm(安装)sudo rpm -e package_name(卸载)- 优点: 安装快速,有依赖关系检查。
- 缺点: 依赖关系复杂时难以解决。
- 下载
强烈推荐优先使用 YUM/DNF,它能自动解决依赖问题,是 CentOS 生态的最佳实践。
第七部分:学习路径与资源
进阶学习建议
- Shell 脚本编程:学习编写自动化脚本,解放双手。
- 网络基础:深入理解 TCP/IP、HTTP、DNS 等。
- Web 服务:学习搭建 Nginx、Apache、Tomcat 等服务器。
- 数据库:学习 MySQL, PostgreSQL 的安装和管理。
- 虚拟化与容器化:学习 KVM, Docker, Kubernetes。
- 安全加固:学习防火墙配置 (
firewalld,iptables)、SSH 安全、SELinux 等。
推荐资源
- 官方文档:Rocky Linux Documentation (可作为 CentOS 的参考)
- 在线教程:
- Linux Command Library (命令查询)
- The Geek Stuff (大量实用的 Linux 教程)
- 菜鸟教程 - Linux 教程
- 书籍:
- 《鸟哥的 Linux 私房菜》 (繁体中文版,经典中的经典)
- 《Linux/UNIX 系统编程手册》 (深入底层)
- 社区:
学习 Linux 是一个循序渐进的过程,最重要的是 多动手实践,不要害怕犯错,虚拟机是你的好朋友,可以在里面随意折腾而不用担心搞坏系统,从基础的文件操作开始,逐步深入到系统管理和网络服务,你会发现 Linux 强大的功能和魅力。
祝你学习愉快!

