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

标签:自动化

共 43 篇相关文章

IT 累计浏览 8

让 Claude Code 在你睡觉时持续运行:完整实战指南

本文提供了实现 Claude Code 无人值守长时间运行的完整技术方案。核心在于组合使用 `-p` 非交互模式、细粒度工具白名单(`--allowedTools`)以及成本控制参数(`--max-turns`、`--max-budget-usd`),并推荐采用更安全的 `--permission-mode auto` 作为折中。实战验证的“Ralph Wiggum”循环模式通过一个包含详细架构与任务上下文的 PROMPT.md 文件,驱动 Claude 自主检查任务、实现代码并提交。 为防止会话卡死或执行破坏性操作(如 `rm -rf`),文章重点介绍了四个关键 Hook:阻止等待人工输入的 No-Ask-Human、监控上下文使用量的 Context Monitor、编辑后即时检查语法的 Syntax Check,以及标记危险命令的 Decision Warn。同时,必须在 Docker 容器中运行 `--dangerously-skip-permissions` 模式以隔离风险。 维持运行环境需要使用 tmux 进行会话持久化,并配合系统命令防止设备休眠。上下文管理是成功关键,需将 CLAUDE.md 控制在精简,并主动使用检查点文件(如 `tasks/mission.md`)保存状态,以防上下文压缩导致信息丢失。此外,应利用夜间非高峰时段运行以避免速率限制,并通过 `--model sonnet` 降级控制成本。

IT 累计浏览 2,060

OpenBSD 将在每次重启后都使用和之前不同的内核

OpenBSD 近期在测试快照中引入了一个有趣的内核安全特性:每次系统重启或升级后,都会生成一个内部结构完全不同的新内核。这个名为 KARL(内核地址随机化链接)的功能,通过随机重组内核内部目标文件的链接顺序,使得每个用户的内核二进制文件都是独特的。 与我们常听到的 ASLR(地址空间布局随机化)不同,KARL 并不改变内核加载到内存的地址,而是在构建阶段就改变了内核自身的内部结构。这样一来,即使攻击者掌握了某个内核的漏洞,也无法轻易利用已知的函数偏移信息去攻击另一台机器上的 OpenBSD 系统,因为它们的内核“指纹”截然不同。 文章指出,这是一个目前 OpenBSD 独有的功能。Linux 和 Windows 虽然广泛采用了 KASLR(将相同的内核加载到随机内存地址),但并未实现 KARL 这种在二进制层面的随机化。多位安全专家在文中评价这一设计思路新颖且具有价值,认为它可能为其他操作系统平台的内核防护带来新的启发。

IT 累计浏览 2,443

iptables 看门狗

这篇讲的是如何为容易“开门忘关”的服务器防火墙设置一个自动看门狗。作者从近期因Redis配置不当导致服务器被黑的常见事件切入,指出核心风险往往在于人为疏忽:为了方便临时关闭了iptables,事后却忘记重新开启,给攻击者敞开了大门。 为了解决这个问题,文章提供了一个简洁的Shell脚本方案。这个脚本扮演了“看门狗”的角色:它会定期检查防火墙状态,一旦发现防火墙是关闭的,并且当前没有用户登录服务器(即“家里没人”),就会自动执行启动命令,将防火墙重新打开。 整个方案的核心思想简单而实用——用自动化弥补人为操作的漏洞。脚本通过检查`iptables`服务状态和`who`命令的输出行数这两个关键条件,实现了精准的自动化干预。它不依赖复杂的监控系统,仅用几行命令就构建了一个基础的安全保障机制,特别适合运维人员快速部署在需要长时间开放调试、又担心忘记恢复防火墙的服务器上。

IT 累计浏览 1,680

我是这样提高自己的效率

这篇讲的是作者如何通过一系列个人化的工具与习惯,系统提升工作效率的经验分享。作为开发者,作者的核心观点是:效率并非单纯靠速度,而是构建一套趁手且自洽的“工作流”。 文章从最基础的“兵器”谈起——高配电脑与机械键盘确保了硬件响应不拖后腿,多屏协作则优化了视觉工作区。接着,作者转向软件层面:一个插件精简但功能聚焦的Sublime Text编辑器,搭配自定义的代码检查与格式化工具,让编码过程更为顺畅。更关键的是跨设备环境的统一性,通过Git同步和标准化的Node+Nginx配置,实现了在公司、家里无缝衔接开发,本地域名以.me结尾的设计也避免了冲突。 最后,作者分享了几项提升操作效率的软技巧:一套跨Win与Mac的自定义快捷键、便于记忆的命令别名(alias),以及简短的hosts配置。文章结尾还提到了编写模块测试用例以减少Bug,以及跨技术栈沟通带来的思维启发。整篇文章没有空谈理论,而是用大量可落地的细节,描绘了一个开发者如何为自己打造高效、愉悦工作环境的完整图景。

