LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
12
返回列表 发新帖
楼主: Yuri

一个Shell考题月薪¥5000

[复制链接]
发表于 2005-11-3 14:06:23 | 显示全部楼层
shell就好像机器猫的那个小包包。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-11-3 17:41:03 | 显示全部楼层
我开始感觉是用三剑客Grep&Awk&Sed来呢
回复 支持 反对

使用道具 举报

发表于 2005-11-4 09:21:28 | 显示全部楼层
第一次發現錢有這麼好?
回复 支持 反对

使用道具 举报

发表于 2005-11-4 11:50:19 | 显示全部楼层
楼主...把钱贴出来让大家看看是不是真的钱哦..哈哈是不是5000冥币啊....发现我也可以做出来哦
回复 支持 反对

使用道具 举报

发表于 2005-11-4 15:52:38 | 显示全部楼层
#!/bin/sh
sed -e "s/\[MemAlloc\]//p" -n log.txt | sort >junk1
sed -e "s/\[MemFree\]//p" -n log.txt | sort >junk2
join junk1 junk2 -v 1 >leak.tmp
uniq -c leak.tmp >leak.log
回复 支持 反对

使用道具 举报

发表于 2005-11-4 17:45:57 | 显示全部楼层
#!/bin/sh
sed -e "s/\[MemAlloc\]//p" -n log.txt | uniq -c | awk '{print $2" "$1}' | sort > junk1
sed -e "s/\[MemFree\]//p" -n log.txt | uniq -c | awk '{print $2" "$1}' | sort > junk2
join junk1 junk2 -a 1 | awk '{print $1" "$2-$3}' | grep -v " 0$" > leak.log
回复 支持 反对

使用道具 举报

发表于 2005-11-4 20:08:36 | 显示全部楼层
用 perl 搞定也是月薪5000么  :comp
回复 支持 反对

使用道具 举报

发表于 2005-11-6 06:16:48 | 显示全部楼层

Python 15分钟,bash 30分钟

内存泄漏是指内存分配出去之后没有回收又分配出去了。所以这里不仅仅是匹配模式计算行数的问题了,还有同一个地址的MemAlloc和MemFree的先后问题。

这个问题,用python,15分钟;用bash 30分钟。
回复 支持 反对

使用道具 举报

发表于 2005-11-6 18:28:37 | 显示全部楼层
Post by shhgs
内存泄漏是指内存分配出去之后没有回收又分配出去了。所以这里不仅仅是匹配模式计算行数的问题了,还有同一个地址的MemAlloc和MemFree的先后问题。

这个问题,用python,15分钟;用bash 30分钟。
不知道你是怎么测试的。
楼主说的 30M 的 log 文件大约有多少条记录,准备用 perl 测一下。
回复 支持 反对

使用道具 举报

发表于 2005-11-6 22:26:28 | 显示全部楼层
Post by shhgs
内存泄漏是指内存分配出去之后没有回收又分配出去了。所以这里不仅仅是匹配模式计算行数的问题了,还有同一个地址的MemAlloc和MemFree的先后问题。

这个问题,用python,15分钟;用bash 30分钟。

"内存泄漏是指内存分配出去之后没有回收又分配出去了。"
---老兄,既然没有回收,又怎么能再分配出去呢?内存泄漏应该是指内存分配出去之后没有回收,而导致无法再使用这块内存。所以,要计算MemAlloc和MemFree匹配的情况,那么剩下未匹配到MemFree的MemAlloc便是没有回收的内存块的分配记录。
一已之见!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表