心得十一:让“配置”可回滚、让“代码”有温度——Linux软件包管理与持续交付30日札记一、从“源码地狱”到“包管理天堂”——我的第一跤 刚接触Linux时,我迷信“源码编译最干净”,于是把Nginx、Redis、Node.js统统./configure && make && make install。三个月后,运维同事离职,留下一台“黑盒”机器:谁也不知软件装
一、一次“磁盘爆满”的凌晨惊魂 凌晨两点,监控大屏一片红:API服务器/var分区剩余0 bytes。Web服务瞬间返回503,df -h一看,100 GB的挂载点被日志吃干抹净。我紧急rm -f *.log,可用空间却纹丝不动——lsof | grep deleted发现,文件已被删除但仍被Nginx占用。第一次意识到:Linux下“删文件”只是断开目录项,真正的释放要等进程关闭句柄。>
一、一场“CPU 100%”的午夜惊魂 凌晨一点,监控电话把我炸醒:Web API平均响应从200 ms飙到5 s。登进机器,top第一眼就看到一个Python进程霸占160% CPU(双核)。我下意识kill -9,世界安静了五分钟,随后新进程又蹿到100%。显然,杀进程只是“割韭菜”,不找到根因,它就会像地鼠一样无穷无尽。为了不再盲人摸象,我给自己立下“30天进程深度打卡”:每天花一小时,
一、一条报错引发的“血案”——初识日志 刚上线的新后台服务,第三天凌晨突然“失联”。老板在群里甩出一张截图:502 Bad Gateway。我火速SSH登陆,却发现服务进程健在,端口也监听,就是不出数据。正当我手足无措时, senior 在屏幕那端敲下三个字: “看日志。” tail -f /var/log/nginx/error.log 里一片 Connection refused
一、初识“服务”——System V时代的“脚本迷宫” 第一次接触Linux服务是被Nginx“放鸽子”。照着教程make install完,浏览器却死活打不开欢迎页。ps aux | grep nginx空空如也,原来我只会手动/usr/local/nginx/sbin/nginx,压根没把它注册成“服务”。旧版CentOS6里,/etc/init.d/nginx start才是正确姿势——
都说“网络是Linux的呼吸”,可我的第一次“呼吸”就差点背过气去。刚装好的CentOS7虚拟机里,ping 192.168.1.1返回Destination Host Unreachable,桌面右下角的网络图标打叉。我照着Windows习惯去点“有线连接”,却发现图形界面空空如也——那一刻,我才明白:在Linux世界,网卡不会自己“求关注”,一切都要靠命令行去“人工呼吸”。一、从“找不到网卡”
第一次写Shell脚本是因为“懒”。实验室要求每晚十一点把50台服务器的负载、内存、网卡流量截图发群里,我手动top、free –h、sar -n DEV轮番敲完,手腕已经麻木。学长瞄了我一眼,丢下一句话:“把重复的事交给电脑,你去睡觉。”于是,我开启了Shell脚本的“自动化三十天”,没想到最后“懒”没养成,反而收获了一堆“肌肉记忆”和一栋可复用的“脚本大厦”。一、第一周:把命令串成糖葫芦我最初
第一次被权限“打脸”是在实验课上。我把熬夜写好的Python爬虫放到`/opt/spider/`里,兴冲冲在crontab里加了一行定时任务,结果第二天只收到一封“Permission denied”的邮件。当时一脸懵:`ls`明明看得到文件,为什么跑不起来?老师扫了一眼屏幕,淡淡丢下一句话:“你看它‘脸色’了吗?”我这才注意到`ls -l`的第一列是`-rw-r--r--`,没有x
Linux的文件系统像一座没有路牌的古城,第一次`cd /`进去我就彻底迷路。Windows养成的“C盘D盘”思维瞬间失效,只剩孤零零的`/`挂在眼前。为了不再晕头转向,我决定给自己做一次“暴走训练”:关掉图形界面,用`tree -L 2`把目录结构打印出来贴在书桌前,然后每天随机挑一个路径钻进去,用`pwd`记录轨迹,直到能闭着眼睛从`/var/log`走回`/home`而不出错。
第一次上课,老师把屏幕切到终端,连鼠标都不插,当场宣布:“这学期不许用文件管理器,凡事靠敲。”台下哀嚎一片,我也不例外。为了不被淘汰,我给自己订了“30天命令打卡”:每天把10个常用命令各敲20遍,并写一行小脚本验证结果。没想到,三周后,我的手指先学会了思考。 第一天练`ls`。看似最简单,却藏着最多细节。`ls -lah`一敲,隐藏文件、权限位、时间戳全蹦出来。我盯着
去年秋天,我第一次在实验室见到Linux:显示器一片漆黑,只有白色光标闪烁。那一刻,Windows养成的“双击”本能突然失灵,手指悬在键盘上,像被丢进没有图形的荒野。老师递来一张便签,上面写着两行字:第一行是账号,第二行是密码,末尾加一句——“先man一下,别怕黑屏”。我带着狐疑敲下`man man`,满屏英文跳出的瞬间,心里反而踏实了:原来系统自带“说明书”,只是等着我去读。
DAY 12 远程传输三板斧:wget/curl + rsync + ssh——最小可行清单 · 第 12 天(1 h 上手)今日目标用 wget/curl 拉文件、断点续传、模拟登录用 rsync 增量同步本地↔远程,排除垃圾目录通过 ssh 密钥免密登录,结合 tar/ssh 流式备份写一条“一键上云”命令,后续直接塞 cron1. wget:老牌下载利器场景命令普通下载wget https:
DAY 11 定时三剑客:cron + at + systemd timer——最小可行清单 · 第 11 天(1 h 上手)今日目标会写 cron 表达式,用 crontab -e 让脚本周期跑用 at 安排一次性任务看懂 systemd timer 单元,替代 cron 实现“秒级+开机自启”掌握日志回卷与邮件通知,避免“静默失败”1. cron:老而弥坚的周期调度器检查服务状态systemc
DAY 8 变量 + 引号 + PATH:让 Shell 记得你是谁——最小可行清单 · 第 8 天(1 h 上手)今日目标理解 Shell 变量 vs 环境变量区别掌握 3 种引号 " ' \ 与命令替换 ` ` / $()会手动修改 PATH,写 .bashrc / .zshrc 永久生效用 env / export / set 查变量、写小脚本传参1. 变量速览(背 3 行)类型生命周期作用
DAY 21 结课大综合:从零编译 Nginx + 自签 SSL + 打 deb + 开机自启——最小可行清单 · 第 21 天(2 h 上手)把前 20 天技能串成一条线:源码安装 → 防火墙 → 日志切割 → 系统服务 → 打包 → 定时备份 今日一次跑通,可当作面试/生产“一条龙”Demo!目标交付物手动编译 Nginx 1.26(带 http_ssl & http_v2 模块)自签
DAY 20 源码编译与打包:.configure → make → make install + 打 deb——最小可行清单 · 第 20 天(1 h 上手)今日目标会解压、读 INSTALL/README,三板斧 ./configure && make && sudo make install理解 --prefix 与 DESTDIR,卸载不再“脏系统”用 ch
DAY 19 sed & awk 高级实战:日志报表一键生成——最小可行清单 · 第 19 天(1 h 上手)今日目标用 sed 完成“增删改查替换”五大操作用 awk 按列统计:PV、UV、流量、状态码占比写一条 10 行命令:从原始日志 → CSV → 终端直方图掌握 BEGIN/END/数组/函数,awk 就是“命令版 Excel”生成 HTML 报表,邮件定时发送1. 样本日志格式
DAY 18 Shell 脚本调试与性能剖析:set -x / time / strace + 提速技巧——最小可行清单 · 第 18 天(1 h 上手)今日目标用 set -x/+x / trap / bash -x 快速定位脚本 bug用 time / times / strace 找出性能黑洞用 shellcheck 静态检查,一次过消灭语法隐患掌握 5 个提速习惯:减少管道、避免 cat
——最小可行清单 · 第 16 天(1 h 上手)今日目标理解 PV → VG → LV → 文件系统 四层关系会创建/扩容/缩减 LV,ext4/xfs 在线扩容把新硬盘加入 VG,实战“根分区 100%”现场救援用 pvs/vgs/lvs 一眼看容量,写 5 行自动化巡检脚本1. LVM 概念:四层积木层级说明命令PV 物理卷硬盘或分区pvcreateVG 卷组PV 的池子vgcreateLV
DAY 15 防火墙四剑客:ufw → firewalld → iptables → nftables——最小可行清单 · 第 15 天(1 h 上手)今日目标用 ufw 10 秒开端口,Debian/Ubuntu 首选用 firewalld 区域+富规则,RHEL/CentOS 默认读懂 iptables 四表五链,写一条手动放行了解 nftables 下一代语法,一把梭替代 iptables防
DAY 14 网络故障四件套:ping + ss + traceroute + tcpdump——最小可行清单 · 第 14 天(1 h 上手)今日目标用 ping 判链路通断、丢包、延迟用 ss 替代 netstat,秒查端口/连接用 traceroute / mtr 定位路由黑洞用 tcpdump 抓关键包,Wireshark 离线分析组合排障流程:从用户报障到定位结果输出报告1. ping:
DAY 13 进程与系统监控:top/htop/ps/pstree/jstat 一眼定位瓶颈——最小可行清单 · 第 13 天(1 h 上手)今日目标用 ps + grep 快速抓进程;pgrep 一键 PIDtop 变身为 htop,看懂 CPU、内存、Load 三色柱pstree 看父子关系,lsof 找打开文件/端口用 vmstat/iostat/jstat 判 CPU、IO、GC 瓶颈写
DAY 10 函数 · 参数 · 退出码:写出“专业级”脚本——最小可行清单 · 第 10 天(1 h 上手)今日目标自定义 Shell 函数与别名区别掌握 位置变量 $1..$n $# $@ $* 及 shift用 exit code 传递成败,set -euo pipefail 做严格模式写带 --help、错误处理、日志的 50 行内实用工具1. 函数:把命令打包成“小程序”语法:funct
——最小可行清单 · 第 7 天(1 h 上手)今日目标理解 inode → 分清软链接 vs 硬链接会写 ln -s 做“快捷方式”;知道何时用硬链接秒省空间掌握 tar + gzip/bzip2/xz 三种压缩套路,备份与解压一条龙1. inode 基础(30 秒速读)文件数据存 block,属性存 inode(权限、大小、指向 block 的指针)文件名 ≠ 文件!目录只是一张“文件名 ↔
DAY 6 重定向与管道进阶:让命令行“会读会写会备份”——最小可行清单·第 6 天(1 小时上手)今日目标(3 个技能点)标准流:0/1/2 区别,把结果丢文件、把错误扔黑洞重定向组合拳:> >> 2> 2>&1 tee 一次搞定输出+备份Here 文档与 Here 字符串:在终端里快速写多行文件0. 前置 3 分钟回顾昨天我们玩了 ls | grep |
DAY 1 文件系统:知道“东西该放哪”路径放什么首周必看示例/etc系统级静态配置文件/etc/apt/sources.list 换源/var可变数据:日志、缓存、队列/var/log/syslog 看报错/usr用户级只读程序与库/usr/bin/python3 可执行动手 15 min# 1. 把路径-功能对应背一遍 ls /etc | head -10 # 看配置长啥样
Linux 文件系统深度游:/bin 到 /srv 每个目录都有故事——学习 Linux 系列第 4 篇(约 3500 字)目标:读完本文,你能把 Linux 的目录树当成“博物馆”——一眼看出哪件展品该摆哪,遇到“找不到命令”“配置文件在哪”时,三秒内说出绝对路径。0. 一切从“一切皆文件”说起Unix 哲学里,硬件、进程、内核参数……都能用“文件”读写。目录树就是统一的命名空间。为防各家发行版
终端入门:5 条命令让你像黑客一样操作文件——学习 Linux 系列第 3 篇(约 2300 字)前言第一次打开 Linux 的“黑框框”(终端),很多人会紧张: “命令打错了会不会把电脑弄坏?” 放心,只要避开 sudo rm -rf / 这种“自杀指令”,终端比图形界面更高效、更可控。本篇聚焦 5 条最常用文件命令:pwd、cd、ls、cp、mv、rm(好吧,数学上是 6 个,但前三把斧只占
30 分钟完成 Linux Mint 安装:从分区到驱动全图解——学习 Linux 系列第 2 篇(约 2200 字)前言不少新手被 Linux 安装劝退:BIOS 怎么设?分区表选 MBR 还是 GPT?/home 单独分区到底有无必要?本篇以“开箱即用”的 Linux Mint 为例,带你 30 分钟完成从下载镜像到进入桌面、连 Wi-Fi、装显卡驱动的全流程。照着做,几乎不会翻车。一、前期准
如果说 Windows 像一辆自动挡家轿,macOS 像一辆设计精良的轿跑,那么 Linux 更像一套乐高底盘——你可以把它拼成越野车、卡车甚至宇宙飞船。很多初学者被“命令行”“开源”“黑客专用”这些标签吓住,却忽略了它作为“生产力发动机”的本质。今天,我们就用 5 分钟聊聊:为什么 2025 年,你最好立刻和 Linux 打一声招呼。一、Linux 无处不在:你其实每天都在用它安卓手机的核心是
Copyright © 2005-2025 51CTO.COM 版权所有 京ICP证060544号