Erlang Thursday – c:regs/0

今天的Erlang Thursday继续看看c模块并研究 c:regs/0.

c:regs/0 输出当前节点上注册的进程的信息,比如进程的名字,进程的id,执行规约数,以及其他信息。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
c:regs().
%
% ** Registered procs on node nonode@nohost **
% Name Pid Initial Call Reds Msgs
% application_controlle <0.7.0> erlang:apply/2 463 0
% code_server <0.19.0> erlang:apply/2 121202 0
% erl_prim_loader <0.3.0> erlang:apply/2 156994 0
% error_logger <0.6.0> gen_event:init_it/6 220 0
% file_server_2 <0.18.0> file_server:init/1 92 0
% global_group <0.17.0> global_group:init/1 59 0
% global_name_server <0.13.0> global:init/1 51 0
% inet_db <0.16.0> inet_db:init/1 206 0
% init <0.0.0> otp_ring0:start/2 3398 0
% kernel_safe_sup <0.28.0> supervisor:kernel/1 58 0
% kernel_sup <0.11.0> supervisor:kernel/1 49109 0
% rex <0.12.0> rpc:init/1 35 0
% standard_error <0.21.0> erlang:apply/2 9 0
% standard_error_sup <0.20.0> supervisor_bridge:standar 41 0
% user <0.24.0> group:server/3 36 0
% user_drv <0.23.0> user_drv:server/2 1219 0
%
% ** Registered ports on node nonode@nohost **
% Name Id Command
% ok

尽管这个函数的输出没有observer函数提供的图形界面漂亮,但是它是一个有用的工具,在你无法运行observer函数来获得图形界面的时候能够帮助你得到这些进程是什么进程以及这些进程在做什么。

c模块还提供了一个 c:nregs/0 函数,它展示本节点以及与本节点联通的所有节点的所有注册进程的信息。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
node().
% 'foo@127.0.0.1'
nodes().
% ['bar@127.0.0.1']
c:nregs().
%
% ** Registered procs on node 'foo@127.0.0.1' **
% Name Pid Initial Call Reds Msgs
% application_controlle <0.7.0> erlang:apply/2 463 0
% auth <0.19.0> auth:init/1 880 0
% code_server <0.25.0> erlang:apply/2 122302 0
% erl_epmd <0.18.0> erl_epmd:init/1 268 0
% erl_prim_loader <0.3.0> erlang:apply/2 163458 0
% error_logger <0.6.0> gen_event:init_it/6 264 0
% file_server_2 <0.24.0> file_server:init/1 92 0
% global_group <0.23.0> global_group:init/1 67 0
% global_name_server <0.13.0> global:init/1 339 0
% inet_db <0.16.0> inet_db:init/1 255 0
% init <0.0.0> otp_ring0:start/2 5405 0
% kernel_safe_sup <0.34.0> supervisor:kernel/1 58 0
% kernel_sup <0.11.0> supervisor:kernel/1 57226 0
% net_kernel <0.20.0> net_kernel:init/1 792 0
% net_sup <0.17.0> supervisor:erl_distributi 285 0
% rex <0.12.0> rpc:init/1 35 0
% standard_error <0.27.0> erlang:apply/2 9 0
% standard_error_sup <0.26.0> supervisor_bridge:standar 41 0
% user <0.30.0> group:server/3 36 0
% user_drv <0.29.0> user_drv:server/2 1661 0
%
% ** Registered ports on node 'foo@127.0.0.1' **
% Name Id Command
%
% ** Registered procs on node 'bar@127.0.0.1' **
% Name Pid Initial Call Reds Msgs
% application_controlle <6108.7.0> erlang:apply/2 463 0
% auth <6108.19.0> auth:init/1 880 0
% code_server <6108.25.0> erlang:apply/2 124588 0
% erl_epmd <6108.18.0> erl_epmd:init/1 268 0
% erl_prim_loader <6108.3.0> erlang:apply/2 164400 0
% error_logger <6108.6.0> gen_event:init_it/6 301 0
% file_server_2 <6108.24.0> file_server:init/1 92 0
% global_group <6108.23.0> global_group:init/1 67 0
% global_name_server <6108.13.0> global:init/1 341 0
% inet_db <6108.16.0> inet_db:init/1 255 0
% inet_gethost_native <6108.42.0> inet_gethost_native:serve 83 0
% inet_gethost_native_s <6108.41.0> supervisor_bridge:inet_ge 41 0
% init <6108.0.0> otp_ring0:start/2 5515 0
% kernel_safe_sup <6108.34.0> supervisor:kernel/1 127 0
% kernel_sup <6108.11.0> supervisor:kernel/1 57226 0
% net_kernel <6108.20.0> net_kernel:init/1 796 0
% net_sup <6108.17.0> supervisor:erl_distributi 285 0
% rex <6108.12.0> rpc:init/1 1302 0
% standard_error <6108.27.0> erlang:apply/2 9 0
% standard_error_sup <6108.26.0> supervisor_bridge:standar 41 0
% user <6108.30.0> group:server/3 36 0
% user_drv <6108.29.0> user_drv:server/2 2801 0
%
% ** Registered ports on node 'bar@127.0.0.1' **
% Name Id Command
% ok

原文链接: https://www.proctor-it.com/erlang-thursday-c-regs-0/