IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

DevOps

共 867 篇文章

IT 2013-05-19 23:25:34 / 累计浏览 3,122

服务器间同步/镜像/备份配置备忘录

这篇文章讲的是作者在从VPS迁移到独立服务器后,面对没有现成备份的困境,如何一步步摸索并比较各种文件同步方案,以实现可靠、实时备份的实战经历。 作者首先解决备份服务器的选型,找到了高性价比的大容量VPS。核心的挑战在于文件同步:基础的rsync配合cron定时任务虽然方便,但面对海量小文件和对“实时性”的追求,显得力不从心。于是,作者依次尝试了基于inotify机制的inotify-tools和sersync。文章详细记录了每一步的配置和遇到的真实问题:inotify-tools的过滤规则在实践中不顺手,日志混乱;而国产的sersync虽然整合了failover机制,看似更顺手,却暴露了多线程下大文件同步不完整、资源占用高等新问题,且文档和日志功能缺失。 最终,作者回归到inotify-tools,通过编写自定义脚本来解决文件过滤问题,找到了更可控的解决方案。整篇文章像一份技术人的踩坑笔记,清晰地对比了rsync、inotify-tools、sersync在功能、易用性、稳定性和资源消耗方面的差异,其价值不在于给出一个标准答案,而是为读者提供了在选择实时同步方案时,需要考量哪些实际维度——是稳定性、资源效率,还是配置的简洁性。

本机暂存
IT 2013-05-16 23:26:37 / 累计浏览 3,803

快速查看服务器硬件配置信息

这个脚本的目标很明确:为运维和开发人员提供一个一键式工具,快速获取Linux服务器的硬件与系统概况。它从几个关键维度着手,条理清晰。 首先,它智能识别操作系统发行版,无论是通过`lsb_release`还是直接读取`/etc/issue`,确保兼容性。接着,脚本深入`/proc/cpuinfo`和`/proc/meminfo`,提取CPU型号、物理颗数、核心数、逻辑处理器数,以及内存总量、交换空间、缓存等详细数据。对于磁盘信息,它整合了`fdisk`和`df`命令的结果,给出物理磁盘概况与各分区使用情况。 脚本的一个巧妙之处在于对64位系统的判断逻辑——通过检查CPU是否支持`lm`(长模式)标志,而非直接依赖系统位数。整个实现大量运用了管道和`awk`/`sed`进行文本处理,逻辑连贯,输出格式用等号线分隔,清晰易读。 对于需要快速摸底新服务器配置,或进行批量巡检的团队来说,这个脚本提供了一个非常直接、可立即落地的方案。它省去了手动拼接多个命令的麻烦,将分散的信息点整合成一份完整的“体检报告”。

本机暂存
IT 2013-05-14 22:23:10 / 累计浏览 7,824

top使用技巧

这篇讲的是Linux系统监控的必备工具top,如何通过一些关键技巧,从基础的实时观察者,变成强大的自动化诊断助手。作者从多数人仅用top进行交互式监控的现状出发,点明其局限——输出不便用于脚本分析。 文章核心聚焦两个实用技巧。首先是批处理模式(`top -b`),结合`-n`参数,能实现单次或定时输出。这解决了交互模式难以对接后续处理的痛点,特别适合与`at`或`cron`结合,在预定时间自动抓取系统状态快照,比如为性能回溯提供数据。其次,文章详细拆解了如何精准监控制定目标。通过`-p`指定PID,或使用`-u`/`-U`按用户过滤。这里点明了一个易被忽略的细节:`-u`仅匹配有效用户ID,而`-U`会搜索包括真实ID、保存ID在内的更多类型,让过滤更灵活。 这些技巧让top从“看一看”工具,升级为可编程、可定制的观测站,尤其适合需要长期监控或自动化运维的场景。

本机暂存
IT 2013-05-01 22:57:03 / 累计浏览 11,506

100个常用的linux命令

