nmon的源码编译需要两个文件: lnmon*.c 和 makefile.nmon*,其中*表示的是你想编译的版本号
- 获得lnmon*.c文件和makefile.nmon*的方式
首先进入source code页面,找到lnmon*.c下载链接,点击下载
source code页面: http://nmon.sourceforge.net/pmwiki.php?n=Site.CompilingNmon
对于16h版本即是lmon16h.c和makefile.nmon16h 。
- 更改文件名称
mv lnmon*.c lmon.c
mv makefile.nmon\* makefile
对于16h版本即是
mv lnmon16h.c lmon.c
mv makefile.nmon16h makefile
- 修改makfile文件
只需要修改一处,先看一下
nmon_x86_rhel7: $(FILE)
cc -o nmon_x86_rhel7 $(FILE) $(CFLAGS) $(LDFLAGS) -D KERNEL_2_6_18 -D X86 -D RHEL7
nmon_x86_rhel70: $(FILE)
cc -o nmon_x86_rhel70 $(FILE) $(CFLAGS) $(LDFLAGS) -D KERNEL_2_6_18 -D X86 -D RHEL7
nmon_x86_rhel71: $(FILE)
cc -o nmon_x86_rhel71 $(FILE) $(CFLAGS) $(LDFLAGS) -D KERNEL_2_6_18 -D X86 -D RHEL7
nmon_x86_rhel72: $(FILE)
cc -o nmon_x86_rhel72 $(FILE) $(CFLAGS) $(LDFLAGS) -D KERNEL_2_6_18 -D X86 -D RHEL7
nmon_x86_rhel45: $(FILE)
cc -o nmon_x86_rhel45 $(FILE) $(CFLAGS) $(LDFLAGS) -D X86
上面几行是从makefile中的部分截取,它们是两行一组。可以在文件里面搜一下有没有符合当前cpu架构和linux发行版的组,有的话不需要修改。如果当前组中没有精确符合要求的组,则要从里面找出一组最接近的。一般来说,debian和ubuntu是同源的,红帽(redhat)和centos,fedora是同源的;举例来说,假设当前服务器的cpu架构是x86_64,系统是CentOS7.4。假如当前的makefile中没有该组,思路是:先查找架构x86_64,以它为关键字搜索,将搜索到的结果看个遍,结果发现没有nmon_x86_64_centos74但是有nmon_x86_rhel72(见上面截取的倒数第二行)。因此复制:
nmon_x86_rhel72: $(FILE)
cc -o nmon_x86_rhel72 $(FILE) $(CFLAGS) $(LDFLAGS) -D KERNEL_2_6_18 -D X86 -D RHEL7
这两行,然后新建组,并修改为如下内容:
#### CentOS
nmon_x86_64_centos74: $(FILE)
cc -o nmon_x86_64_centos74 $(FILE) $(CFLAGS) $(LDFLAGS) -D KERNEL_2_6_18 -D X86 -D RHEL7
保存退出即可
-
安装依赖包
yum install gcc ncurses ncurses-dev make -y
-
编译(注:lmon.c和makefile需位于同一目录)
make nmon_x86_64_centos74
稍等生成名为“nmon_架构名_版本名”的文件,如nnmon_x86_64_centos74
- 此时我们执行./nmon_x86_64_centos74就可以运行了,但是一般都是将该文件放到PATH路径下,通常是/usr/local/bin下并改名为nmon
cp nmon_x86_64_centos74 /usr/local/bin/nmon
注意,如果运行失败,可尝试给文件赋予可执行权限
chmod +x /usr/local/bin/nmon