DevOps 入门系列:Linux 基础 —— 你每天都会用到的服务器操作
DevOps 入门系列 :Linux 基础 —— 你每天都会用到的服务器操作
无需 Linux 前置经验,学习完成后可掌握:
-
理解 Linux 系统定位、文件系统架构
-
熟练使用高频基础命令,完成文件/目录日常操作
-
掌握用户、权限、进程、端口、服务、磁盘、日志的基础管理能力
一、什么是 Linux?为什么 DevOps 必须会它?
1.1 Linux 是什么?
Linux 本质是操作系统内核(操作系统核心组件),和 Windows、macOS 属于同类型产品。
日常工作中提到的「Linux」,一般指 Linux 发行版,例如 Ubuntu、CentOS、Debian、Red Hat。发行版在内核基础上整合了各类应用软件,构成一套完整可直接使用的操作系统。
1.2 互联网服务器首选 Linux 的原因
-
免费:无需支付商业授权费用
-
稳定:可连续运行数年无需重启
-
安全:权限体系严格,官方漏洞修复响应快
-
轻量:极低硬件资源即可正常运行(数百 MB 内存即可)
-
开源:内核代码开放,可按需定制(常规运维无需修改)
互联网后端服务、网站、数据库、中间件几乎全部部署在 Linux 服务器。DevOps 日常需要远程登录服务器、排查日志、监控资源、发布项目,因此 Linux 命令是必备技能。
1.3 搭建 Linux 学习环境(任选其一)
-
虚拟机:VirtualBox + Ubuntu 镜像
-
Windows 内置:WSL(Windows 适用于 Linux 的子系统)
-
云服务器:阿里云、腾讯云等平台免费试用机型
-
Mac 终端:大部分命令与 Linux 通用
本文示例环境统一使用 Ubuntu。
二、文件系统:Linux 文件组织规则
2.1 树形目录结构
Linux 没有 Windows 的 C 盘、D 盘分区概念,整套文件体系是唯一树形结构,树根为 /(根目录),所有文件、目录都挂载在根目录下。
基础目录示例:
-
/:根目录,整个文件系统起点 -
/home:所有普通用户家目录统一存放位置 -
/home/zhangsan:用户zhangsan的个人家目录,可简写为~
2.2 绝对路径与相对路径
-
绝对路径:以根目录
/开头,全路径唯一,无论当前在哪个目录,指向位置不变。
示例:/home/devops/file.txt -
相对路径:基于当前所在目录定位文件
-
\.代表当前目录 -
\.\.代表上一级目录
示例:当前在/home/devops,\.\./alice/file.txt等价于/home/alice/file.txt
-
2.3 核心目录速查表
日常运维高频目录,无需死记,使用时查阅即可:
| 目录 | 用途说明 |
|---|---|
/ | 根目录,所有目录的起点 |
/home | 普通用户家目录(例:/home/zhangsan) |
/root | root 超级管理员用户的家目录 |
/etc | 系统、应用配置文件目录(Nginx、MySQL 配置均在此) |
/var | 动态变化数据目录(日志、缓存、邮件等) |
/tmp | 临时文件目录,系统重启后内容大概率清空 |
/usr | 系统预装/用户安装程序、依赖库(类似 Windows 的 Program Files) |
/bin、/sbin | 系统基础命令存放目录(ls、cp、mv 等) |
三、最常用 Linux 基础命令(详解+示例)
3.1 pwd — 查看当前所在目录
作用:Print Working Directory,打印当前工作目录路径
使用场景:不清楚自己当前处于哪个文件夹
pwd
# 输出示例:/home/devops
3.2 ls — 列出目录内容
作用:List,查看当前目录下的文件、子目录
常用参数:
-
ls:简单展示文件/目录名 -
ls -l:详细展示(权限、大小、修改时间、所属用户) -
ls -a:展示所有文件,包含\.开头的隐藏文件 -
ls -la:组合参数,运维最常用
# 查看 /home 目录详细内容
ls -la /home
3.3 cd — 切换工作目录
作用:Change Directory,跳转目录
# 绝对路径跳转
cd /etc/nginx
# 回到上一级目录
cd ..
# 回到当前用户的家目录
cd ~
# 回到上一次所在的目录(快速切换)
cd -
3.4 mkdir — 创建目录
作用:Make Directory,新建文件夹
核心参数:\-p 递归创建多级目录(父目录不存在时自动创建)
# 创建单个目录
mkdir my_folder
# 递归创建多级目录 project/src/css
mkdir -p project/src/css
3.5 touch — 创建空文件 / 更新文件时间戳
作用:文件不存在则创建空文件;文件已存在则更新文件修改时间为当前时间
使用场景:快速新建空白配置文件、脚本文件
touch config.ini
3.6 cp — 复制文件/目录
作用:Copy,复制文件或文件夹
核心参数:-r 递归复制目录(复制文件夹必须加此参数)
# 复制文件 file1.txt 为 file2.txt
cp file1.txt file2.txt
# 递归复制整个目录 mydir 到 newdir
cp -r mydir/ newdir/
3.7 mv — 移动文件 / 重命名
作用:Move,同一目录下使用为重命名,跨目录使用为移动文件
# 重命名:oldname.txt → newname.txt
mv oldname.txt newname.txt
# 移动文件到 /tmp 临时目录
mv file.txt /tmp/
3.8 rm — 删除文件/目录
作用:Remove,删除文件或目录
⚠️ 重要提醒:Linux 无回收站,删除后数据极难恢复,操作务必谨慎!
# 删除单个文件
rm file.txt
# 递归删除目录及内部所有内容(交互式询问)
rm -r mydir/
# 强制删除(不询问、直接删除),高危命令,谨慎使用
rm -rf mydir/
3.9 cat / less / head / tail — 查看文件内容
四类命令分工不同,根据文件大小、使用场景选择:
-
cat:一次性输出全部内容,适合小文件 -
less:分页查看,适合大文件(空格翻页,q退出) -
head:查看文件开头内容 -
tail:查看文件末尾内容,tail -f可实时跟踪日志(运维核心用法)
# 查看系统版本文件
cat /etc/os-release
# 分页查看系统日志
less /var/log/syslog
# 查看文件前 10 行
head -10 /var/log/syslog
# 查看文件最后 20 行
tail -n 20 /var/log/syslog
# 实时跟踪 Nginx 访问日志(日志新增内容会实时输出)
tail -f /var/log/nginx/access.log
3.10 grep — 文本搜索/内容筛选
(重要!!!shell脚本中常用)
作用:Global Regular Expression Print,在文件/输出流中匹配指定关键词
使用场景:筛选日志错误信息、查找配置文件中的指定内容
# 在 Nginx 错误日志中搜索 error 关键词
grep "error" /var/log/nginx/error.log
# 递归搜索 /etc/nginx 目录下所有包含 localhost 的文件
grep -r "localhost" /etc/nginx/
3.11 man — 查看命令帮助手册
作用:Manual,查看命令官方详细文档(英文),q 退出手册页面
使用场景:忘记命令参数、需要查询命令完整用法
# 查看 ls 命令完整手册
man ls
四、文件权限:Linux 安全核心机制
4.1 权限的作用
Linux 是多用户操作系统,服务器会多人共用。权限体系用于:
-
隔离用户文件,禁止他人随意查看、修改
-
保护系统核心文件,防止误删、篡改
-
限制配置文件的编辑权限,仅管理员可修改
4.2 查看权限信息
执行 ls -l 可查看文件完整权限,示例输出:
-rwxr-xr-- 1 alice devops 1234 Mar 10 10:00 script.sh
权限字段拆解(首位 + 三组权限位):
-
第一个字符:文件类型
-
-:普通文件 -
d:目录
-
-
后续 9 个字符分为 3 组,每组 3 位:
-
第 2~4 位:文件属主(所有者) 权限
-
第 5~7 位:所属用户组 权限
-
第 8~10 位:其他所有用户 权限
-
-
单字符含义:
-
r:可读 -
w:可写 -
x:可执行(目录需要 x 权限才能进入) -
-:无对应权限
-
示例解析 rwxr-xr--:
-
属主:rwx → 可读、可写、可执行
-
属组:r-x → 可读、不可写、可执行
-
其他人:r-- → 可读、不可写、不可执行
4.3 chmod — 数字方式修改权限
权限可换算为数字:r=4、w=2、x=1,每组权限数值相加得到最终权限码。
| 数字 | 权限组合 | 说明 |
|---|---|---|
| 7 | 4+2+1 = rwx | 可读、可写、可执行 |
| 6 | 4+2 = rw- | 可读、可写、不可执行 |
| 5 | 4+1 = r-x | 可读、不可写、可执行 |
| 4 | 4 = r-- | 仅可读 |
| 0 | 0 = --- | 无任何权限 |
chmod 后跟 三位数字,依次对应:属主、属组、其他用户。
# 属主:rwx,属组:r-x,其他人:r-x
chmod 755 script.sh
# 仅文件所有者可读写,其他用户无任何权限(密钥、私密配置常用)
chmod 600 secret.key
# 仅所有者可进入目录、操作目录内容
chmod 700 private_dir
4.4 chown — 修改文件属主/属组
用于变更文件的所有者和所属用户组,一般需要管理员权限:
# 将 file.txt 属主改为 alice
sudo chown alice file.txt
# 将 file.txt 属组改为 devops
sudo chown :devops file.txt
# 将 file.txt 属主改为 alice,属组改为 devops
sudo chown alice:devops file.txt
五、用户和组:服务器账号管理
5.1 用户分类
-
root 超级管理员:UID=0,拥有系统最高权限,可执行所有操作。日常禁止直接登录 root,仅紧急场景使用。
-
普通用户:手动创建的业务用户,权限受限,日常运维主力账号。
-
系统用户:后台服务专属用户(如 www-data、mysql),仅运行进程,不允许登录系统。
5.2 常用用户管理命令
# 创建普通用户 zhangsan
# -m:自动创建家目录 /home/zhangsan
# -s:指定登录终端 shell
sudo useradd -m -s /bin/bash zhangsan
# 为用户设置登录密码
sudo passwd zhangsan
# 切换到 zhangsan 用户(加载用户环境变量)
su - zhangsan
# 退出当前用户,返回上一级账号
exit
# 查看当前登录的用户名
whoami
5.3 sudo 提权
sudo 允许普通用户临时借用 root 权限执行单条命令,前提是该用户已加入 sudo 权限组。
执行时需要输入当前普通用户密码。
# 以管理员权限更新软件源
sudo apt update
六、进程管理:监控运行中的程序
6.1 进程概念
程序运行后就会转化为进程,系统会为每个进程分配唯一 PID(进程 ID),操作系统通过 PID 管理进程。
通俗理解:进程 = 服务器上正在运行的「任务」(Nginx、MySQL、脚本等)。
6.2 查看进程:ps / top
ps:静态查看进程快照
# 查看系统所有进程详细信息
# a:所有用户进程 u:展示详情 x:展示后台无终端进程
ps aux
# 筛选出 Nginx 相关进程(管道 + grep 组合,运维高频用法)
ps aux | grep nginx
top / htop:动态监控进程
# 实时刷新进程状态(CPU、内存占用排序),按 q 退出
top
# 界面更友好的增强版 top(需手动安装)
htop
6.3 kill — 终止进程
根据场景区分两种终止方式,优先使用普通 kill:
# 优雅终止进程(PID 为示例值)
# 发送关闭信号,进程可保存数据、释放资源后正常退出
kill 1234
# 强制杀死进程(不推荐常规使用)
# 直接强制终止,进程无清理时间,可能造成数据损坏、服务异常
kill -9 1234
6.4 ss — 查看端口监听
作用:Socket Statistics,查看服务器端口占用、服务监听状态,排查端口冲突、外网访问问题。
# 查看 TCP/UDP 监听端口、占用进程
# -t:TCP 端口 -u:UDP 端口 -l:仅监听端口 -n:纯数字端口 -p:显示进程
sudo ss -tulnp
输出解读示例:
LISTEN 0 128 0.0.0.0:22 0.0.0.0:* users:(("sshd",pid=789,fd=3))
-
含义:SSH 服务(sshd)监听 22 端口,
0\.0\.0\.0代表允许所有网络地址访问 -
补充:
127\.0\.0\.1:3306代表仅本机可访问,外网无法连接(数据库默认配置)
七、systemd 服务管理:后台服务管控
7.1 systemd 介绍
systemd 是现代 Linux 主流初始化系统,相当于服务器「服务管家」,核心能力:
-
系统开机时按顺序启动各类后台服务
-
运行中监控服务状态,支持异常自动重启
-
提供统一命令实现服务启动、停止、日志查看
主流发行版(Ubuntu、CentOS 7+、Debian)均默认使用 systemd。
7.2 systemctl — 服务管理核心命令
# 查看服务运行状态(是否启动、开机自启、PID、日志简要)
systemctl status nginx
# 启动服务
sudo systemctl start nginx
# 停止服务
sudo systemctl stop nginx
# 重启服务(先停止再启动,会断开现有连接)
sudo systemctl restart nginx
# 重载配置(不中断连接,仅加载新配置,优先使用)
sudo systemctl reload nginx
# 设置服务开机自启
sudo systemctl enable nginx
# 取消服务开机自启
sudo systemctl disable nginx
# 查看系统所有已加载的服务
systemctl list-units --type=service
说明:只有注册为 systemd 单元的程序(存放在
/etc/systemd/system/、/lib/systemd/system/)才能用systemctl管理,Nginx、MySQL、Docker 等常用服务均已内置配置。
7.3 journalctl — 查看服务日志
systemd 统一收集所有服务日志,使用 journalctl 查看:
# 查看 Nginx 完整运行日志
sudo journalctl -u nginx
# 实时跟踪 Nginx 日志(等同于 tail -f)
sudo journalctl -u nginx -f
# 仅查看今日 Nginx 日志
sudo journalctl -u nginx --since today
# 查看系统内核日志
journalctl -k
八、磁盘与日志:存储空间运维
8.1 磁盘与挂载
Linux 会将物理磁盘划分为多个分区,再把分区挂载到指定目录,目录即为分区的访问入口。
示例:
-
磁盘分区
/dev/sda1挂载到根目录/ -
磁盘分区
/dev/sda2挂载到/home
日常需要监控磁盘使用率,避免磁盘写满导致服务宕机。
8.2 df — 查看全局磁盘使用率
# -h:人性化单位展示(GB/MB),查看所有挂载分区空间
df -h
输出解读:展示每个分区总大小、已用空间、剩余空间、使用率、挂载目录。
8.3 du — 查看目录/文件占用空间
用于定位大文件、大目录,排查磁盘占用过高问题:
# 查看 /var/log 目录总占用大小
# -s:仅统计总和 -h:人性化单位
du -sh /var/log
# 排序查看 /var 下所有子目录大小,快速定位大文件夹
sudo du -sh /var/* | sort -h
8.4 系统日志说明
日志是应用/系统的运行记录,服务报错、异常排查优先查看日志。
常用日志路径(Ubuntu)
-
/var/log/syslog:系统综合日志 -
/var/log/nginx/access\.log:Nginx 访问请求日志 -
/var/log/nginx/error\.log:Nginx 错误日志 -
/var/log/mysql/error\.log:MySQL 数据库错误日志
日志查看常用组合
# 查看日志最后 50 行
tail -50 /var/log/syslog
# 实时跟踪日志输出
tail -f /var/log/syslog
# 筛选日志中的错误关键词
grep "ERROR" /var/log/nginx/error.log
8.5 logrotate 日志轮转
日志会持续增长,长期运行会占用大量磁盘空间。Linux 内置 logrotate 机制:
-
自动分割、压缩、归档旧日志
-
限制日志保留份数,避免磁盘被日志撑满
运维一般无需手动配置,了解其作用即可。
九、包管理:在线安装软件
9.1 包管理器介绍
包管理器是 Linux 的「软件商店」,可自动下载、安装、卸载软件,并自动解决软件依赖关系。
不同发行版工具不同:
-
Ubuntu / Debian:
apt -
CentOS / RHEL:
yum/dnf
9.2 apt 常用命令(Ubuntu 专属)
# 更新软件源索引(安装软件前建议先执行)
sudo apt update
# 升级系统所有已安装软件
sudo apt upgrade
# 搜索指定软件包
apt search nginx
# 查看软件包详细信息
apt show nginx
# 安装软件 -y:自动确认安装(无需手动交互)
sudo apt install -y nginx
# 卸载软件(保留配置文件)
sudo apt remove nginx
# 彻底卸载(删除软件 + 所有配置文件)
sudo apt purge nginx
# 自动清理无用的依赖包
sudo apt autoremove
十、综合实操练习(建议在 WSL/虚拟机/云服务器完成)
按照步骤依次操作,巩固所有知识点:
- 创建目录
~/devops_practice,并进入该目录
mkdir -p ~/devops_practice && cd ~/devops_practice
- 在目录内创建 3 个文件:
app.py、config.ini、README.md
touch app.py config.ini README.md
- 执行
ls -la查看文件权限,将config.ini权限改为 600
ls -la
chmod 600 config.ini
- 向
app.py写入内容print("Hello DevOps"),并查看内容
echo 'print("Hello DevOps")' > app.py
cat app.py
- 后台运行
sleep 300命令,查找 PID 并终止进程
sleep 300 &
ps aux | grep sleep
kill [对应PID]
- 查看服务器整体磁盘空间
df -h
- 实时跟踪系统日志(按
Ctrl + C退出)
tail -f /var/log/syslog
- 安装
htop并运行查看进程(按 F10 退出)
sudo apt install -y htop
htop
- 安装 Nginx,使用
systemctl查看服务状态
sudo apt install -y nginx
systemctl status nginx
文档小结
本章节覆盖 DevOps 实习生必备 Linux 核心能力,也是后续 Docker、Kubernetes 学习的基础:
-
文件系统:树形目录、绝对/相对路径、核心系统目录
-
文件操作:
pwd、ls、cd、mkdir、touch、cp、mv、rm -
内容查看与筛选:
cat、less、head、tail、grep -
权限管理:
chmod数字权限、chown -
用户管理:普通用户创建、
su切换、sudo提权 -
进程与端口:
ps、top、kill、ss -
服务管理:
systemctl、journalctl -
磁盘与日志:
df、du、日志查看、logrotate -
软件安装:
apt包管理工具
更多推荐
所有评论(0)