这篇整理了100个高频Linux命令的实用指南,覆盖了从基础文件操作到系统监控的方方面面。比如,用 `echo "aa" > test.txt` 清空并写入文件,`chmod go+w -R` 精准修改权限,`tar -tzvf` 快速查看压缩包内容,`du -sh` 一目了然获取目录总大小。文章对每个命令的说明都直击要点,例如解释 `bc -l` 能直接进行浮点运算,`uptime` 能快速查看系统负载均值,`lsof -i :22` 可以揪出占用特定端口的进程。 除了常规操作,还包含了不少实用技巧,比如通过 `ctrl+a` 和 `ctrl+e` 在命令行快速移动光标,使用 `rsync -P` 在同步文件时显示进度,以及用 `nmap -sP` 扫描网段内的活跃主机。这些命令片段犹如一张速查表,无论是新手入门还是老手备忘,都能从中找到即拿即用的解决方案。对于经常在终端下工作的开发者来说,掌握这些命令能显著提升日常操作效率。

本机暂存
IT 2013-05-01 22:51:09 / 累计浏览 4,522

Ubuntu中apt-get列出的软件包前面的字母标识含义

在 Ubuntu 服务器上管理软件包时,`apt-get` 或 `aptitude` 命令输出的每一行开头,常常带着让人有点困惑的字母代码。这篇文章的核心,就是把这些看似随意的标识一一解码,让你能“读懂”系统在告诉你什么。 它把标识拆解成两个位置来说明。第一个字母代表软件包当前的状态:比如 `i` 表示已安装,`c` 表示包已删除但残留了配置文件,而 `v` 则指明这是一个虚拟软件包。第二个字母则预告了即将对它执行的动作,例如 `i` 代表即将安装,`d` 代表即将删除。 搞清楚这些简码,相当于掌握了和 Ubuntu 包管理器直接对话的密钥。下次再运行相关命令时,你就能立刻从输出信息中把握住每个软件包的准确状况和系统预定操作,让日常的维护与排障工作变得更高效、更清晰。

本机暂存
IT 2013-05-01 18:40:03 / 累计浏览 3,624

被遗忘的Logrotate

作者在运维工作中观察到一个有趣的现象:许多服务器上运行着自定义的 CRON 脚本(如每天切分 Nginx 日志),却遗忘了系统自带的 Logrotate 工具。这篇文章正是从这一现象出发,重新介绍了 Logrotate 的实用价值。 文章首先解析了 Logrotate 基于 CRON 的运行流程与核心配置文件,随后以按天轮转并压缩 Nginx 日志为例,展示了其简洁的配置方法。作者特别解答了几个常见疑问:`sharedscripts` 指令如何在多个日志文件轮转后统一执行脚本、`rotate` 与 `maxage` 在控制保留份数上的区别,以及如何通过 `postrotate` 发送信号或使用 `copytruncate` 指令来通知应用程序重新打开日志。 相比于手写轮子,Logrotate 提供了更稳定、功能更完整的现成方案,支持压缩、灵活的保留策略以及与各类应用的交互脚本,能有效避免重复造轮子。文章还提到了 cronolog、savelog 等相关工具作为补充参考。

本机暂存
IT 2013-05-01 18:30:14 / 累计浏览 9,544

linux中设置alias永久生效

这篇讲的是如何让Linux终端的alias别名设置永久生效。很多人在使用alias时都遇到过同样的困扰:明明在当前终端设置了快捷命令,一关窗口就失效了,下次还得重新输入。作者从这个常见痛点出发,给出了一个简单直接的解决方案。 关键在于将别名定义写入用户目录下的`.bashrc`文件。文章以Ubuntu系统为例,展示了如何用`ls -a`找到这个隐藏文件,并用编辑器打开它。在文件的后半部分,我们能看到系统预设的一些别名(如`ll`、`la`),在这里添加自定义的别名,比如`alias log='cd /apache-tomcat/logs'`。保存文件后,只需执行`source ~/.bashrc`命令,新设置的别名就会立即生效,且之后每次打开终端都无需重复配置。 这个方法避免了每次手动设置的麻烦,把常用的目录跳转或复杂命令固化成简短的别名,能显著提升命令行工作效率。文章步骤清晰,对于经常使用终端的开发者来说,是一个能立即上手的实用技巧。