IT 累计浏览 1,580

shell实现ssh自动登录

作者因为在Mac下没找到顺手的SSH客户端,干脆自己用expect写了一套自动登录方案。这篇分享的核心是一个名为`ssh_auto_login`的expect脚本,它能自动处理SSH连接中的密码验证,甚至支持通过通道机(跳板机)进行动态密码认证和内网服务器跳转,省去了手动输入的繁琐。 配合一个更上层的shell启动器脚本,作者实现了通过简单命令(如`./launcher 49`)快速连接不同服务器(如联通、电信线路或特定IP)的功能。整个方案无需复杂配置,特别适合需要频繁通过跳板机访问内网服务器的运维或开发场景。虽然脚本中的服务器IP和通道机逻辑是为特定环境编写的,但其处理SSH交互、动态密码匹配的核心思路清晰,稍作修改就能适配其他服务器。作者用这个实用小工具,演示了Shell脚本在自动化运维中解决具体痛点的灵活价值。

IT 累计浏览 2,381

看不见的成本

这篇文章从一个春节买火车票的故事说起:是花时间去排队,还是多花100块钱找黄牛?作者用这个选择引出“看不见的成本”这个核心观点——排队消耗的时间、承受的寒冷、以及最终可能一无所获的风险,都是隐藏的代价,而多付的100元可能换回更宝贵的半天自由时间和更高的确定性。 围绕这个洞见,作者进一步举了几个实际场景:招人时,主动在预期薪资上多给几千块,这笔“额外”成本带来的员工激励和价值创造,远超一次效果平平的市场投放;通勤时,为了确保准时而选择挤地铁,是用身体不适的确定成本,规避了堵车这种高风险、不可控的代价。对刚入行的年轻人,最宝贵的“成本”是时间,应优先投资于技能成长而非琐碎事务。 文章最终指向一种决策思维:在追求目标(“要赢”)的信念下,学会重新评估那些不易察觉的成本,放下眼前的执念,选择在长期看来价值最大化的路径。这不只是一本经济账,更是一种对个人时间和价值认知的清醒判断。

IT 累计浏览 3,104

开发者的黄金时代=运维人员的恶梦?

这篇文章从DevOps盛行的背景出发,探讨了软件开发环境巨变下开发与运维角色面临的不同境遇。 作者指出,过去十年,开源和云服务的兴起彻底改变了开发者的工具箱。他们不再受限于昂贵、整合慢的传统大型软件,而是可以根据需求自由选择免费、灵活的各类工具(如Redis、Elasticsearch等),实现了更快的集成与持续部署,产品迭代效率大幅提升,这正是“开发者的黄金时代”。 然而,工具的丰富与分工也为运维带来了“恶梦”。变更速度的加快意味着监控与响应需求激增;而由大量独立工具构成的现代基础设施,使得可移动部分增多、依赖关系复杂,导致“报警疲劳”。数据显示,运维人员多达50%—70%的时间可能被消耗在应对各类警报上,影响了其构建核心基础设施的工作。 文章最终落脚于,这种矛盾正推动DevOps模式的深化。它强调打破开发与运维的壁垒,通过建立共同的关系、流程与工具来协作应对挑战,从而更高效地创造商业价值。

IT 累计浏览 8,122

Linux shell脚本使用while循环执行ssh的注意事项

