Shell应用(1): 搜索文本的几种方法
方法1:使用find和xargs命令 find dir | xargs grep str,dir是指某个目录 find file | xargs grep str,file是指某个文件 注意:这种方法,会递归搜索子目录 方法2:直接使用grep命令 grep str dir/*,dir是指某个目录,但不递归搜索其子目录 grep -r str...
View ArticleShell应用(2): 查看TCP服务器的性能
为方便查看特定TCP服务器进程的CPU、内存和网络连接情况,编写了一个简单的脚本perf.sh,其原理是指定--tcp或-t选项来调用netstat命令,指定aux -T选项参数调用ps命令,对输出结果根据进程名称或PID调用grep过滤;为了输出结果的可读性,先调用ps和netstat,用head取出保存大多是说明描述性的头几行。这里的实现具有如下特点: ●...
View ArticleShell应用(3): 使用awk统计磁盘空间
本文以统计磁盘文件系统已用空间为例说明awk的用法,使用命令df可获得磁盘文件系统的相关信息,如下图所示 第3列Used便是已用空间的数据,这是正常的情形。当第1列Filesystem文本过长时,就有可能换行输出,这是特殊的情形,如下图所示...
View Article计算Linux系统和进程CPU及内存使用率
摘要: 基本原理 1)系统CPU使用率等于两个时间点的CPU非空闲时间差除以CPU时间总量差得到的百分比,这两者可从/proc/stat文件获得。 2)系统内存使用率等于系统物理内存消耗量除以系统物理内存总量(memtotal,以KB为单位)得到的百分比,这两者可从/proc/meminfo文件获得。 3... 阅读全文春秋十二月 2013-05-31 19:04 发表评论
View Article基于Linux平台的高级IO扩展函数
摘要: 由于read、readv、write和writev函数一次读或写有时并不能满足所要求的数据,因此需要多次调用直到要求的字节数或者出错。针对这4个系统调用,编写了对应的xxxn版本,实现如下 Code highlighting produced by Actipro CodeHighlighter (freeware)http:... 阅读全文春秋十二月...
View ArticleShell应用(4): 使用sed删除行尾的^M字符
由于从其它平台如windows传输文件到类unix平台时,用vim等编辑工具打开时,有时会发现行尾有^M,其实这就是控制字符CR,ASCII码为13。为方便删除这个字符,编写了一个简单的dos2unix脚本,最多带2个参数,特点如下: ● 第1个参数表示目标文件或目录,当为文件时则处理非脚本本身的文件,当为目录时则根据第2个参数是否递归处理子目录。 ●...
View ArticleShell应用(5): 自动生成并安装服务脚本
脚本概述 一般地,当在目标机器编译安装某个服务程序后,为了使服务能开机自启动和关机自停止,则需要将其添加为系统服务。但不同的Linux系统管理服务的方法不同,如Ubuntu使用update-rc.d命令,而RedHat则使用chkconfig命令。因此为了能自动识别系统的类型,减少人工控制,编写了一个简单的autosrv脚本,要求至少1个最多2个参数,特点如下: ●...
View ArticleShell应用(6): TCP内核调优与转储设置
为了方便更改系统tcp内核的一些参数,编写ktcpopt脚本如下 1#! /bin/bash 2# ktcpopt 34sed -i...
View ArticleShell应用(7):nginx升级与恢复
摘要: 脚本概述 nginx是一款著名的开源web服务器,为方便升级与恢复,编写了一个简单的脚本,因为升级备份了可执行文件和配置文件(后缀名为old),所以可用于恢复。当升级时,若nginx正在运行,则不中断服务进行平滑升级,否则直接拷贝覆盖;当恢复时,若nginx正在运行,则不中断服务进行平滑恢复,否则直接拷贝覆盖。是否正在运行根据pid来判断,而pid从pid文件读取......
View ArticleShell应用(8):使用awk定位反汇编输出
脚本概述 由于使用objdump反汇编linux内核的输出太多(2.6.32-220.el6.x86_64统计结果为1457706行),而很多时候只是想查看特定部分的机器码与汇编指令,例如函数的入口、堆栈、调用了哪个函数等,为了高效和通用,因此编写了一个简单的awk脚本,其命令行参数说明如下: ●...
View Article一种动态跟踪TCP连接与进程相关性的方法
描述 TCP连接跟踪是网络流控和防火墙中的一项重要的基础技术,当运用于主机时,连接必与进程相关联,要么是主动发出的,要么是被动接受的,当后代进程被动态创建时,由于文件描述符的继承,一个连接就会被这个进程树中的所有进程共享;当一个进程发出或接受多个连接时,就拥有了多个连接。本方法可用于网络安全产品中,监控TCP连接及所属进程,能准确并动态地知道一个连接被哪些进程共享,一个进程拥有哪些连接。 特点...
View Article一种根据dentry获取绝对路径名的实现方法
本方法适用于linux 2.6.x内核。 1. 先获取dentry所属文件系统对应的挂载点,基本原理是遍历文件系统vfsmount树,找到与dentry有相同超级块的vfsmount,实现如下 1extern spinlock_t *vfsmnt_lock; 2 3static struct vfsmount* next_mnt(struct vfsmount *p, struct...
View Article一种拦截Linux动态库API的方法及装置
描述 拦截Linux动态库API的常规方法,是基于动态符号链接覆盖技术实现的,基本步骤是 1. 重命名要拦截的目标动态库。 2. 创建新的同名动态库,定义要拦截的同名API,在API内部调用原动态库对应的API。这里的同名是指与重命名前动态库前的名称相同。...
View ArticleShell应用(10):支持开源库编译的Makefile
脚本源码 由于很多应用项目依赖诸多第三方开源库,这些开源库各有不同的核心目录、库目标和输出位置,这里的核心目录是指仅产生so库的工程目录,库目标是指仅产生so库的make目标,输出位置是相对于核心目录的,但不必是子目录,可用..来回溯到父目录的某位置,更高层目录的位置,依次类推。为了统一支持它们,使用了一些技巧,详见示例脚本如下 1.PHONY: all clean lib core 2...
View ArticleShell(11): 创建和删除so库软链接
脚本概述 由于某些sdk或软件依赖众多的第三方库,而从官网下载到windows主机或从linux传到windows时,所依赖的so库往往丢失符号链接,给编译运行带来不便,因此编写了ctlsolink脚本,用于自动为单个so或某目录下的众多so或创建/删除一级/二级符号链接。该脚本的用法如下: ● 第1参数为mk或rm子命令,mk表示创建,rm表示删除 ● 第2参数为文件或目录 ●...
View Article基于VSS可传输卷影拷贝的备份架构
部署图 传统的vss备份架构由于备份应用部署在应用服务器内,因此比较耗应用服务器的CPU和IO,特别是拷贝大量的文件,为了降低对应用服务器的干扰,可采用server-free架构,将耗时的拷贝移到另一机器即备份服务器实现,而应用服务器只负责占用资源及耗时很少的打快照。这种架构运用了vss可传输卷影拷贝的特性,要求快照处于共享存储中,适用于Windows Server 2003...
View Article