本机暂存
IT 2013-05-01 18:14:36 / 累计浏览 3,043

robbin谈管理:要给下属challenge你的机会

这篇讲的是管理中的服从与挑战。作者从一条关于马化腾深夜提bug、团队火速响应的微博切入,引出了关于职场执行力的深层讨论:这种高效的“听话”是值得称赞的“使命必达”,还是需要警惕的“无原则媚上”? 文章的核心观点是,一味强调下属无条件服从,对创新和产品成功可能有害。作者指出,当员工只为老板的指令而工作,用户的需求就可能被忽视,产品最终成了“做给老板看的”。他举了乔布斯早期力主iPad用Intel芯片,被下属Tony Fadell强烈反对并最终改变的案例,来说明挑战权威的价值。 作者提倡,管理者应该给下属“challenge你”的机会。这不仅能帮上司纠错、避免决策盲点,更能让下属从被动执行转为主动担责,快速成长。他结合自身经历,分析了上司害怕被挑战的几种心态(如权威被威胁、爱面子等),并总结了下属提出异议后可能出现的几种结果。他认为,绝大多数情况下,开放讨论的结果都好过一言堂,即使最终证明下属是错的,上司承担责任的过程也能建立团队信任。 文章呼吁建立一种更开放、互信的团队氛围,让每个人都为产品和用户负责,而不仅仅是对上级的KPI负责。

本机暂存
IT 2013-05-01 18:10:27 / 累计浏览 4,521

Unix考古记:一个“遗失”的shell

这篇讲的是Unix历史上第一个被广泛传播的shell——Thompson Shell,它由Ken Thompson编写,却常常被后来的Bourne Shell的光芒所掩盖。作者从Unix V6时代的尘封文档和源代码出发,带我们重新认识了这个只有900行C代码、却奠定了现代shell基因的“鼻祖”。 文章的价值在于,它清晰地展示了Thompson Shell如何将管道线、I/O重定向、通配符扩展和后台执行这些影响深远的概念工程化实现。尽管它在1977年就被Bourne Shell取代,但它所确立的命令语言结构和解释器可移植性原则,直接塑造了我们今天习以为常的命令行交互方式。 更妙的是,文章深入其解释器源码,剖析了预处理、词法扫描等步骤。你会发现,这个简陋的解释器原理竟与编译器一脉相承,对于想理解Shell或编译原理的读者来说,这份“活化石”级别的代码解析提供了难得的直观视角。

本机暂存
IT 2013-04-07 13:09:03 / 累计浏览 12,745

高效Linux用户需要了解的命令行技能

这篇从Quora问答出发的实用指南,系统梳理了高效使用Linux命令行的关键技能。作者并非简单罗列命令,而是从日常工作的实际场景切入,将技巧分为基本操作、效率提升和数据处理等模块。 文章亮点在于细节的呈现:例如,介绍了如何用一行脚本实现SSH无密码登录,利用`!!`和`!$`快速复用历史命令,以及用`set -x`进行Bash脚本调试。在数据处理部分,展示了如何巧妙组合`sort`和`uniq`命令来完成集合的交并补运算,甚至提到了通过设置`LC_ALL=C`能显著提升排序性能。 更深入的,文章涵盖了系统调试的利器,如使用`strace`追踪程序行为、`dmesg`排查硬件问题。这些工具的介绍都紧扣“解决什么问题”,而非单纯的语法说明。 对于希望提升终端操作效率、摆脱图形界面依赖的开发者而言,这是一份非常扎实的技能清单。

本机暂存
IT 2013-04-06 23:15:38 / 累计浏览 6,584

linux下的高效代码搜索工具-ack

