零基础Linux运维实战:从虚拟机搭建到Shell脚本自动化 如果你打算进入运维行业或者在 2026 年想给自己补一门后端工程师的底层技能Linux 命令这一关是绕不过去的。这篇教程不给你讲一堆抽象概念而是直接走一条完整路径先在你自己的电脑上把虚拟机装好再把 Linux 系统部署起来接着从最常用的命令开始一个个敲最后落到服务部署和 Shell 脚本批量处理上。整套内容不需要你有一台真实的服务器不需要花钱买云主机一台普通的 Windows 或 macOS 电脑就能完成。硬件门槛很低重点是内存要够用8GB 内存可以跑16GB 内存会更舒服。如果你之前从来没有接触过 Linux甚至不知道ls、cd、grep长什么样这篇教程就是按零基础标准设计的。正文会分成十个部分从“教程内容速览”到“环境准备”再到“虚拟机安装”“系统初始化”“命令实战”“服务部署”“脚本自动化”以及“故障排查”。每一段都包含可以直接上手的命令、操作步骤和判断标准。跟着操作完你会发现 Linux 运维没有想象中那么神秘它是一套完全可以靠练习掌握的手艺。1. 教程内容速览先看这张表明确这次教程覆盖哪些内容以及学完之后你能得到什么。能力项说明学习目标掌握从零搭建 Linux 学习环境、常用命令、服务部署和脚本自动化虚拟化软件VMware Workstation / VirtualBox二选一即可操作系统镜像Ubuntu Server LTS / Rocky Linux / Debian推荐 LTS 版本硬件要求8GB 内存起步16GB 更稳CPU 支持并开启虚拟化磁盘剩余 80GB 左右核心技能Linux 文件操作、用户权限、进程网络、systemd 服务管理、Shell 脚本、cron 定时任务实操产出一台本地 Linux 虚拟机、一个 Nginx Web 服务、一个可执行的批量脚本是否需要真实服务器不需要是否支持批量任务支持通过 Shell 脚本实现批量用户创建、文件批量处理等适合人群零基础转行运维、后端开发补技能、计算机专业学生需要注意的是文中涉及的具体命令在主流 Linux 发行版上基本通用。不同发行版的包管理命令略有差异例如 Ubuntu/Debian 用aptRocky Linux/CentOS 用dnf文中会分别说明。版本号建议选择长期支持版本避免使用过于激进的新版本。2. 适用场景与学习边界这套 Linux 运维教程适合三类人第一类是准备进入运维岗位的应届生或转行者需要一份够扎实的实操经验第二类是后端开发、测试工程师日常要跟服务器打交道补一补命令基础第三类是计算机专业学生上课学了理论、但还没在真实环境里敲过命令。它能解决的实际问题包括在自己电脑上搭建一套不破坏宿主机环境的 Linux 学习环境掌握运维面试中最常问的文件操作、权限管理、进程查看、日志分析命令学会部署一个真实的 Web 服务并查看运行状态用脚本批量完成重复性工作比如批量创建用户、批量打包日志、定时备份文件。同时也需要说清楚边界。这套教程不覆盖云平台运维比如阿里云、腾讯云上的产品操作不深入内核参数调优、SELinux 复杂策略编写、大规模集群管理也不涉及容器化编排。这些属于进阶内容先把本地虚拟机里的基础命令和服务部署吃透再往这些方向扩展会更顺利。使用边界方面所有操作都建议在本地虚拟机中完成不要在生产环境毫无准备地执行高危险命令比如rm -rf、强制重装软件包、随意修改系统关键配置。如果后续工作中需要操作真实服务器要遵循公司的变更流程和合规要求。3. 环境准备与前置条件开始安装之前先检查三件事CPU 虚拟化是否开启、内存是否充足、磁盘剩余空间是否够用。CPU 虚拟化检查方式按系统区分。Windows 系统打开任务管理器切换到“性能”选项卡看 CPU 部分是否显示“虚拟化: 已启用”。如果显示未启用需要进 BIOS/UEFI 开启 Intel VT-x 或 AMD-V。macOS 的 Intel 芯片机型一般默认开启Apple Silicon 机型使用虚拟机软件时会自动走虚拟化框架不需要额外设置。内存方面建议 8GB 起步。虚拟机分配 4GB宿主机剩余 4GB日常操作会比较紧张但能跑。16GB 内存体验会明显改善虚拟机可以分到 8GB。磁盘方面虚拟机磁盘文件至少预留 60GB建议预留 80GB避免后期安装软件、日志增长导致空间不足。接下来选择虚拟机软件。目前主流是两台软件优点缺点建议VMware Workstation Pro性能好、硬件兼容性强、网络模式清晰商用收费个人学习需要确认授权范围入门首选VirtualBox开源免费、跨平台、轻量3D 性能较弱、部分版本对高版本 Windows 有兼容问题预算敏感用户虚拟机软件的安装过程比较常规下载安装包后双击运行一路下一步即可。安装完成后先不要急着创建虚拟机先去下载一个 Linux 系统镜像。镜像下载建议选择长期支持版本Ubuntu Server LTS适合新手资料多遇到问题容易搜索到答案Rocky Linux 9.xCentOS 停止维护后的主流替代之一企业运维岗位常用Debian稳定、轻量适合喜欢极简风格的人下载时注意选择 ISO 文件不要下载成 torrent 或压缩包。Ubuntu 镜像从官方源或授权镜像站下载Rocky Linux 同理。下载完成后先校验一下文件完整性Linux 官方页面都提供了 SHA256 校验值Windows 下可以用certutil或 PowerShell 校验macOS 下用shasum -a 256。到这里环境准备完成。准备的清单是虚拟机软件、Linux ISO 镜像、足够的磁盘空间、开启虚拟化的 CPU。4. 安装虚拟机并创建 Linux 环境这一节以 VirtualBox 和 VMware 两个软件为例分别说明创建流程。核心步骤类似差异在界面名称和引导方式。4.1 使用 VirtualBox 创建虚拟机打开 VirtualBox单击“新建”。填写虚拟机名称类型选择 Linux版本根据镜像选择对应的 64 位系统。内存分配到 4096MB 或更高。硬盘选择“现在创建虚拟硬盘”文件类型选 VDI大小建议 60GB 以上存储方式选“动态分配”这样虚拟机里的系统实际用多少宿主机磁盘就占多少不会一次性占满。创建完成后在虚拟机设置里做三处调整系统 - 处理器分配 2 核或 4 核存储在光驱位置挂载之前下载的 ISO 文件网络默认 NAT 模式即可不影响后续安装和上网调整完成后启动虚拟机进入引导界面后选择“Install Ubuntu Server”或对应的系统安装选项。4.2 使用 VMware Workstation 创建虚拟机VMware 的流程更向导化。打开软件选择“创建新的虚拟机”选择“自定义”操作系统选择“Linux”版本选择对应的发行版 64 位。虚拟机名称和存储位置按习惯设置。处理器配置建议 2 核内存 4096MB网络类型选择 NAT。磁盘创建时选择“拆分成多个文件”容量同样给到 60GB 以上。创建完成后在虚拟机设置里双击 CD/DVD 选项选择“使用 ISO 映像文件”指向下载好的镜像。启动虚拟机开始系统安装。4.3 Linux 系统安装关键步骤不同发行版的安装界面有差异但核心流程一致语言选择保持默认英文即可。如果选中文后续部分目录和提示会变成中文反而给学习带来一些困扰。建议英文界面 中文学习资料配合。网络配置安装器一般会自动通过 DHCP 获取 IP。确保网络连接成功否则后面更新软件源会失败。磁盘分区新手推荐选择“使用整个磁盘”并开启 LVM系统自动完成分区不需要手动调整。如果手动分区建议分三块/boot分配 1GBswap分配内存同等大小或 2GB 左右剩余空间全部给/。用户名和主机名创建一个普通用户设置密码。主机名建议设置得短一点方便记忆例如linux01。软件选择如果使用 Ubuntu Server在安装过程中可以选择是否安装 OpenSSH server这里建议直接勾选后续远程登录会用到。如果不勾选系统装完后再通过apt install openssh-server安装。安装完成后系统会提示移除安装介质重启虚拟机。重启后输入用户名密码登录看到命令行提示符说明系统安装成功。5. 系统初始化与基础配置系统装好只是开始运维工作里第一时间要做的是把系统调成方便使用的状态。以下几步是通用操作。5.1 更新软件源登录系统后先更新包管理器的索引和已有软件包。Ubuntu/Debiansudo apt update sudo apt upgrade -yRocky Linux/CentOSsudo dnf check-update sudo dnf update -y这一步耗时取决于网络速度完成之后保证系统处于最新状态避免后续安装软件时出现依赖版本问题。5.2 设置主机名主机名是运维中最容易忽略但很重要的信息。后端服务器、数据库服务器、缓存服务器互相之间要能区分靠的就是主机名。sudo hostnamectl set-hostname linux01修改后重新登录终端提示符会显示新的主机名。5.3 配置静态 IP虚拟机默认通过 DHCP 获取 IP优点是插上就能上网缺点是重启后 IP 可能变化。学习阶段建议改成静态 IP后面练 SSH、部署服务时会省去很多麻烦。不同系统的配置方式不同。Ubuntu 22.04 之后的版本使用 netplan配置文件在/etc/netplan/目录下sudo vi /etc/netplan/01-network-manager-all.yaml参考配置如下network: version: 2 ethernets: enp0s3: dhcp4: no addresses: - 192.168.56.101/24 routes: - to: default via: 192.168.56.1 nameservers: addresses: [223.5.5.5, 8.8.8.8]网卡名称可能不同先用ip addr查看实际网卡名。应用配置sudo netplan applyRocky Linux 使用 NetworkManager推荐用nmcli工具nmcli con mod 系统连接名称 ipv4.addresses 192.168.56.101/24 ipv4.gateway 192.168.56.1 ipv4.dns 223.5.5.5 8.8.8.8 ipv4.method manual nmcli con up 系统连接名称配置完成后用ip addr确认 IP 已生效。5.4 启用 SSH 远程登录虚拟机的终端直接操作没问题但实际运维场景通常是远程登录服务器。先把 SSH 服务确认启动。Ubuntu/Debiansudo apt install openssh-server -y sudo systemctl enable --now sshRocky Linuxsudo dnf install openssh-server -y sudo systemctl enable --now sshd检查监听状态sudo ss -tlnp | grep 22看到 0.0.0.0:22 或 :::22 的监听记录说明 SSH 服务正常。以后可以在宿主机上用终端工具远程连接这台虚拟机操作体验和真实服务器一致。6. Linux 基础命令实战这一节是整篇教程的核心。命令看起来多但不需要死记硬背多用几次自然就记住了。下面按运维日常工作场景分组说明。6.1 目录与文件操作进入系统后第一件事是搞清楚自己当前在哪个目录pwd查看目录内容ls -l ls -a切换目录cd /etc cd ~ cd -创建目录mkdir -p /data/logs/web创建空文件touch /data/test.txt复制和移动cp -r /data/test.txt /tmp/ mv /data/test.txt /data/logs/web/删除文件时格外小心rm -f /data/logs/web/test.txt这里强烈建议养成一个好习惯删除前先用ls确认路径再执行删除。日常的教训大多来自路径写错或变量为空导致误删。查看文件内容的几个命令cat /etc/os-release查看大文件时用less不要用cat直接输出否则终端会被刷屏less /var/log/syslog查看文件末尾内容并持续跟踪tail -f /var/log/syslog6.2 用户与权限管理运维工作中创建用户、切换用户、修改权限是高频操作。Linux 是多用户系统权限设计决定了系统的安全性。创建用户sudo useradd -m -s /bin/bash zhangsan sudo passwd zhangsan-m表示创建家目录-s指定默认 Shell。删除用户sudo userdel -r zhangsan权限修改第一优先级命令是chmod。用数字方式理解权限r 代表读值 4w 代表写值 2x 代表执行值 1。chmod 755 script.sh chmod 644 config.conf修改文件属主sudo chown root:root /data/test.txt查看当前用户身份whoami id6.3 进程与系统状态查看系统负载和进程占用top按q退出。更直观的方式是使用htop但需要安装sudo apt install htop -y查看指定进程ps aux | grep nginx结束进程kill PID kill -9 PIDkill -9是强制结束不要在正常业务中滥用优先使用普通kill等待进程优雅退出。查看内存使用free -h查看磁盘空间df -hT6.4 网络排查命令网络问题是运维日常值班的高发问题以下命令建议熟练到条件反射级别。查看 IP 地址ip addr查看端口监听ss -tlnp测试主机连通性ping -c 4 223.5.5.5测试端口连通性telnet 192.168.56.101 22curl 是运维调试接口的利器curl -I http://127.0.0.1 curl -v http://127.0.0.1/api/health抓包分析流量可以使用 tcpdump这里暂不展开。6.5 搜索与文本处理每天处理最多的都是日志和配置文件把下面这些命令练熟效率会明显提高。在文件内容中搜索关键词grep ERROR /var/log/syslog递归搜索目录下所有文件grep -r listen 80 /etc/nginx/批量替换文件内容sed -i s/old_port/8080/g /etc/nginx/nginx.conf提取文本列awk {print $1, $2} access.log排序与去重sort access.log | uniq -c | sort -nr查找文件所在位置find /data -name *.log -type f6.6 压缩打包日志备份、代码发布都离不开打包。tar -czvf backup.tar.gz /data/logs tar -xzvf backup.tar.gz解压到指定目录tar -xzvf backup.tar.gz -C /tmp/到这里你已经掌握了运维命令的八成常用量。剩下的主要是结合场景反复练习。7. 服务部署实战以 Nginx 为例命令学完必须落到一个真实服务上否则下一步很难推进。这里以 Nginx 为例完成从安装、启动、配置静态站点到查看日志的完整流程。7.1 安装 NginxUbuntu/Debiansudo apt install nginx -yRocky Linuxsudo dnf install nginx -y7.2 启动与设置开机自启sudo systemctl start nginx sudo systemctl enable nginx sudo systemctl status nginxsystemctl status输出中看到active (running)字样说明服务正常。浏览器打开http://127.0.0.1看到 Nginx 默认欢迎页部署成功。7.3 部署一个自定义站点Nginx 的配置目录一般在/etc/nginx/sites-available/和/etc/nginx/conf.d/。创建一个站点配置文件sudo vi /etc/nginx/conf.d/web01.conf参考配置server { listen 8080; server_name web01.local; root /var/www/web01; index index.html; access_log /var/log/nginx/web01_access.log; error_log /var/log/nginx/web01_error.log; }创建站点目录和测试页面sudo mkdir -p /var/www/web01 echo h1Linux 运维实战部署成功/h1 | sudo tee /var/www/web01/index.html重载 Nginx 配置sudo nginx -t sudo systemctl reload nginx通过curl验证curl http://127.0.0.1:8080如果能输出 HTML 内容说明这个站点已经独立跑起来了。这里推荐自己做一个简单页面显示服务器当前状态调用uname和uptime的输出后面沙龙分享时会很有用。7.4 日志查看与分析Web 服务的流量和状态都记录在日志中。访问日志查看tail -f /var/log/nginx/web01_access.log错误日志查看tail -f /var/log/nginx/web01_error.log这段操作完成之后你已经亲手实现了“系统部署 - 服务安装 - 配置修改 - 验证运行 - 日志分析”这个完整闭环。这个流程是所有运维工作的通用套路。8. Shell 脚本与批量化操作单条命令解决了单个问题但运维工作中大量任务是重复性的。比如每天早上要压缩前一天日志每周要备份配置目录每季度要巡检所有虚拟机。这种场景就需要 Shell 脚本。8.1 脚本基础结构Shell 脚本本质是把多条命令按顺序组织在一个文件里再给它执行权限。用#!/bin/bash开头声明解释器#!/bin/bash echo 开始备份... mkdir -p /backup/$(date %F) tar -czvf /backup/$(date %F)/logs.tar.gz /var/log/nginx echo 备份完成8.2 变量与条件判断#!/bin/bash LOG_DIR/data/logs BACKUP_DIR/backup/$(date %F) if [ ! -d $BACKUP_DIR ]; then mkdir -p $BACKUP_DIR fi tar -czvf $BACKUP_DIR/app_$(date %H%M).tar.gz $LOG_DIR8.3 循环批量创建用户运维入职最常见的脚本练习就是批量创建用户。下面这个脚本读取users.txt里的用户列表逐个创建#!/bin/bash USER_LIST/tmp/users.txt while read username; do if id $username /dev/null; then echo 用户 $username 已存在跳过 else sudo useradd -m -s /bin/bash $username echo $username:123456 | sudo chpasswd echo 用户 $username 创建完成 fi done $USER_LIST调用方式echo -e zhangsan\nlisi\nwangwu /tmp/users.txt bash /tmp/create_users.sh8.4 定时任务脚本写好后需要按计划执行这就用到 cron。编辑 crontabcrontab -e常用时间格式说明表达式含义0 2 * * *每天凌晨 2 点*/10 * * * *每 10 分钟一次0 3 * * 1每周一凌晨 3 点0 1 1 * *每月 1 日凌晨 1 点示例每天凌晨 2 点执行备份脚本日志写入/var/log/backup.log0 2 * * * /bin/bash /opt/scripts/backup.sh /var/log/backup.log 21查看已有定时任务crontab -l删除全部定时任务需要谨慎操作crontab -r到这里你已经具备了用脚本把重复劳动自动化的能力。这个能力在后续工作和岗位晋升中很加分。9. 性能观察与故障排查实际工作中Linux 故障排查的核心不是背命令而是建立一套排查顺序先看状态再查日志最后定位解决方案。这一节给出最常用的排查步骤。9.1 CPU 和负载排查使用top或uptime查看系统平均负载uptime输出中load average三个数值分别代表 1 分钟、5 分钟、15 分钟的平均负载。如果三个值都很高说明系统一直处于忙碌状态。查看每个核心的占用mpstat -P ALL 19.2 内存排查free -h重点看available列它代表当前还能分配给新应用的内存。used过高不代表系统一定有问题因为 Linux 会尽量利用空闲内存做缓存内存不足时再看si、so交换分区的读写情况。vmstat 19.3 磁盘排查df -hT如果某个分区使用率超过 80%需要分析占用来源du -sh /var/log /home /data 2/dev/null | sort -rh查找大文件find /data -type f -size 500M -exec ls -lh {} \;9.4 日志排查查看系统最近日志journalctl -xe查看某个服务的完整日志journalctl -u nginx --since 1 hour ago查看内核相关的报错dmesg | tail -n 509.5 常见问题排查表问题现象可能原因排查方式解决方案虚拟机无法启动CPU 虚拟化未开启检查任务管理器/系统信息BIOS 开启 VT-x/AMD-V虚拟机启动后没有 IPDHCP 未分配ip addr查看网卡切换到 NAT 模式或配置静态 IPSSH 连接超时SSH 服务未启或防火墙拦截systemctl status ssh、ss -tlnp | grep 22systemctl enable --now sshapt update很慢默认源访问慢查看源配置换用国内镜像源服务端口被占用其他进程占用端口ss -tlnp | grep 8080修改服务端口或结束占用进程磁盘空间告警日志增长过快df -hT、du -sh清理旧日志并配置日志轮转命令找不到软件包未安装which 命令apt install 软件包或dnf install 软件包rm -f误删文件未备份无只能接受教训实际操作前确认路径养成备份习惯10. 最佳实践与学习建议教程最后给出一些工程化经验这些经验比单个命令更值得收藏。10.1 第一台虚拟机建议的最小配置不要在一开始追求复杂的生产级架构。记住一个原则先追求“跑起来”再追求“规范化”。建议按以下顺序执行系统安装完成更新源。配置静态 IP 和主机名。确认 SSH 可以远程登录。安装 Nginx部署第一个页面。写一个简单备份脚本设置 cron 自动执行。测试一次从宿主机远程登录、检查服务、查看日志的完整闭环。每一步做完就记录笔记。不需要复杂的文档工具一个 Markdown 文件足够。10.2 目录管理规范以后接触真实服务器时目录结构会直接影响可维护性。建议从现在开始培养习惯脚本统一放在/opt/scripts/日志统一输出到/var/log/备份数据单独挂载到/backup/应用数据放在/data/这个习惯可以避免后期出现“脚本到处都是、日志找半天”的混乱状态。10.3 安全底线本文所有实验都在本地虚拟机中进行。如果后续操作真实服务器至少要遵守以下安全底线不要使用 root 账号直接业务操作使用普通用户加sudoSSH 建议关闭密码登录改用密钥认证不部署任何来历不明的脚本不执行不看内容的远程脚本涉及个人信息、客户数据、生产环境的操作必须遵守公司的合规审批流程定期备份重要配置和数据备份完成后验证备份文件能恢复而不是备份后就丢在一边10.4 后续进阶方向本地虚拟机这套环境跑熟之后可以按下面几条线继续扩展容器化方向学习 Docker 基础操作把 Nginx 换成容器部署自动化方向学习 Ansible用一台控制机管理多台虚拟机监控方向部署 Prometheus Grafana给虚拟机加监控告警脚本方向深入研究 Bash 脚本把更多日常操作写成工具真正上手快的人通常都有一个共同习惯拿到一台新机器先把网络、SSH、包管理源、主机名搞定然后立刻部署一个真实小服务。用这种最小闭环的方式练两三台虚拟机Linux 运维操作的底子就打牢了。下一篇会继续拆 Docker 容器化部署和 Ansible 批量管理建议先把本文的 Nginx 和脚本练习做完再往前推进。