当用while循环结合ssh批量处理服务器时,很多人会遇到脚本在首个任务后意外终止的诡异问题。这篇文章就针对这个经典“坑”,做了一次透彻的拆解。 问题现象很明确:一个用于批量获取服务器运行时间的脚本,在循环中调用ssh命令后,只处理了第一个IP就退出了。作者分析了根因——while循环通过重定向读取IP列表文件,但ssh命令会“吃掉”这个输入缓冲区,导致循环体内部的read命令无数据可读,循环因此提前结束。 解决这个坑提供了两种清晰的思路。一种是“换条路走”,直接将while循环改为for循环,因为for循环是逐词解析命令输出,不会预加载整个文件,从而避免了输入流被ssh截获。另一种是“原路修复”,在ssh命令后加上-n参数,该参数会明确禁止ssh从标准输入读取数据(等同于将输入重定向到/dev/null),从而“归还”了被占用的输入流,让while循环能正常推进。文章给出了具体的代码示例,是一个非常实用的填坑指南。

IT 累计浏览 2,760

Linux修改用户密码-交互式与非交互式

这篇文章从实际运维需求出发,介绍了Linux系统中修改用户密码的几种实用方法。作者对比了交互式与非交互式操作的核心差异,并提供了可直接复用的代码示例。 对于交互式场景,文章以`passwd`命令为例,展示了手动输入新密码并确认的完整流程,适合单机或少量用户的操作。而针对需要脚本化、批量执行的运维任务,作者重点讲解了非交互式方案:使用`chpasswd`命令通过管道一次性传入`用户名:密码`对,或结合`passwd --stdin`重定向密码输入,这两种方法都无需人工干预,特别适合自动化部署。 文章进一步探讨了更灵活的`expect`脚本方案。该脚本能模拟交互式过程,自动响应密码提示并完成修改,解决了`passwd --stdin`在某些发行版中不可用的问题。作者还贴心地解释了脚本中TCL语法的巧妙之处,即利用反斜杠将注释延续到下一行,避免`exec`重复执行。 从简单的命令行操作到自动化的脚本实现,这篇文章覆盖了从手动到全自动的完整路径,为不同场景下的密码管理提供了清晰的选择依据。

IT 累计浏览 1,861

awk调用shell,并将变量传递给shell

这篇讲的是在awk脚本中调用Shell并传递变量的一个具体技巧。作者从一个常见的开发场景切入:当awk处理流程需要借助外部Shell命令完成时,如何让Shell能“感知”到awk上下文中的变量。 文章聚焦于实现这一操作的核心函数`system()`,并指出了一个容易忽略但至关重要的语法细节:调用Shell脚本时,命令字符串的拼接需要特别注意空格的使用,正确的写法是`system("sh my.sh " $var)`。通过提供的简单示例,可以清晰看到变量是如何从awk环境传递到Shell脚本内部,并被正确处理的。 对于经常编写文本处理流水线或复杂运维脚本的开发者来说,掌握这种跨语言调用的变量传递方法,能极大增强脚本的灵活性和自动化能力,是提升工作效率的一个实用知识点。

IT 累计浏览 4,464

以Facebook为案例剖析科技公司应有的工具文化

这是Facebook早期员工王淮Harry哥分享的一篇关于“工具文化”的深度见解。文章以Facebook的内部实践为案例,阐述了一个核心观点:优秀的技术公司应当将内部工具的开发和维护视为至关重要的战略投资。 文章详细介绍了Facebook如何通过两个核心工具组(研发工具组与网站支持工具组)来支撑其工程效率。例如,从新员工快速获取开发环境,到代码提交前的自动化规范检查、可视化的代码审查(Phabricator),再到无需改代码即可配置的灰度发布系统和多线程更新机制。这些工具的设计哲学是将优秀实践自动化、固化,以“不要让我思考”的方式提升整体效率。文章还提到,这种文化甚至延伸至用户客服、招聘面试和绩效评估等环节。 作者强调,工具文化的益处是“杠杆效应”的累积,能显著提升人均产出、降低协调成本(如用户达1亿时客服团队仍不到20人)。然而,最大的挑战在于如何吸引顶尖工程师加入工具团队。为此,公司需要用具体效率数据说话,并在企业文化中反复强调工具的战略价值。文章最终指出,对于度过初创期的公司,持续打造优秀的内部工具,其重要性甚至不亚于寻找下一个伟大的创意。

IT 累计浏览 8,982

Bash脚本15分钟进阶教程