这篇讲的是一个专为程序员打造的代码搜索工具——ack。作者从厌倦了反复敲击 `grep + find` 的组合命令出发,介绍了这款号称“better than grep”的利器。 ack的核心优势在于它为源代码搜索做了深度优化。它默认会忽略版本控制、二进制文件和非源码目录,只在有意义的文件中高速检索,这直接解决了使用grep时经常误中日志或无用文件的痛点。文章通过对比展示了ack更简洁的语法:例如用 `ack-grep -w hello` 快速精确匹配单词,用 `--python` 参数一键限定只搜索Python文件,省去了繁琐的过滤步骤。文中还详细演示了ack在结果处理(如只显示文件名)、文件查找和基于文件类型的灵活过滤等方面的实用命令。 此外,ack支持通过配置文件固化个人习惯,例如设置默认搜索的语言类型、结果排序和分页展示,让高频操作更加顺手。对于需要在复杂项目中快速定位代码片段的开发者来说,ack能显著提升效率,是grep一个更聚焦、更现代的替代选择。

本机暂存
IT 2013-03-11 13:58:35 / 累计浏览 4,526

深入理解 VXLAN

这篇文章从实际网络需求出发,对比了传统GRE隧道扩展性差、VLAN标识数量有限且难以跨三层边界的痛点,引出了VXLAN(虚拟可扩展局域网)这一关键的二层隧道技术。作者清晰地解释了VXLAN如何通过将二层帧封装在UDP数据包中,并利用24位的VNI来突破限制,从而实现更灵活的大规模网络虚拟化。 文章的亮点在于对Linux内核源码的深入剖析。它带领读者看懂了`vxlan.c`中发送与接收数据包的全过程:发送端如何像搭积木一样,在原始帧上依次封装VXLAN头、UDP头和IP头;接收端则相反,通过注册的`udp_encap_recv`钩子函数,一层层剥离外部头部,将内部帧重新注入协议栈。文中展示的代码片段,如组播/单播地址判断和头封装逻辑,让技术原理变得直观可感。 如果你对云网络、容器互联或隧道技术背后的实现细节感兴趣,这篇文章提供了一个从理论到内核代码的完整视角,揭示了VXLAN设计中兼顾扩展性与性能的巧妙思路。

本机暂存
IT 2013-03-11 13:47:58 / 累计浏览 9,505

rsync同步的艺术

对运维工程师而言,rsync几乎是数据同步的代名词。这篇讲的正是如何从最基础的命令出发,真正理解这个工具的工作逻辑。文章从一条不带任何选项的`rsync`命令讲起,细致剖析了它默认情况下对文件内容、修改时间、权限的不同处理策略——你会发现,它并非机械地复制,而是有着一套自己的“判断逻辑”。 这种逻辑在加入特定选项后会产生精妙的变化。比如`-t`选项能同步时间戳,并启用基于时间戳与文件大小的“快速检查”以提升速度,但也会埋下内容不同步的“坑”。而`-I`选项则回归“笨办法”,逐个文件校验以确保数据绝对一致,代价是性能下降。文章还生动地解析了`-r`递归目录、`-l`处理软链接、`-p`保持权限等关键选项的行为,并重点解读了集成了七项功能的`-a`归档选项的便利与局限。对于需要删除源端已不存在文件的`--delete`系列选项,作者不仅说明了其作用,也特意强调了其风险,并给出了使用`-n`选项进行预演的安全技巧。 整体而言,这篇文章像一份精准的说明书,拆解了rsync在速度、一致性与完整性之间如何权衡。它没有停留在罗列参数,而是揭示了每个决策背后的影响,能帮助读者在实际场景中做出更明智的选择。

本机暂存
IT 2013-03-11 13:38:12 / 累计浏览 4,441

《Rework》摘录及感想

