1、现象
最近为系统开发一个监控工具,最先想到的就是应用erlang自带的os_mon,非常实用,它可以监控每个进程内存使用比例等等信息,但是在实际开发过程中,遇到了不少麻烦。
2、分析过程
启动os_mon,过程非常简单,代码如下:
application:start(os_mon).
注意,os_mon依赖于sasl,如果没有启动sasl,先启动sasl。执行代码,发现代码执行失败了,错误信息如下:
(game4@192.168.1.130)5> os_mon:start([], []).
** exception exit: shutdown
=CRASH REPORT==== 1-Sep-2017::01:01:29 ===
crasher:
initial call: os_mon_sysinfo:init/1
pid: <0.371.0>
registered_name: []
exception exit: {enoent,
[{erlang,open_port,
[{spawn,
"d:/Program Files (x86)/erl5.9.1/lib/os_mon-2.2.9/priv/bin/win32sysinfo.exe"},
[{packet,1}]],
[]},
{os_mon,open_port,2,[{file,"os_mon.erl"},{line,88}]},
{os_mon_sysinfo,start_portprogram,0,
[{file,"os_mon_sysinfo.erl"},{line,111}]},
{os_mon_sysinfo,init,1,
[{file,"os_mon_sysinfo.erl"},{line,60}]},