这篇教程源自谷歌内部广受欢迎的“Testing on the Toilet”材料,系统梳理了编写健壮、可维护的Bash脚本的进阶技巧。它从脚本安全的开篇三行代码讲起,解释了如何通过`set -o nounset`和`set -o errexit`来避免引用未定义变量和忽略执行失败这两个常见坑点,并指出了其例外情况。 文章的核心在于提升代码质量。它强调了函数在增强可读性和结构化方面的作用,并推荐将大部分代码封装其中。在变量处理上,提倡善用`local`和`readonly`注解来明确作用域和防止意外修改。此外,教程对比了几种Bash语法:推荐用更清晰、不易混淆的`$()`替代反引号,以及用功能更强大的双中括号`[[]]`替代单中括号`[]`进行条件测试,并列举了后者在字符串比较和逻辑运算上的优势。 整篇文章没有空泛的理论,而是通过具体代码示例,直接提供了能立刻用在生产脚本中的最佳实践,帮助读者从“能跑就行”迈向编写更专业、更可靠的自动化脚本。

IT 累计浏览 2,961

实用命令行工具详解(五)—crontab

这篇讲的是Linux系统里“定时任务”的核心工具——crontab。文章从crontab的基础概念和命令格式讲起,比如常见的-l(查看)、-e(编辑)、-r(删除)等操作。 但真正的干货在后半部分的应用实例。作者没有停留在理论,而是直接给出了大量贴近实战的crontab写法,从“每晚21:30重启Apache”到“每周一到周五下午5点发邮件”,覆盖了日常运维和开发中高频出现的定时需求。特别是对时间字段(分、时、日、月、周)的各种灵活组合进行了拆解,例如“0 23-7/2,8 * * *”这种稍显复杂的表达式,都附有清晰的说明。 通过这些具体例子,文章把抽象的cron表达式变得具体可见,非常适合需要快速查阅或学习如何编写定时任务的读者。

IT 累计浏览 2,682

服务器批量执行工具 PSSH

运维或开发同学经常需要面对这样的场景:当服务器数量达到几十甚至上百台时,如何高效地执行统一操作?这篇文章介绍了一个实用的命令行工具——PSSH(Parallel-SSH)。作者从管理一个拥有60多台Ubuntu执行节点的Oracle Gird Engine集群的实际经验出发,展示了如何利用PSSH来简化批量管理工作。 文章详细演示了PSSH的几个核心命令:用pssh批量执行命令查看所有服务器状态;用pscp将文件同时上传到多台服务器;用pslurp从服务器集群批量下载文件到本地不同目录;以及用prsync保持开发机与生产服务器间的数据同步。每个命令都配有清晰的输入输出示例,比如展示五台服务器(grid01至grid05)的同步操作结果,非常直观。 除了展示功能,文章也提到了PSSH的一个替代方案:对于不排斥Python的开发者,也可以使用Fabric来编写脚本实现类似的批量任务管理。这为不同技术背景的读者提供了选择参考。对于管理大量服务器的运维工作来说,这个工具是个不错的选择。

IT 累计浏览 3,504

让前端工作更快、更智能:利用StaticPage自动化工作流

前端开发者常常面临静态页面开发琐碎重复的问题——从新建项目、复制模板,到压缩代码、打包上传,每一步都耗费精力。这篇讲的是作者如何通过一套名为StaticPage的自定义Grunt工作流,将静态页开发变得更快、更智能。 作者从自身在UX部门处理大量活动页、专题页的场景出发,对比了传统手动操作的繁琐流程(反复复制粘贴、手动压缩、FTP上传等)与使用自动化工具后的差异。StaticPage是基于Grunt配置的一套轻量级方案,专为解决静态页的“轻量”需求设计——它避免了如Yeoman等大型脚手架可能带来的冗余,同时提供了Sass编译、CSS/JS自动压缩、文件变化监听、一键打包zip及FTP上传等实用功能。 文章详细演示了从克隆项目模板、安装依赖到通过`grunt watch`实现编码时实时压缩,再到用`grunt bundle`生成带时间戳的压缩包并上传的全流程。作者强调,这类工具的核心价值在于“简、快、智”:结构清晰,跳过重复配置,让开发者能更专注于核心编码与问题解决。这套工作流尤其适合需要快速迭代、频繁交付静态页面的前端开发场景,通过将机械操作自动化,显著提升了工作效率与交付体验。

IT 累计浏览 3,422

Linux内核代码中的脏话统计