这篇文章源于作者对《Rework》的多次阅读和实践反思,它并非简单的书摘,而是一场对流行工作哲学的“大扫除”。作者从书中的犀利观点出发,结合自身在技术团队管理和个人成长中的见闻,逐一戳破了那些看似理所当然的“现实”泡沫。 核心观点极具冲击力:所谓“现实世界”不过是消极者的借口;从成功中学习远比从错误中学习更能促进进化;长期计划往往是脱离现实的猜测;盲目追求团队扩张未必是荣耀,小而美的目标本身就很伟大。作者尤其批判了以“工作时长”衡量贡献的扭曲价值观,认为那是用蛮力掩盖思维惰性,本质是在训练一匹“更快的马”,而非创造新的交通工具。 文章最打动人的地方在于作者的“翻译”工作——他将书中的理念,精准对接到程序员日常的绩效考核、项目决策、职业选择乃至个人学习动力上。他呼吁读者“挠自己的痒处”,去做真正热爱的事;在资源受限时激发创造力,而非抱怨;树立鲜明立场,即使这会引发争议。通篇没有空洞的口号,而是充满了“用小分队端掉敌军指挥部”这类鲜活比喻,以及关于自动化测试、性能优化等具体技术场景的联想,让理念真正落地。它最终指向一个朴素而有力的建议:停止用“没时间”或“条件不够”作为借口,你的价值正体现在解决不完美条件下的问题。

本机暂存
IT 2013-03-07 13:56:01 / 累计浏览 7,382

nicstat 网络流量统计利器

这篇讲的是 nicstat 这个被称作“网络接口的 iostat”的流量监控工具。作者从 Brendan Gregg 的性能分析 PPT 引出它,详细说明了如何将这个原本在 Solaris 下的工具移植并安装到 Linux 环境中。文章核心对比了 nicstat 和常见的 netstat,指出其关键优势在于:能同时报告字节与数据包流量、将数据归一化为每秒速率、统计所有接口、并尝试估算网卡利用率(%Util)与饱和度(Sat)。这些特性让实时监控和诊断更直观。 文中展示了具体的安装过程(需针对64位系统修改编译参数)和多个使用示例,例如用 `enicstat -l` 查看网卡状态,用 `-M` 切换为兆比特单位显示,以及用 `-t` 获取 TCP 连接统计。特别值得注意的是,nicstat 通过读取 `/proc/net/dev`、`snmp` 等文件来获取数据,并提供了如重传率(%ReTX)、连接数等 TCP 层面信息,对排查网络问题很实用。文章最后也坦诚说明了在 Linux 下其饱和度统计的局限性,提示读者结合使用率和数据包速率进行综合判断。

本机暂存
IT 2013-03-05 13:28:38 / 累计浏览 9,264

Linux常用性能调优工具索引

这篇盘点了Linux性能调优的“武器库”,源自Brendan Gregg经典的性能分析图谱。作者并未止步于理论图表,而是结合自身多年的运维与优化实践,将图中提到的数十款核心工具与自己的实战笔记一一关联。 从监控网络流量的nicstat,到剖析内核函数的perf与systemtap,再到排查I/O瓶颈的iotop和blktrace,文章为每一个工具都提供了可直达的深度解读链接。它更像一个精心整理的工具箱导览,涵盖了从宏观系统监控(如top、vmstat、dstat)到微观进程追踪(如strace、pidstat)的完整工具链。 对于系统工程师和开发者而言,这份索引省去了逐一搜寻的功夫,提供了按需取用的便利入口。当你在面对CPU、内存、磁盘或网络的性能谜题时,可以从这里快速找到那个最称手的工具。

本机暂存
IT 2013-03-05 13:21:53 / 累计浏览 54,605

Git常用命令备忘

这篇讲的是Git的常用命令速查手册。作者把日常开发中最可能用到的Git操作,从基础配置到进阶使用,系统性地整理成了一份清晰的备忘录。 内容从配置用户信息和设置别名开始,快速上手。接着是文件操作的三板斧:用`git add`暂存修改,用`git commit`提交,以及用`git diff`查看差异,文中详细列举了各种diff比较场景。分支管理部分尤为实用,涵盖了创建、切换、合并分支,以及使用`git rebase`整理提交历史的命令。 文章还覆盖了几个非常实用的功能:通过生成和应用补丁在不同环境间同步修改;利用`git stash`临时保存工作进度,专注于紧急任务;以及远程协作的核心命令`git pull`和`git push`,包括如何跟踪远程分支和清理远程仓库。 这份清单的细致程度很高,甚至包含了如何使用`tig`这样的可视化工具,以及设置远程仓库HEAD指向等细节。对于不常使用Git,需要偶尔回顾命令的开发者来说,这份结构化的清单可以作为手边的速查手册,省去反复搜索文档的麻烦。

