一篇让你从只会敲命令到理解为什么这么敲的 Linux 实操指南一、 软件包管理——Linux 世界的两个菜市场Linux 的软件管理说白了就是两大派系、两套工具链。搞懂它们你就掌握了安装、卸载、查软件的全部套路。 Rocky/CentOS —— RPM 派系红帽家族想象 RPM 是菜市场里卖散装菜的摊主——你直接跟他说我要个西红柿他递给你但不管这个西红柿跟别的菜搭不搭。这就是rpm命令只管装不管依赖。而yum/dnf呢它是一个智能采购助理。你说我要吃番茄炒蛋它会说好嘞我去把番茄、鸡蛋、油、盐全部配齐再一起给你送过来。——自动解决依赖关系省心太多。配置在哪/etc/yum.conf—— 助理的工作手册/etc/yum.repos.d/*.repo—— 供货商名单从哪里进货rpm 常用三板斧场景命令装包rpm -ivh 包名卸载rpm -evh 包名查包信息rpm -qi 包名看包装了啥文件rpm -ql 包名文件是谁家的rpm -qf /路径/文件yum/dnf 躺着用场景命令装yum install 包名卸yum remove 包名搜yum search 关键词看货架yum list全升级yum update打扫卫生yum autoremove Ubuntu/Debian —— DEB 派系Debian 家族这边儿的底层是dpkg相当于另外一个散装摊主同样不管依赖死活。高层是apt相当于隔壁摊位的智能助理——功能跟 yum 如出一辙就是命令名不一样。源配置/etc/apt/sources.list—— 主采购清单/etc/apt/sources.list.d/*.list—— 增补清单dpkg 常用命令干啥的dpkg -i 包.deb装本地 debdpkg -r 包名卸载留配置文件dpkg -S 文件名文件属于哪个包dpkg -L 包名包装了哪些文件dpkg -s 包名查看包状态apt 常用命令干啥的apt install 包名装apt purge 包名卸干净连配置一起删apt autoremove清理垃圾依赖apt update更新源列表索引重要装前先跑apt upgrade升级所有已装包apt list列出包口诀apt update是刷新菜单apt upgrade才是上菜。忘了update直接upgrade等于拿着旧菜单点菜大概率报错。二、⚙️ Systemd 服务管理——Linux 的总控台现代 LinuxCentOS 7 / Ubuntu 16.04的服务管理都统一归systemd管。你通过systemctl这个遥控器来操作它。服务文件放哪儿三个目录优先级从上到下递减/etc/systemd/system/ ← 用户自定义优先级最高 /lib/systemd/system/ ← 发行版自带 /usr/lib/systemd/system/ ← 软件包安装的你自己的服务文件永远放/etc/systemd/system/别去动系统目录。生命周期控制systemctl start/stop/restart 服务名 systemctl reload 服务名 ← 平滑重载不中断业务类比一下restart是把服务器关机再开机业务断一会儿reload是给跑步的人换了双鞋人不停。状态查看三连systemctl status nginx # 详细状态活没活、日志、PID systemctl is-active nginx # 只回答 active/inactive systemctl is-enabled nginx # 是否开机自启开机自启——快捷操作传统做法是两步走现在可以一步到位意图传统两刀快捷一刀启动自启startenablesystemctl enable --now nginx停止禁启stopdisablesystemctl disable --now nginx--now就是当前立即执行 以后开机也执行的合体技。⚠️ daemon-reload —— 改了配置别忘了这步这是新手最容易踩的坑。你手写了或修改了/etc/systemd/system/下的.service文件必须执行systemctl daemon-reload为什么因为 systemd启动时就把所有服务文件读到内存里了后面都是操作缓存。你不让它重新扫描它根本不知道你改了啥。你restart一百遍它跑的还是旧配置。类比你改了餐厅的菜单但只把新菜单贴在门口没告诉后厨。厨子还是按旧菜单做菜。daemon-reload就是冲进后厨喊一声菜单换啦三、 源码编译安装——从零件到整车包管理器装软件相当于买组装好的成品电脑。但源码编译呢是给你一堆零件和图纸自己焊主板、装系统。好处是灵活、可定制、装到指定位置坏处是……慢、麻烦、容易翻车。标准七步走第 1 步准备工具焊台烙铁# Ubuntu apt install build-essential ​ # Rocky yum groupinstall Development Tools没有 gcc/g 编译器后面寸步难行。第 2 步下载源码拿到零件包去官网下载.tar.gz或.tar.bz2压缩包。第 3 步解压进场tar -xzf nginx-1.24.tar.gz cd nginx-1.24/第 4 步配置看图纸画施工图——./configure./configure --prefix/usr/local/nginx这一步骤做三件事检查环境编译器在不在依赖库全不全接受参数--prefix...告诉它装到哪生成 Makefile这就是之后的施工图纸如果报错说缺某某库别慌用yum/apt install装好再回来重跑。第 5 步编译开始焊——makemake读取 Makefile调用 gcc 把源代码翻译成二进制可执行文件。这个过程可能比较漫长去泡杯茶 ☕。第 6 步安装搬到展厅——make install把编译好的二进制、配置文件、库文件按 Makefile 定义的路径复制到系统目录。装完去看看/usr/local/nginx/里面会有sbin/、conf/、html/等目录。第 7 步收尾让它好用源码装的软件默认不在 PATH 里直接敲nginx系统不认识你。有两种办法解决方法 A加到 PATHecho export PATH/usr/local/nginx/sbin:$PATH ~/.bashrc source ~/.bashrc现在敲nginx就能跑了。方法 B写 systemd 服务文件vim /etc/systemd/system/nginx.service把启动、停止、重载命令写进去然后systemctl daemon-reload # ← 告诉 systemd 有新服务来了 systemctl enable --now nginx这样就能用systemctl统一管理了一劳永逸。四、 Shell 编程——自动化运维的脚本语言Shell 脚本就是把一串 Linux 命令写进文件批量执行。运维的精髓就在这儿——能自动化就别手动敲。1. 执行方式/bin/bash 脚本路径.sh不需要给执行权限也能跑灵活。2. 变量三兄弟 本地变量namezhangsan # 无引号 name$PATH hello # 单引号原样输出 $PATH hello不解析 name$PATH hello # 双引号解析变量输出 /usr/bin:... hello口诀单引号是铁公鸡什么变量都不认双引号是老实人见了$就翻译。 命令变量命令替换# 旧式不推荐不能嵌套 timedate %H:%M:%S # 新式推荐能嵌套 now$(date %H:%M:%S) files$(ls -la $(pwd)) 全局变量环境变量export JAVA_HOME/usr/local/jdk子进程也能看到这个变量。3. 取消变量unset name4. ⭐ 内置特殊变量关键时刻救命变量含义场景$0脚本本身的文件名打印帮助信息$1,$2...传给脚本的第 N 个参数传参执行$#参数总个数检查用户给的参数够不够$?上条命令的退出码0成功非0失败判断上一步是否成功${file:0:5}字符串切片取第0到第4位截取文件名/路径${#file}字符串长度校验输入长度经典用法 —— 参数校验#!/bin/bash if [ $# -lt 1 ]; then echo 用法$0 包名 exit 1 fi yum install -y $1 if [ $? -eq 0 ]; then echo ✅ 安装成功 else echo ❌ 安装失败 fi 总结——一张图串起来┌──────────────┬──────────────────┬────────────────────┐ │ 领域 │ 底层工具 │ 高层工具 │ ├──────────────┼──────────────────┼────────────────────┤ │ 包管理(RPM) │ rpm │ yum/dnf │ │ 包管理(DEB) │ dpkg │ apt │ │ 服务管理 │ systemd 守护进程 │ systemctl │ │ 编译安装 │ gcc/make │ ./configuremake │ │ 脚本自动化 │ bash 解释器 │ 你写的 .sh 文件 │ └──────────────┴──────────────────┴────────────────────┘运维老鸟的日常 ≈yum installsystemctl写点shell脚本这三板斧练熟了绝大部分日常任务都能搞定