• How Linux Work 笔记

  • book · linux · 2015-01-11 · yuex
  • 最近看了一本 Linux 方面的 2014 年新书,是 How Linux Work 第二版。一开始看名字,以为是 Linux 内核方面相关的,或者是讲如何自制 Linux 发行版的。但最后发现其实就是讲怎么使用 Linux 的。而且这本书也很特别,从内容上来讲,既不是完全给新手看的,也不是完全给老手看,很是别扭。但好在这本书讲到的所有东西都不是很艰深,很多都是信息性的内容,快速过一遍也只要两三个小时。国内人民邮电已经引入了 中文版 ,今年年底前应该可以和大家见面。

    但诚如至圣先师孔子所言:三人行必有我师。这本书还是让我收获了很多。以下撷取其中的一些内容,与大家分享。

    使用 mktemp 生成临时文件。只要在 shell 脚本中使用 TEMPFILE=$(mktemp) 就会在 /tmp 中生成一个临时文件,然后可以通过访问 ${TEMPFILE} 进行使用,非常方便。

    Shell 脚本的劣势,有以下三点,结合以前的开发经验,还真是这样的:

    • 算术计算,特别是浮点运算,基本不可以原生地做;
    • 字符串处理 …
  • 使用 bash 渲染模板动态生成配置文件

  • linux · bash · 2014-10-14 · yuex
  • 在使用 bash 自动化一些配置过程的时候,经常会遇到这样一种情况,我们需要向配置文件中写入一些信息,而这些信息是动态的,只有脚本实际运行的时候,才能知道这些信息。比如我需要自动启动一个由多个 docker container 组成的 cluster。这个 cluster 中的多个 container 形成一个 C/S 架构的星形拓扑。为了可以正常通信,client 至少应该知道 server 的 ip 地址。为了使这个部署可以更灵活,一般会选择使用 dhcp 来动态获取地址。所以,我们不能事先把地址写死,必须在 server container 运行之后动态生成 client 的配置文件。当然,我们也可以把脚本写成两步,先起 server,再起 client。但是这种方法自动化的不彻底,没有一下就把所有工作从头做到尾来得爽快,所以这里也就按下不表了。

    上面说的这个情况,最直接的方法是用 sed 配合正则表达一处一处地修改。但是当要修改的地方很多时,这个方法会变得非常繁琐,后期维护也非常困难。我在这里提供一种利用 bash 渲染模板文件动态生成实际使用配置文件的方法。如果你有玩过 …

  • Arch Linux 上手指南

  • linux · archlinux · 2014-04-18 · yuex
  • 缘起

    一直都想写一篇关于 Arch Linux 的博客,可以用来帮助 Arch 新玩家上路, 又可以总结一下自己入坑三四年来的一些心得。 年前的时候,我的 Thinkpad X220 双硬盘中的 mSATA SSD 挂了,援救了一下数据和系统。 本打算借机写写 Arch Linux 的安装,也积累了一些素材。但思来想去, 每个人的硬件型号、网络环境、分区习惯、软件选择的品味等等,不尽相同, 一份安装指南不一定会对每个人都有用,甚至还有可能在某些情况下起到截然相反的效果, 影响观者对于 Arch 的热情,所以最后也就没有落笔。

    然而,今天又有同事问起 Arch Linux,同事有一些 Linux 基础,对 Arch 比较好奇。 我想不如准备一些参考资料,说说自己作为 Arch 用户的使用心得, 来告诉新玩家 Arch 是什么,使用 Arch 会遇到怎样的问题,这样来得更实在一些。 像安装指南、发行版比较之类,已经有不少很好的资料了,实在不需要我的狗尾续貂 …

  • 利用耗怒回血解决野蛮人的战斗恢复问题

  • game · diablo3 · 2014-03-30 · yuex
  • Build 介绍

    在《夺魂之镰》之中, 由于 “ 生命窃取 ” 的去除和 “ 战斗暴怒 ” 与 “ 狂战之怒 ” 两个技能某些符文的修改, 在之前版本中广泛流行的 “ 双旋风 ”build 已经跑不起来了。 作为近战职业之一的野蛮人,寻找新的战斗恢复方式迫在眉睫。 在本文中我想到和试验了一个围绕被动技能 “ 嗜血狂人 ” 建立的 build, 可以在不牺牲装备上任何主要属性的前提之下(不会牺牲 dps), 通过合理搭配稀有装备的属性,让野蛮人达到战撸苦痛 I、II、III 的目的。

    以下会先说明耗怒回血的原理,接着会根据这个原理展示我目前在用的几个 build, 和几个可能的变种 build。最后是装备选择和巅峰点数的选择。 各位读者可以根据耗怒回血的原理自由发挥,选择自己喜欢的技能奋战《夺魂之镰》。

    耐性不够的朋友可以直接跳转到 “ 技能选择 ” 章节,但我还是建议你看完原理部分

    Build 特点

    优势

    • 治疗的提升不以牺牲 dps 和 ehp 为前提,充分利用装备上的词缀,让三者可以共同提升,互不干扰
    • 渐进的装备更新路线,不需要特定传奇的支持,野蛮人可以从稀有装备慢慢过渡到传奇
    • 较好的技能兼容,围绕耗怒回血 …
  • 动手写 PAM 模块让 sshd 支持用户接入控制

  • linux · sshd pam python · 2013-09-29 · yuex
  • 承接上一篇 blog,某本意是想用 pam_limits.so 来做用户登录限制,从而可以让多个用户共用一台机器做 ssh 代理。这样一来,服务器端就必须要对用户进行基于用户名和登录 ip 的。

    想当然的做法是用 /etc/security/limits.conf 中的 maxlogins 解决。但是这个是有问题的,maxlogins 是要用户登录到 shell 才会统计的。pam_limits.so 中读取的是 utmp,这个是存在 /var/run/utmp 中的,用 w 可以查看。而 ssh -N 是不会被 utmp 记录为 login 的。所以,如果用上篇 blog 中的方法实践的话,用户可以用 ssh -N 绕过所有的接入控制。一般而言,这也不是什么大问题,因为用户 ssh -N 接入的话 …