这篇讲的是作者从一个已停更的“the linux kernel fuck count”项目获得灵感,对Linux内核的C、H及汇编源代码进行了一次系统的脏话统计分析。作者按版本号,分别从脏话的绝对数量和代码行的脏话密度两个维度绘制了图表。 数据呈现了一个有趣的趋势:从2.4版本开始,脏话的绝对数量显著攀升。然而,考虑到同期内核代码总量也在激增,折算下来,平均每行代码的“脏话密度”反而是在下降的。文章坦诚地分享了统计方法的局限,比如会将词中包含的词也计入,以及受FreeBSD正则引擎内存泄漏的影响未能优化。 作者最终开源了统计脚本,但也自嘲其代码质量混乱。这本质上是一次用独特视角审视开源社区文化的趣味实践,既看到了开发者情绪的外露,也反映了代码库膨胀带来的稀释效应。

IT 累计浏览 6,721

在命令行快速切换目录

这篇讲的是如何告别在命令行中反复输入冗长的 `cd` 路径。作者从日常开发中频繁切换到 `~/some/very/deep/often-used/directory` 这类深层目录的痛点出发,分享了一个通过修改 shell 配置文件来实现的“目录书签”方案。 核心思路是利用 `mark` 命令为当前目录创建一个别名,之后只需输入 `g 别名` 即可瞬间跳转。此外,`gs` 命令可以一览所有已标记的目录。实现上非常巧妙,作者在 `/etc/profile` 文件尾部添加了一组 shell 函数,包括 `g`(跳转)、`mark`(标记)、`unmark`(取消标记)和 `gs`(列表),并利用 `ln -s` 创建符号链接来持久化这些书签,最终还为 `g` 命令配置了命令行补全功能。 这个方案完全用原生 shell 脚本实现,无需安装额外工具,却能极大提升在复杂目录结构中导航的效率。对于经常在终端工作的开发者来说,花几分钟配置一下,就能永久解决路径切换的烦恼。

IT 累计浏览 4,480

Shell的那些事儿

这篇讲的是 Shell 语言如何从大学里一个简单的工具,成长为作者工作中不可或缺的效率利器。作者从学生时代用 Shell 命令裁减文件系统、处理 BAT 脚本讲起,到工作后利用 `grep -Irl` 快速查找文本文件,或用 `find |xargs wc -l` 统计代码行数,生动展现了 Shell 在解决实际问题时“组合命令”的核心魅力。 文章并未停留在基础用法,而是深入探讨了 Shell 的“工程化”一面。作者分享了在性能团队学到的实用技巧,比如用 `-x` 选项调试脚本执行过程、设置参数默认值以及实现进程并发控制。同时,也坦诚讨论了 Shell 语法的灵活性甚至“不严谨”之处,比如 `if` 语句的多种写法和对换行符的敏感,并澄清了如何正确处理分号与命令返回值 `$?` 的使用。 作者的最终观点很明确:相对于 C/C++/Java 等编译型语言,Shell 作为一种“工具性语言”,以其无需编译、即写即测的特性,提供了无与伦比的开发效率。无论是压力测试还是复杂逻辑控制,它都是快速将想法落地的首选。文末那句“不熟悉 Shell 都不好意思说会性能调优”,既是对 Shell 地位的肯定,也点明了在追求效率的现代开发中,掌握这门语言的重要性。

IT 累计浏览 4,441

《Rework》摘录及感想

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

IT 累计浏览 3,361

发布及其检查的自动化实践

这篇讲的是,一个服务实例超过35K的大型Dubbo注册中心,在频繁发布中遇到的棘手挑战及其实战解决方案。作者从一次因人工配置错误导致的严重事故出发,分享了如何通过持续的自动化改进,让发布过程从“危险重重”变得可靠。 文章聚焦四个具体痛点:数据库配置错乱、发布前后服务数据一致性核对、运行时状态报告集成,以及重启引发的动态数据风暴。针对每个问题,都给出了清晰的“解决方法”和提炼出的“原则”。例如,通过监控配置文件的值来防止环境错配;在发布脚本中集成数据Dump和Diff,实现Provider列表的自动核对;将关键状态汇总到一个URL,方便监控;并设计了“warm-up”机制来平滑重启过程。 作者强调,核心思路是将“人操作可能出错”的环节,逐步转化为可监控、可自动执行的脚本。最终目标是让发布回归极简,理想情况下仅需运行一条命令,而把异常情况下的排查留给必要的时候。整个过程体现了从发现问题、分析根因到工具化、自动化解决的工程化实践闭环。