ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

2019年Linux运维变天:从敲命令到管平台的核心技能重构

2019年Linux运维变天:从敲命令到管平台的核心技能重构 2019年开年运维圈子里明显弥漫着一种焦虑感。Linux运维这个岗位过去凭一套熟得不能再熟的常用命令加上会装系统、会配网络、会写几段Shell脚本就能稳稳当当吃十年饭。但2019年这一年风向真的变了云主机成了默认选项容器化从新鲜词变成了日常工作连办公用的Linux桌面终端都开始出现在企业环境里。如果你还抱着linux命令大全啃觉得“运维就是敲命令”那我劝你早点醒醒别等到被行业甩开再后悔。这篇东西写给所有还在做Linux运维、或者正打算入行的人。我会从行业变化、技能重构、实战场景、面试新方向这几个角度把2019年前后Linux运维到底在“变什么天”拆开讲清楚也会把当时被验证过的实操经验一并放出来。无论你是刚学会ls和cd的萌新还是已经带团队的老运维这篇文章都值得你花十几分钟认真看一遍。1. 变天信号2019年Linux运维行业到底在变什么1.1 运维对象不再是“一台裸机”这么简单我印象特别深2015年前后大家聊运维说的还是“我管了多少台物理机”“哪个机房又断电了”。到了2019年情况完全不一样了。你打开热搜词看排在前面的已经是“虚拟机安装linux系统”“云计算运维”“自动化运维”——物理机当然还存在但你日常打交道的对象更多是云上的虚拟服务器、容器里的应用实例还有那些生命周期只有几分钟的临时环境。这意味着什么意味着你以前那套“一台机器坏了登录上去敲命令修”的运维模式正在被“把环境当成代码来管”“让系统自己恢复”的模式取代。我曾经管过一批云主机刚开始还是沿用物理机时代的习惯每台机器手动装Agent、手动改配置结果几十台机器就让我连续加班了两周。后面我咬牙把初始化流程写成了自动化脚本同样的工作变成了十分钟内完成而且是批量完成。2019年这个节点所有还在“手动挡”的运维都被逼着往“自动挡”转型。1.2 Linux的边界从服务器扩展到了桌面和终端另外一个特别明显的信号是Linux不再只是服务器上的操作系统了。“桌面运维”“企业微信linux”“希沃白板linux版”“linux国产”这些关键词频繁出现说明办公场景里也开始大量出现Linux终端。以前我们运维人最瞧不上的就是“帮人装系统”“给领导修电脑”这类桌面运维但在2019年前后桌面Linux生态起来了办公终端批量替换成Linux系统这时候懂Linux桌面环境、会处理办公软件适配问题的运维反而成了稀缺资源。我不止一次遇到这种场景一个单位批量部署了Linux办公终端结果打印机驱动不识别、办公套件打开旧文档格式错乱、视频会议软件没有Linux版这些问题全部压到运维头上。你看风口不在“服务器”而是在“桌面终端”。对这一类问题我当时的处理经验是优先用系统自带的软件中心统一分发适配版本不要一个个去官网下载对没有原生Linux版的软件先看Web版能否覆盖需求再用Wine或虚拟机兜底。这套经验在后来很长一段时间都非常管用。1.3 自动化工具从“加分项”变成“必选项”热搜词里“自动化运维”和“系统运维工具sot”“网络运维工具箱v8.4”几乎成了标配。过去会写个for循环批量执行命令已经算自动化了但2019年大家聊的自动化是配置管理、批量部署、持续交付这一整套链路。比如新到一批机器你要装Python、装JDK、配环境变量纯手工操作一台要十分钟一百台就是一千分钟。用自动化工具来跑一个Playbook下去所有机器同时装好过程可回放、结果可审计这才是“自动化运维”该有的样子。这里我特别想强调别把自动化理解成“写脚本代替手敲命令”。真正的自动化运维是把机器从“宠物”变成“牲口”——宠物生病了你会带它去看病牲口生病了直接换一头。这个理念转变是2019年这场“变天”的核心。所以2019年的“变天”本质上是三件事第一运维的边界从服务器扩展到了桌面和办公终端第二运维的方式从手动操作转向了自动化、平台化第三对运维人的要求从“命令熟手”变成了“能写代码、能管平台、能处理复杂故障”的复合型工程师。2. 新常态下的核心技能拆解从“敲命令”到“管平台”2.1 命令还是基础但光有命令远远不够我知道很多新人一上来就背“linux常用命令大全”这没错命令确实是Linux运维的底层基本功。但2019年之后你要是只会命令是站不住脚的。为什么因为现在大量操作都有平台界面和自动化工具替代了比如创建云主机、挂载磁盘、配置负载均衡很多都能在控制台上点鼠标完成。你背得再熟的命令在图形界面时代发挥不了太大价值。那命令还要不要学要而且要学得更深。我建议把重点放在这几类文本处理三兄弟grep、awk、sed。日志分析、配置批量替换都靠它们。网络排查三件套ping、telnet、tcpdump。连不上、响应慢、被防火墙拦全都要靠它们定位。性能分析四板斧top或htop、iostat、free、vmstat。系统慢到底慢在CPU、内存还是磁盘一查便知。文件与磁盘管理df、du、lsblk、fdisk、mount。尤其是磁盘满了、分区不对这些命令是救命稻草。进程与服务管理systemctl、ps、kill、ss。排查服务异常这些是基本操作。我见过很多新人把ls、cd、cat这些命令背得滚瓜烂熟以为这就是“会Linux”。真正到了排查线上故障的时候连ss -lntp和ps -ef配合起来看端口和进程都做不到。命令是工具不是目的。会用工具把问题解决掉才是值钱的能力。2.2 脚本和代码能力运维的“第二母语”2019年前后运维圈有个明显的分水岭会写脚本的运维和只会敲命令的运维薪资差距开始拉大。这里的脚本不只是Shell还包括Python。你可能觉得“我是运维为什么要学Python”原因很简单现在Linux生态里大量自动化工具、监控系统、发布平台都是用Python写的。你懂Python就能看懂工具在干什么才能改得动、扩得下去。我记得有个典型场景热搜词里有人搜“linux系统安装python”说明很多运维都在从头搭Python环境。这里我给出一个在2019年反复验证过的安装流程# 安装编译依赖 yum install -y gcc gcc-c make zlib-devel bzip2-devel openssl-devel libffi-devel # 下载并编译安装Python以3.7版本为例 wget https://www.python.org/ftp/python/3.7.12/Python-3.7.12.tgz tar xzf Python-3.7.12.tgz cd Python-3.7.12 ./configure --prefix/usr/local/python3 make make install # 软链接到PATH并验证 ln -s /usr/local/python3/bin/python3 /usr/bin/python3 ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3 python3 -V注意一个坑千万不要把系统自带的/usr/bin/python替换掉很多系统组件依赖它。你新的Python统一用python3指向老的环境保持原样两边互不干扰。这个教训我是在把系统Python升级导致yum直接罢工之后才深刻体会到的那次我用了LiveCD进去才救回来过程极其狼狈。有了Python之后你就可以做很多事了批量巡检机器、定时检查磁盘空间、自动清理日志、对接监控平台API。这些东西才是2019年之后运维每天的日常。# 一个简单的批量磁盘巡检脚本范例 for host in $(cat hosts.txt); do echo $host ssh $host df -h | grep -E ^/dev/ done2.3 桌面Linux运维被很多人忽略的增量市场开头提到“桌面运维”“希沃白板linux版”“企业微信linux”这些词集中出现代表Linux桌面端开始批量进入办公环境。这个方向很多老运维是抵触的觉得“那是网管干的活”但我不这么看。运维的本质是什么是保证业务系统稳定运行。当业务系统跑在Linux桌面上时桌面Linux运维就是正儿八经的运维工作而且市场供需很不对等——会搞服务器的人多会搞桌面Linux适配、调优、排错的人少。这里面的技术点也很具体字体渲染、输入法框架fcitx/ibus、打印机驱动CUPS、办公软件兼容、AD/LDAP域认证、软件统一分发。随便哪一个拿出来都可以钻研很久。举个实际案例单位里同时要维护几百台Linux办公终端如果一台台手工装软件运维人员根本忙不过来。我当时的做法是搭建一个本地软件源服务器把所有常用软件包同步到内网终端统一配置源地址批量安装升级一键完成。这个过程利用了Linux包管理的核心机制——仓库源网上那些“linux安装jdk”的教程大多教你下载tar包解压但在企业环境里更规范的做法是把JDK打进本地源里用包管理器统一管理。运维要想省心就得把“一次性安装”变成“平台化管理”。2.4 安全与内核方向硬核技能开始吃香热搜词里有两个特别硬核的“linux 透明加密”和“linux 内核 动态加载 file_operations 拦截 read write”。这说明2019年前后企业对Linux环境的安全管控需求明显上升。一个是文件加密审计防止数据通过U盘、网络外泄一个是内核层面对文件读写的拦截审计多用于DLP数据防泄漏类产品。作为运维你不一定需要亲手写内核模块但至少要理解这些技术的基本原理才能在系统出现兼容性问题时快速定位。我举个例子透明加密类软件经常会让运维头疼某个目录下的文件在客户端看起来是明文但通过FTP或Samba服务读取时就变成乱码用户打电话来投诉“文件损坏了”。如果你不理解“透明加密”是怎么回事你可能会在磁盘、文件系统上排查半天最后发现是加密Agent在系统调用层做了手脚。这是典型的“要懂原理才能排障”的场景。至于file_operations拦截简单说就是Linux内核对文件的操作读、写、打开都通过一个叫file_operations的结构体来分发安全软件可以通过动态修改这个结构体里的函数指针实现对文件读写的监控和拦截。它的应用场景主要是安全审计、防泄漏、防勒索。做运维的知道这个方向存在并且能在系统加固讨论中接上话就已经超过很多人了。当然如果想要更深入可以去研究Linux内核模块开发和LSMLinux Security Module机制。3. 五个绕不开的实战场景与具体解法3.1 虚拟机里装Linux新手的第一课老手的日常“虚拟机安装linux系统”在热搜词里排得很靠前说明这是大量人入门的第一个动作。别小看这件事虚拟机环境里装Linux虽然和物理机安装大体一致但有几个细节会反复坑人。我以VirtualBox为例给出一套稳妥的流程新建虚拟机类型选Linux版本按你要装的发行版选比如CentOS 7 64-bit。内存建议给2GB以上硬盘建议20GB以上显存要开大一点不然图形界面会卡。存储设置里把虚拟硬盘类型选为VDI动态分配。挂载ISO镜像启动后按安装向导执行。分区建议/boot给500MB/给剩余全部空间swap按内存大小给。新手不要折腾LVM等熟悉了再玩。安装过程中网络选NAT模式装完系统后再改成桥接模式这样虚拟机既能上网也能被局域网内其他机器访问。有一个常见问题很多人在虚拟机里装完Linux分辨率特别低窗口也很小。这是因为没装增强功能Guest Additions。安装方法是在VirtualBox菜单栏选择“设备—安装增强功能”然后在Linux里执行挂载和安装mount /dev/cdrom /mnt cd /mnt ./VBoxLinuxAdditions.run装完重启分辨率就对了。这个小步骤能让新手少走两个小时的弯路。3.2 linux解压文件乱码编码惹的祸“linux 解压文件乱码”是高频搜索词。你在Windows上用压缩软件压缩的中文文件名到了Linux下用unzip解压经常变成乱码。原因很简单——Windows下文件名编码是GBKLinux下默认是UTF-8两边对不上就显示成乱码了。解决办法我用过很多种最简单直接的是用支持指定编码的unzip版本# 以GBK编码解压zip文件 unzip -O GBK 文件名.zip但是注意-O参数不是所有unzip都支持。如果提示不支持可以用Python的zipfile模块处理# filename为要解压的zip包 import zipfile import os with zipfile.ZipFile(文件名.zip) as f: for name in f.namelist(): # 尝试用GBK解码文件名 try: newname name.encode(cp437).decode(gbk) except UnicodeDecodeError: newname name # 创建目录并解压 os.makedirs(os.path.dirname(newname) or ., exist_okTrue) with f.open(name) as src, open(newname, wb) as dst: dst.write(src.read())这段脚本的核心思路是先把文件名按错误的编码cp437还原成原始字节再按正确的GBK编码解码。实际使用时如果你在Linux端用unzip解压之后直接复制到Windows下看文件名正常但在Linux下是乱码也可以用convmv这个工具来批量转换convmv -f gbk -t utf-8 --notest -r /path/to/directory对了再补充一个避坑建议以后在Windows上压缩文件传给Linux或者Linux上传给Windows尽量用7z格式并把文件名设置为UTF-8可以避免大量编码问题。3.3 linux中配置DNS出现的问题比想象中更复杂的“小问题”“linux中配置dns出现的问题”也是一个高频痛点。很多人以为改DNS就是编辑/etc/resolv.conf结果重启之后发现配置被覆盖了然后就开始抓狂。这个坑的背景是现代Linux发行版引入了systemd-resolved和NetworkManager它们会自动管理DNS配置。我来梳理一下常见的三类DNS故障和对应的处理方法第一类手动改了/etc/resolv.conf重启后失效。原因是被systemd-resolved或NetworkManager接管了。处理方法是# 查看resolv.conf是否链接到systemd管理 ls -l /etc/resolv.conf # 如果链接到了/run/systemd/resolve/说明是systemd-resolved在管 # 要么通过systemd-resolve来设置要么关闭它的管理 systemctl stop systemd-resolved systemctl disable systemd-resolved rm -f /etc/resolv.conf # 写入你自己的DNS配置 echo nameserver 223.5.5.5 /etc/resolv.conf第二类配置了静态IPDNS却不生效。这种情况最常见的原因是NetworkManager的配置文件里也设了DNS导致两个配置互相覆盖。你可以在/etc/sysconfig/network-scripts/ifcfg-eth0CentOS或/etc/netplan/*.yamlUbuntu里确认DNS配置是否正确。第三类ping域名提示未知主机但pingIP地址是通的。这说明DNS解析有问题排查路径是# 查看系统当前的DNS配置 cat /etc/resolv.conf # 使用nslookup测试域名解析是否正常 nslookup www.baidu.com # 如果nslookup正常但ping不行可能是ping命令本身走的路有问题 # 用dig short进一步确认 dig short www.baidu.com这个排查顺序看起来很基础但我见过太多人一上来就盯着防火墙白白浪费一两个小时。正确流程永远是先确认配置再测试解析最后才查防火墙。3.4 WSL linux删除文件后空间没释放虚拟磁盘也要“瘦身”“wsl linux删除文件后空间没释放”这个问题在2019年前后特别多人踩因为WSLWindows Subsystem for Linux的虚拟硬盘文件ext4.vhdx只会增长不会自动缩小。你在WSL里删掉几十GB文件Windows上的硬盘空间却一点没回来特别让人抓狂。解决思路很简单关闭WSL然后压缩vhdx文件。具体步骤如下在WSL里把要清理的文件删掉并最好执行一下sudo apt clean清缓存。退出WSL在PowerShell管理员里执行wsl --shutdown停掉所有WSL实例。找到ext4.vhdx文件的位置一般在%LOCALAPPDATA%\Packages\CanonicalGroupLimited*目录下的LocalState文件夹里。使用diskpart工具压缩虚拟磁盘diskpart select vdisk fileC:\Users\你的用户名\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu*\LocalState\ext4.vhdx attach vdisk readonly compact vdisk detach vdisk exit执行完之后你就会发现Windows磁盘空间回来了。这个方法同样适用于VMware和Hyper-V的虚拟磁盘瘦身。后来新版WSL提供了wsl --manage 发行版 --set-sparse true开启稀疏模式不过2019年前后还没有这个功能老办法依然值得掌握。3.5 透明加密环境下运维如何“自保”“linux 透明加密”这个词出现在热搜里说明很多运维已经遇到实际问题了。所谓透明加密就是加密软件在内核层面对指定进程的读写操作实时加解密。用户打开文件是明文存盘自动加密但如果加密Agent没安装或没生效文件读出来就是密文乱码。这在企业数据安全里很常见但对运维来说是个不小的挑战。我接过一个典型的求助一台Linux服务器上部署了透明加密客户端结果某天所有Java服务读配置文件变成了乱码应用直接起不来。排查了半天才发现不是文件坏了而是加密Agent对Java进程的I/O进行了拦截但是配套的解密驱动没生效。最后重启加密客户端并检查了内核模块加载状态问题才解决。如果你也在这样的环境里做运维我给你三个保命经验排查文件损坏类问题时第一时间确认目标机器是否部署了透明加密/防泄漏客户端。涉及备份和恢复场景加密环境下的备份文件必须在同一加密体系中恢复否则备份等于白备。排障时如果怀疑和加密有关先看dmesg尾部有没有该客户端内核模块的告警日志比瞎猜快得多。4. 面试风向变了运维工程师的新考题与进阶路线4.1 “linux面试题”不再是背命令的考试2020年前后我参与过不少运维岗位的面试一个很明显的感受是现在面试官早就不满足于问你“chmod 777是什么意思”“如何查看端口占用”这种基础题了。面试题开始往“场景化”和“体系化”方向走比如某台服务器CPU飙升到100%你如何一步步定位占用CPU的进程一个Web服务偶发性卡顿你会从哪些维度去排查数据库连接池被打满怎么快速恢复业务如果给你10台新服务器你怎么在半小时内完成基础环境部署这些问题的核心不是考你记没记住某个命令而是考你的排查思路是否清晰、有没有完整的知识框架。所以“运维面试”热搜词的背后实际上是行业对运维工程师能力要求的一次整体升级。我建议你在准备面试时针对每个高频方向准备一个“八股排查流程”。比如CPU飙高的处理流程# 1. 找到CPU使用率最高的进程 top -c # 2. 找到该进程内的线程 top -Hp PID # 3. 如果不用排查GC问题用strace看系统调用 strace -p PID -c -f # 4. 结合jstackJava或perf分析热点这套流程比单纯背命令强多了因为体现的是“排障思维”而不是“记忆能力”。4.2 运维面试常考的方向提权与安全加固“linux提权”也是热搜词。放心这里我不会教你怎么攻击但在面试和实际工作里它经常以“安全加固”的面孔出现。面试官会问sudo权限配置不当可能导致什么问题哪些文件位容易被利用来做提权如何发现系统中的异常特权账号对这些问题的准备能帮助你建立安全运维的意识。比如你负责的服务器上某普通用户被误加了sudo权限他就可以执行任意管理员命令这比被人拿到root密码更可怕因为更隐蔽。日常运维中我建议定期审计这些点# 查看哪些用户有sudo权限 grep -E ^sudo|^wheel /etc/group # 查找包含root和SUID位的可疑文件 find / -perm -4000 -type f 2/dev/null # 查看近期登录记录和认证日志 last -20 grep Failed password /var/log/secure | tail -20安全不是安全工程师一个人的事。Linux运维每天直接操作着最高权限的机器安全意识的强弱直接决定了系统的安全底线。4.3 建立属于你自己的运维技能图谱热搜词里有“运维技能图谱”和“linux运维技术栈”这提醒了一个重要问题运维的知识是零散的如果你没有一个宏观图谱学再多也容易迷失。我自己心里的Linux运维技能图谱分七层基础层文件系统、用户权限、进程管理、Shell命令。文本与数据处理层grep/awk/sed、正则表达式、文本日志分析。网络层TCP/IP基础、路由与防火墙iptables/firewalld、DNS、HTTP/HTTPS、抓包分析。存储层磁盘分区、LVM、RAID、NFS、文件系统调优。应用部署层Linux软件包管理yum/apt、环境配置Python/JDK/Nginx/MySQL、虚拟化KVM/Libvirt。自动化与云原生层脚本语言Shell/Python、配置管理工具、容器、CI/CD。监控与安全层监控告警、日志收集、权限审计、安全加固、故障复盘。每往上一层对应的薪资和话语权都会高一些。但前提是底下的层不能虚基础不牢上层就是空中楼阁。5. 常见问题与排查技巧实录一张速查表帮你少走弯路5.1 高频故障速查表我把2019年前后最常见的Linux运维问题做了个梳理直接对照现象查原因省得你每次排障都从零开始。现象可能原因快速解决办法磁盘空间频繁报警日志文件增长、Docker容器日志未清理、旧内核未清理du -sh /* 2/dev/null逐步定位用logrotate做日志轮转yum autoremove清理旧内核服务启动失败但报错信息很少systemd单元文件配置错误、端口被占用systemctl status 服务看详细日志ss -lntp确认端口占用远程连接很慢或者偶尔连不上DNS反查、SSH启用GSSAPI认证关闭UseDNS no和GSSAPIAuthentication no后重启sshd系统刚启动时负载很高启动时大量服务同时抢占IOsystemd-analyze blame查看开机耗时对慢服务做优化yum或apt安装软件报错源不可用、GPG key过期确认源配置清除缓存yum clean all重新下载源元数据突然无法解析域名resolv.conf被覆盖、本地DNS服务异常按第三节的排查流程先看配置再看解析按Tab键命令补全卡顿当前目录文件太多、或者命令不存在用complete -r重置补全确认命令已安装解压中文文件名乱码编码不一致用unzip -O GBK或Python脚本处理见3.25.2 几个“踩过坑才记住”的独家经验第一任何批量操作前先小范围试跑。不管是批量改配置、批量装软件还是批量重启服务一定先挑一两台机器试一遍确认没有副作用再全量执行。我有一次写了个批量清理/tmp的脚本测试没跑结果把一台机器上正在运行的服务的临时socket文件删了服务全挂教训极其惨痛。第二日志是运维最好的朋友。遇到问题不要急着瞎试先看日志。几乎所有服务在Linux下的日志都有固定位置统统集中在/var/log下。快速定位方式# 查看最近的系统日志 journalctl -xe # 查看指定服务的日志 journalctl -u 服务名 # 实时查看新增日志 tail -f /var/log/messages第三任何系统变更前先做“变更预案”。哪怕只是改一个配置文件也要想好三步改动什么、如何回滚、影响范围是什么。养成这个习惯后你处理生产事故的心态会完全不同。5.3 2019年之后新增的“坑”新型Linux终端设备的适配问题这里专门提一下企业里出现的新设备比如“希沃白板linux版”代表的交互式教学终端以及“企业微信linux”代表的办公IM客户端。它们的底层都是Linux但为了保证用户体验厂商往往深度定制了系统。运维遇到的坑包括系统精简很多常用命令没有安装比如连vim、telnet都没有。开机自启动项被锁死想加一个自启动脚本非常费劲。默认桌面环境是定制的和标准GNOME/KDE差很多用户上手习惯不同。碰到这类设备我的经验是先找厂商技术支持要“运维手册”不要自己硬碰需要通过root权限操作时优先用厂商提供的工具或LiveCD方式避免破环定制组件“统信运维工具-livecd”这类工具就是干这个用的——系统起不来时用LiveCD启动一个临时环境挂载磁盘做修复原理和Windows PE类似。当时这个方法救了我好几次。后面很长一段时间我电脑里常备几个不同发行版的LiveCD镜像和网络救援工具箱谁让我修系统我都能快速进场、快速撤退。一个运维手里没救援盘等于电工出门不带电笔干活没底气。写在最后的几句真心话2019年说“变天”回头看其实不是吓唬人更像是行业在换挡。Linux运维这个岗位没有消失但它的形态变了从单机命令型向平台自动化型演进从后台服务器延伸到桌面办公终端从“保证不出事”升级到“出事能快速自愈”。那些适应得快的同行靠自动化把效率提了几倍掌握Python和容器技能后身价明显上涨而那些拒绝改变的人依然在相同的故障里重复踩着相同的坑。我个人体会最深的不是哪条命令多有用而是“学习能力”本身才是运维的核心竞争力。Linux生态迭代太快今天的热搜词可能明年就过时但只要你的学习路径是对的你就永远跟得上。别焦虑动手去做装一台虚拟机写一个自动化脚本试着用Python解析一次日志把Linux桌面终端调通一次。这些具体的动作才是你能握住的东西。
返回列表