本机暂存
IT 2013-03-05 12:45:31 / 累计浏览 6,463

记一次丢包网络故障

这篇讲的是一台Nginx/PHP服务器时不时出现HTTP服务卡住的排查故事。作者的排查思路很清晰:先从应用层入手,通过查看Nginx日志中PHP的响应时间与Strace跟踪,排除了PHP的嫌疑。接着转向Nginx本身,确认其默认已关闭Nagle算法。随后检查了Linux内核的tcp_timestamps等参数,也排除了配置问题。 在思路陷入僵局后,作者决定使用tcpdump抓包。面对原始日志的晦涩,他巧妙地借助Wireshark进行可视化分析,从中发现了大量“TCP Dup ACK”和“TCP Out-Of-Order”标志,这直接指向了网络层可能存在的丢包。最终,通过使用`ping -f`命令发起洪水请求,屏幕上不断出现的丢包点直观地证实了网络状况确实不佳。 文章将问题根源定位为网络丢包,但并未止步于此,而是将更底层的物理原因(如网线、网卡或带宽)留给了更专业的运维人员。整个排查过程层层递进,展示了从应用层到内核层再到网络层的完整诊断链条。

本机暂存
IT 2013-03-04 14:33:23 / 累计浏览 4,543

Iowait的成因、对系统影响及对策

这篇技术文章深入剖析了Linux系统中iowait的产生机制,从现象追踪到内核源码,揭示了这一指标背后的完整逻辑。 文章首先厘清概念,指出iowait的产生需要同时满足两个条件:有进程因I/O阻塞,且当前CPU上没有其他可运行的进程,导致CPU只能执行空闲任务。随后,作者引导读者从`vmstat`命令看到的表象,深入到`/proc/stat`文件的数据来源,并一路追到内核代码。 核心亮点在于对内核函数`account_system_time`的分析。文章通过代码指出,只有当`rq->nr_iowait > 0`(有进程等待I/O)且`p == rq->idle`(当前CPU在空闲)时,这段CPU时间才会被计入iowait。而引发这一切的源头,则是`io_schedule`和`io_schedule_timeout`这两个函数。文章进一步使用SystemTap编写脚本进行实际验证,通过在高负载引擎服务上追踪这些函数的调用栈,清晰展示了I/O等待的具体发生场景。 作者通过理论分析与实战验证相结合的方式,完整展现了iowait从现象到根源的追踪过程,让抽象的概念变得具体可感。

本机暂存
IT 2013-03-03 23:41:07 / 累计浏览 11,748

Linux Used内存到底哪里去了?

这篇讲的是Linux运维中一个经典困惑:用`free`命令看到内存已用7-8G,但`ps aux`统计的进程RSS总和却不到30M,多出的内存到底去哪了? 作者从同事的实际问题出发,逐步拆解。先解释`free`输出的含义,指出buffer/cache虽被计入used但可回收;然后通过工具如nmon、top分析,发现进程RSS确实占了大头,但还有剩余。进一步揭示内核开销:slab缓存用于对象池,通过`slabinfo`计算消耗了约900MB;页表管理物理页面,从`/proc/meminfo`读取占了58MB;加上struct page等固定消耗。通过编写脚本累加进程RSS、页表和slab,结果与`free`的used基本吻合,但略多171MB,原因是RSS计算中共享库被重复计算。 文章最后澄清了内存计算的迷糊账,教会读者如何用`slabinfo`、`/proc/meminfo`等工具自查,理解Linux内存管理的底层细节。对于遇到类似问题的开发者,这是一次清晰的排查示范。

本机暂存