尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

构建个人命令手册:Linux、Git、Docker与K8s核心命令实战指南

构建个人命令手册:Linux、Git、Docker与K8s核心命令实战指南 1. 为什么你需要一份自己的命令手册干了这么多年技术从运维到开发再到带团队我电脑里一直有个叫cheatsheet.txt的文件。它不是什么高大上的文档就是一个纯文本里面密密麻麻记录着我这些年用过的、容易忘的、但关键时刻能救命的命令。从最基础的ls -la到复杂的kubectl管道组合从git的后悔药到find的精准搜索它就像我的“第二大脑”。你可能觉得现在搜索引擎这么发达需要什么命令搜一下不就行了这话对也不全对。当你面对一个紧急的生产故障或者在一个网络受限的环境下调试又或者只是想快速完成一个重复性任务时手边有一份自己整理、信手拈来的命令集那种效率和安全感是完全不同的。它节省的不是几分钟而是让你能保持思路的连贯性把精力集中在解决问题本身而不是回忆语法或者在一堆搜索结果里甄别哪个才是你需要的。网上的“命令大全”很多但往往要么过于庞杂让人望而生畏要么过于简略缺少上下文和实战场景。更重要的是每个人的技术栈、工作习惯、常用工具都不一样。一个后端开发常用的jq命令可能前端同学很少接触一个运维工程师烂熟于心的iptables规则开发同学可能只知其然。所以最有价值的命令手册一定是高度个性化、经过你自己实战检验的。这篇文章我不会给你一个冷冰冰的、按字母排序的“大全”。我想分享的是如何构建和维护一个属于你自己的、活的命令手册。我会以几个最核心的技术领域Linux、Git、Docker/K8s、数据库、开发工具为例不仅列出那些高频命令更会拆解它们为什么常用、在什么场景下用、有哪些让你少走弯路的“骚操作”和参数组合。你可以把它当作一个起点然后根据自己的工作流不断增删、注释、演化最终形成你的独门秘籍。2. Linux/Shell从生存到精通的必备命令无论你是开发、运维还是数据分析师只要和服务器打交道Linux Shell就是你无法绕开的战场。这里的命令不是用来背诵的而是用来组合、用来解决问题的。2.1 文件与目录操作你的导航仪ls,cd,pwd这些是呼吸一样的命令但很多人只用了它们10%的功能。ls的进阶用法ls -la展示全部细节是基础。但ls -lht则更实用-l长格式-h人类可读的文件大小K, M, G-t按修改时间排序。当你需要快速找到最近改动的大文件时这个组合一目了然。更进一步ls -la | grep ^d可以只列出目录ls -la | grep ^-只列出文件在脚本中做判断时很好用。find精准定位的瑞士军刀。它的强大在于表达式。找7天前修改过的日志文件find /var/log -name *.log -mtime 7。找大于100M的文件find . -type f -size 100M。找到后并删除慎用find . -name *.tmp -delete。更安全的做法是先-print确认find . -name *.tmp -print确认无误后再替换为-delete或-exec rm {} \;。cp/mv/rm的安全帽直接rm -rf /是灾难。养成习惯对于rm可以先echo一下要删除的内容或者使用rm -i交互式删除。cp和mv时如果目标目录不存在mv会失败而cp需要-r递归复制目录。一个有用的技巧是cp -a它保留所有文件属性权限、时间等常用于备份。2.2 文本处理三剑客grep, sed, awk这是Shell编程的灵魂也是高效处理日志、数据、配置文件的利器。grep文本搜索之王。grep “error” app.log找错误。但-v反向选择排除包含‘error’的行、-n显示行号、-c计数、-A 2 -B 2显示匹配行的前后2行查上下文才是日常高频操作。例如grep -n “Exception” -A 3 -B 1 app.log能帮你快速定位异常及其堆栈的起始位置。用-E来启用扩展正则表达式匹配模式更强大。sed流编辑器批量修改利器。最常用的就是替换sed ‘s/foo/bar/g’ file.txt将文件中所有foo替换为bar。-i参数直接修改原文件务必先备份或不用-i测试。删除空白行sed ‘/^$/d’ file.txt。打印特定行sed -n ‘10,20p’ file.txt打印10到20行。它擅长基于行的、格式统一的简单变换。awk一门编程语言处理结构化文本的核武器。它按行读取按字段处理。默认以空格或制表符分割字段$1,$2... 代表第1、2...个字段。统计日志中每个IP的访问次数awk ‘{ip_count[$1]} END {for(ip in ip_count) print ip, ip_count[ip]}’ access.log。计算文件第二列的总和awk ‘{sum$2} END {print sum}’ data.txt。它的能力远不止此支持条件判断、循环、数组、函数可以写出非常复杂的数据处理脚本。2.3 系统监控与进程管理洞察系统状态ps/top/htopps aux或ps -ef查看所有进程。top动态查看按PCPU、M内存排序。htop是top的增强版界面更友好支持鼠标操作强烈推荐安装。netstat/ss查看网络连接。netstat -tunlp查看所有监听端口及其对应进程。在新版Linux中ss命令是netstat的更快速替代语法类似例如ss -tunlp。df/du磁盘空间。df -h查看文件系统磁盘使用情况。du -sh *查看当前目录下每个文件/目录的大小快速定位哪个家伙占用了空间。lsof列出打开的文件。当你想知道哪个进程占用了某个端口lsof -i :8080或哪个进程正在使用某个文件lsof /path/to/file时它是终极武器。2.4 权限与用户管理安全的基础chmod/chownchmod 755 script.sh让脚本可执行。chmod -R 755 directory/递归修改目录下所有文件权限。chown user:group file改变文件所有者和所属组。理解数字权限755 rwxr-xr-x和符号权限urx两种写法。sudo以超级用户权限执行命令。配置sudoers文件用visudo命令编辑可以精细控制哪些用户能以何种权限执行哪些命令这是运维安全的重要一环。3. 版本控制核心Git命令的实战精要Git是现代开发的基石但它的命令之多、概念之绕让很多人望而却步。其实日常开发掌握20%的核心命令就能应对90%的场景。3.1 本地仓库操作你的代码时光机git init/git clone起点。git clone时记住--depth1可以只克隆最近一次提交节省时间和空间特别适合大型仓库的快速浏览。git status你的雷达。随时运行查看工作区、暂存区的状态。红字是未跟踪或修改后未暂存的绿字是已暂存待提交的。git addgit add .添加所有变化但容易误加临时文件。更精细的做法是git add -p交互式地选择每个代码块hunk是否加入暂存区在提交前做一次完美的代码自审。git commitgit commit -m “message”是基础。但git commit -v会在编辑器里同时显示本次提交的详细差异让你在写提交信息时能回顾具体改了啥更容易写出有意义的提交信息。--amend是“后悔药”可以修改最近一次提交的信息或内容注意已推送的提交慎用。git log查看历史。git log --oneline --graph --all能以简洁的图形化方式展示所有分支历史是理清分支结构的必备命令。git log -p filename可以查看某个文件的详细修改历史。3.2 分支与合并并行开发的艺术git branch/git checkout/git switchgit branch feature-xxx创建分支。git checkout feature-xxx切换分支。新版本的Git推荐使用更语义化的git switch feature-xxx来切换分支用git restore file来撤销工作区修改将checkout的功能拆解得更清晰。git merge合并分支。通常会产生一个合并提交。在合并前先切换到主分支如main然后git merge feature-xxx。如果出现冲突Git会标记出来需要手动解决后git add再git commit。git rebase变基。这是Git的进阶技能也是保持提交历史清晰线性的利器。git rebase main在特性分支上执行可以将特性分支的基底移到主分支的最新提交上。它的黄金法则是只对尚未推送到远程仓库的本地提交进行变基。变基会重写历史对已共享的提交进行变基会给协作带来灾难。3.3 远程协作与后悔药git fetch/git pullgit fetch origin只是将远程仓库的更新下载到本地但不合并。git pull相当于git fetchgit merge。我个人的习惯是总是先git fetch然后查看一下更新情况git log --oneline main..origin/main再决定是合并还是变基这样更安全可控。git pushgit push origin feature-xxx推送分支。如果远程分支不存在可以用git push -u origin feature-xxx-u参数会建立本地分支与远程分支的追踪关系下次直接git push即可。git reset/git revert两大“后悔药”用途不同。git reset在本地“回退”到某个提交。--soft保留工作区和暂存区只移动HEAD指针--mixed默认保留工作区但重置暂存区--hard危险工作区、暂存区都重置所有改动丢失。reset会改变历史只适用于本地未推送的提交。git revert创建一个新的提交来“抵消”某个旧提交的更改。这是一个安全的操作因为它不会改变已有的历史适用于已经推送到远程的、需要撤销的提交。例如git revert abc123会生成一个新的提交其内容正好是abc123这个提交的反向修改。4. 容器化与编排Docker与Kubernetes命令核心容器化已经重塑了应用的构建、分发和运行方式。Docker和K8s的命令成了运维和云原生开发者的日常。4.1 Docker容器生命周期管理镜像操作docker images列出本地镜像。docker pull nginx:alpine拉取镜像指定标签如alpine更小巧。docker build -t myapp:latest .根据当前目录的Dockerfile构建镜像。-f可以指定Dockerfile路径。docker rmi image_id删除本地镜像。如果镜像被容器使用需要先删除容器。容器操作docker run -d -p 8080:80 --name mynginx nginx运行容器。-d后台运行-p端口映射--name指定容器名。这是最常用的启动命令。docker ps查看运行中的容器。-a查看所有容器包括已停止的。docker exec -it mynginx /bin/bash进入正在运行的容器内部。-it分配一个交互式终端这是调试容器内问题的标准方式。docker logs -f mynginx查看容器日志-f实时跟踪类似tail -f。docker stop/start/restart mynginx停止/启动/重启容器。docker rm mynginx删除已停止的容器。加-f可以强制删除运行中的容器。4.2 Kubernetes (k8s)集群管理kubectl 是与K8s集群交互的主要命令行工具其命令结构通常是kubectl 动作 资源类型 [资源名] [参数]。核心资源查看kubectl get pods查看所有Pod。加上-n namespace查看指定命名空间-o wide查看更详细信息-w实时监控。kubectl get deployments,svc,ingress一次性查看多种资源。kubectl describe pod pod-name查看某个Pod的详细状态和事件这是排障的第一步。应用部署与交互kubectl apply -f deployment.yaml通过YAML文件声明式地创建或更新资源。这是推荐的做法。kubectl logs pod-name -c container-name查看Pod内容器的日志。-f实时跟踪。kubectl exec -it pod-name -c container-name -- /bin/sh进入Pod内的容器进行调试。故障排查与调试kubectl get events --sort-by.metadata.creationTimestamp查看集群事件按时间排序有助于发现系统级问题。当一个Pod状态不是Running时按顺序检查1)kubectl describe pod看事件2)kubectl logs看应用日志3)kubectl exec进入容器内部检查。5. 开发与构建工具链效率加速器这些命令散落在日常开发的各个环节熟练使用能极大提升效率。5.1 包管理与构建工具npm/yarn/pnpm(Node.js)npm init/yarn init初始化项目。npm install package/yarn add package安装包。--save-dev安装开发依赖。-g全局安装。npm run script/yarn script运行package.json中定义的脚本。注意npm和yarn的lock文件package-lock.json, yarn.lock务必提交到版本库以确保所有开发者环境的一致性。mvn(Maven) /gradle(Java)mvn clean compile清理并编译。mvn clean package清理并打包生成jar/war。mvn clean install清理、打包并安装到本地仓库。mvn dependency:tree查看依赖树解决jar包冲突的神器。pip(Python)pip install -r requirements.txt根据文件安装所有依赖。pip freeze requirements.txt生成当前环境的依赖列表。使用虚拟环境venv或conda是Python项目管理的标配可以避免全局环境的污染。5.2 数据库常用客户端命令MySQL/PostgreSQLmysql -u root -p/psql -U postgres连接数据库。\G(MySQL) 或\x(PSQL)在命令行客户端中将结果以垂直格式每行一个字段显示在查询结果字段很多时非常清晰。source file.sql(MySQL) 或\i file.sql(PSQL)执行SQL文件。mongosh(MongoDB)show dbs/use db/show collections基本导航。db.collection.find({...}).pretty()查询并格式化输出pretty()让JSON结果更易读。5.3 调试与系统工具gdb(GNU Debugger)C/C程序调试利器。gdb ./my_program加载程序。break main或b 15在main函数或第15行设置断点。run或r运行程序。next(n)单步执行不进入函数。step(s)单步执行进入函数。print variable或p variable打印变量值。backtrace(bt)查看调用堆栈定位崩溃点。adb(Android Debug Bridge)安卓开发测试必备。adb devices列出已连接的设备/模拟器。adb install app.apk安装APK。adb logcat查看设备日志。通常配合过滤使用如adb logcat | grep “MyApp”。adb shell进入设备的Shell环境。vim高效编辑虽然现代IDE强大但在服务器上快速编辑配置文件vim仍是首选。i进入插入模式Esc退出。:wq保存并退出:q!不保存强制退出。/pattern搜索n/N下一个/上一个。dd删除一行yy复制一行p粘贴。:set number显示行号:set paste进入粘贴模式避免自动缩进混乱。6. 如何维护你的个性化命令手册看了这么多命令你可能觉得头大。别急关键在于建立和维护你自己的体系。我的建议是工具选择一个纯文本文件.txt或.md配合版本控制如Git就足够了。我用的是Markdown文件因为它结构清晰支持代码高亮。也可以使用笔记软件如Obsidian、Notion它们有强大的链接和搜索功能。结构组织不要按字母顺序要按场景或技术域分类。比如我的手册结构是01_Linux_系统管理.md02_Git_版本控制.md03_Docker_K8s.md04_Database.md05_Programming_Tools.md。每个文件里再用二级标题细分。内容格式对于每个命令我通常记录三样东西基础语法最常用的形式。高频参数组合我自己最常用的那几个选项并加上简短注释。典型用例一两个具体的、我实际用过的例子附上上下文说明。例如# 查找并删除7天前的.log文件 find /app/logs -name *.log -mtime 7 -delete # 注意-delete 直接删除可以先运行不带 -delete 的命令确认文件列表持续更新这本手册是“活”的。每当我在网上看到一个巧妙的命令组合或者自己摸索出一个解决特定问题的方法我都会立刻把它加到手册里对应的位置并加上日期和问题背景。隔一段时间回顾你会发现有些命令已经内化不再需要查看就可以把它们移到归档区或者删除保持手册的简洁和时效性。命令不是用来死记硬背的而是用来解决问题的思维工具。拥有一份精心维护的个人命令手册就像木匠有一把顺手的锤子厨师有一套锋利的刀它能让你在数字世界的构建中更加得心应手把注意力从“怎么敲钉子”转移到“如何打造一把好椅子”上。现在就从整理你最常遇到的三个命令开始吧。
返回列表