自己写完后看了都觉得好啰嗦,大家想要看的话最后是先从头到尾读一遍,然后再动手,可能会好一些。
nmon:一款监控Linux的cpu,内存,硬盘等等性能的开源软件
就不说当前版本是啥玩意儿了,因为没啥意思,过两天又升级版本了,让别人看这篇随笔有种不舒服的感觉,感觉说的和自己想要的不一样,所以我就写一个通用的方法,这里说是通用的说法也只是我的一面之辞,自我感觉而已。希望不会耽误大家。
ps.另外还是说一下,我用nmon的情况吧,当前官方的最新版本为nmon16f,可是上官方看到编译好的二进制包是最新版本的cpu架构都是针对power的,而我的是X86_64,所以只能用源码编译,但是看官方关于源码编译的文档说先下nmon*.c然后再下makefile,问题就来了,lnmon*.c倒是有,但是makefile藏哪了,死活都找不着,最后在github中找到的。
上面都是费话下面进入正题:
1.nmon的源码编译需要两个文件: lnmon*.c 和 makefile ,其中*表示的是你想编译的版本号
如何获得lnmon*.c文件
方法一:进入nmon的官方,左手边的菜单点击source code,右侧页中有一个Downloads表格,一般第一个文件都是最新的nmon*.c
方法二:首先进入方法一的source code页,然后进入项目托管的链接地址,去里面下载
如何获得makefile文件
进入项目托管链接,然后ctrl+f搜索makefile,下载即可
附上当前的相关地址:
nmon官方网址: http://nmon.sourceforge.net/pmwiki.php
source code页网址: http://nmon.sourceforge.net/pmwiki.php?n=Site.CompilingNmon
代码拖管地址:https://sourceforge.net/projects/nmon/files/
2.修改makefile文件
根据什么修改该配置文件
从宏观上需要修改的就一处,先看一下
nmon_x86_64_debian8:
cc -o nmon_x86_64_debian8 $(FILE) $(CFLAGS) $(LDFLAGS) -D X86 -D debian8
nmon_power_rhel3: $(FILE)
cc -o nmon_power_rhel3 $(FILE) $(CFLAGS) $(LDFLAGS) -D POWER
nmon_power_rhel4: $(FILE)
gcc -o nmon_power_rhel4 $(FILE) $(CFLAGS) $(LDFLAGS) -D POWER
nmon_power_rhel5: $(FILE)
gcc -o nmon_power_rhel5 $(FILE) $(CFLAGS) $(LDFLAGS) -D POWER
上面这几行是我从makefile里面复制出来的,可以看出来它们是两行一组,当然这里我只复制出了一少部分,还有好多的这样组,你可以在文件里面搜一下有没有符合你当前 cpu架构和linux发行版的组,有的话就将那一组复制到这样组的最上面,注意不是文件的最上面,是这样组的最上边;就是说你看这样的组是从哪一行开始的,你就将符合你现有条件的那两行给排到这样组的首行;如果当前组中没有精确符合你要求的组,则你要从里面找出一组最接近的,怎么找最接近的呢,一般来说,debian和ubuntu是同源的,红帽(redhat)和centos,fedora是同源的;举个例子,我的机子,cpu架构是x86_64,系统是ubuntu16,假如当前的makefile中没有,则我的思路是:先查找架构x86_64,以它为关键字搜索,将搜索到的结果看个遍,结果发现没有nmon_x86_64_ubuntu16但是有nmon_x86_64_debian8(见上面复制出来的第一行),所以我就将:
nmon_x86_64_debian8:
cc -o nmon_x86_64_debian8 $(FILE) $(CFLAGS) $(LDFLAGS) -D X86 -D debian8
上面这两行改为:
nmon_x86_64_ubuntu16:
cc -o nmon_x86_64_ubuntu16 $(FILE) $(CFLAGS) $(LDFLAGS) -D X86 -D ubuntu16
然后将修改过的这两行放到同类型开始的最上边(注意不是文件的最上边)
保存退出即可。
3.将lnmon*.c改名为lmon.c(因为上面说的配置文件makefile中用的变量名是lmon.c)
mv lnmon*.c lmon.c
4.执行make makefile(注意lmon.c和makefile要在同一目录下)
等待一会儿就会生成一个“nmon_架构名_版本名”的一个文件,如nmon_x86_64_ubuntu16
5.此时我们执行./nmon_x86_64_ubuntu16就可以运行了,但是一般都是将该文件放到PATH路径下,通常是/usr/local/bin下并改名为nmon
cp nmon_x86_64_ubuntu16 /usr/local/bin/nmon
注意,如果运行不了的话看看是不是没有给可执行权限
chmod +x /usr/local/bin/nmon
上面说的比较啰嗦,总结一下:
1.下载lnmon*.c文件和makefile文件
2.修改makefile文件(其实如果不愿改的话,可以尝试着不动该文件直接执行第三步,但是不建议这么做,因为我试过成功了,但是修改前后的nmon首页输出的内容不同)
3.执行make makefile
4.将生成的文件改为简写的nmon并且放到PATH路径下(方便直接输入名称就能运行,而不用输绝对路径了)
正如标题所写的为“初见”,只是刚刚能将nmon给运行起来,具体哪块不是很正确还需要下来再看,有时间会再看看,如有需要再补上一篇。
其实很简单的一件事,最好说的好啰嗦,因为怕以后自己看不明白,也生怕别人看不明白,所以就想事无巨细的写,但往往越是想让别人看明白,写的越多,文笔再不好最好就把别人搞晕了,好心办坏事。