linux 中有很多实用的工具, 采用了这样一种工作方式:
定时执行(1/s, 1/3s 等)一次指定逻辑, 当用户按下 ctrl + c 发出 SIGINT 信号时, 结束进程; 如果接收不到 SIGINT/SIGTERM 等信号, 进程则会一直执行下去;
类似的工具包括 iostat, dstat, jstat 等;
本文整理了实现上述逻辑的一些典型方法;
希尔的博客
兰之猗猗,扬扬其香。不采而佩,于兰何伤?
-
-
ulimit 调参与优化
ulimit 未正确设置是很多线上故障的根源:
Too many open files
;java.lang.OutOfMemoryError: unable to create new native thread
;
对于生产环境来说, ulimit 的调参优化至关重要;
本文详细介绍并梳理一下与 ulimit 相关的林林总总; -
bash 数组与映射
注: bash 映射 (map) 在文档里叫做
关联数组 (associated array)
, 使用关联数组的最低 bash 版本是 4.1.2; -
rsyncd 配置与运维
本文主要梳理 rsync server 的基本配置与使用方式;
-
jstack 命令使用经验总结
jstack 在命令使用上十分简洁, 然而其输出的内容却十分丰富, 信息量足, 值得深入分析;
以往对于 jstack 产生的 thread dump, 我很少字斟句酌得分析过每一部分细节, 针对 jstack 的性能诊断也没有一个模式化的总结; 今天这篇文章我就来详细整理一下与 jstack 相关的内容; -
nagios 配置文件梳理及运维实践
nagios 的优点在于其插件拓展式的设计, 不过 nagios 给 ops 映像最深刻的, 是其出离复杂的配置文件; nagios 真的可以说是把配置文件当数据库使了;
作为备忘, 本文主要梳理 nagios 配置文件中的各种角色的关系与交互流程, 并就日常工作的经验总结一些 nagios 配置文件的部署及运维实践; -
python module 使用总结: MySQLdb
MySQLdb
模块是 python 与 mysql 交互的较为底层的接口, 不过它依然是在更为底层的_mysql
模块之上又作了一层包装;_mysql
才是真正的直接面向 mysql 原生 C 接口的简单适配层, 而MySQLdb
则在_mysql
之上作了更多的关于类型转换等抽象包装;
考虑到MySQLdb
模块与一些 python ORM 框架的关系,MySQLdb
与 python 的关系可以类比为 jdbc 之于 java;
如果是复杂的系统, 我们肯定会选择 ORM 框架, 不过对于一些简单的小工具, 定时小任务等, 本身没什么复杂的数据库操作, 那就用 MySQLdb 最方便了;
本文基于MySQL-python 1.2.5
对 MySQLdb 作一些使用上的总结; -
jcmd: jvm 管理的另类工具
曾经 oracle 向我们提供了一套 jvm 管理与诊断问题的 “工具全家桶”: jps, jstack, jmap, jstat, jhat, jinfo 等等, 我们针对不同的情景使用不同的工具, 解决特定的问题;
现在, oracle 在 jdk7 之后又为我们带来了一个全能的工具 jcmd; 它最重要的功能是启动 java flight recorder, 不过 oracle 在设计该命令的时候, “不小心” 为它附加上了一些其他功能, 从而将原本平静的水面搅起了波澜; -
saltstack cheat sheet
本文主要整理日常 saltstack 使用时的最常用的一些命令,以供快速查阅;
-
du / df 使用及其区别
本文主要是整理 磁盘使用量 相关的命令, 如 du, df 等;
接着, 一般性得总结这两个命令在实际工作中的应用;
然后再以 du, df 命令的区别为例, 讨论命令背后的逻辑, 工作中存在的问题, 最后引申出问题解决的工具: lsof;