Today’s Erlang Thursday continues looking at the c
module, and looks at c:regs/0.
c:regs/0
displays information about the registered processes on the current node, such as process name, process id, the number of reductions performed, and more.
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
While this is not quite as nice as what is provided by the observer
GUI, this is a useful tool to be able to get an idea what what the processes are, and what they are doing when you are not able to have the observer
GUI running.
The c
module also contains a function c:nregs/0
which displays information about all processes for all of the nodes that the node it is run from knows about.
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
–Proctor