1epmd(1) User Commands epmd(1)
2
3
4
6 epmd - Erlang Port Mapper Daemon
7
9 epmd [-d|-debug] [DbgExtra...] [-address Addresses] [-port No] [-dae‐
10 mon] [-relaxed_command_check]:
11 Starts the port mapper daemon.
12
13 epmd [-d|-debug] [-port No] [-names|-kill|-stop Name]:
14 Communicates with a running port mapper daemon.
15
16 This daemon acts as a name server on all hosts involved in distributed
17 Erlang computations. When an Erlang node starts, the node has a name
18 and it obtains an address from the host OS kernel. The name and address
19 are sent to the epmd daemon running on the local host. In a TCP/IP en‐
20 vironment, the address consists of the IP address and a port number.
21 The node name is an atom on the form of Name@Node. The job of the epmd
22 daemon is to keep track of which node name listens on which address.
23 Hence, epmd maps symbolic node names to machine addresses.
24
25 The TCP/IP epmd daemon only keeps track of the Name (first) part of an
26 Erlang node name. The Host part (whatever is after the @) is implicit
27 in the node name where the epmd daemon was contacted, as is the IP ad‐
28 dress where the Erlang node can be reached. Consistent and correct TCP
29 naming services are therefore required for an Erlang network to func‐
30 tion correctly.
31
32 Note:
33 On Windows the maximum number of nodes allowed in one epmd instance is
34 60. This is because of limitations in the current implementation. If
35 you need more nodes, you should look into using and erlang based epmd
36 implementation such as Erlang EPMD.
37
38
39 Starting the port mapper daemon:
40 The daemon is started automatically by command erl(1) if the node
41 is to be distributed and no running instance is present. If auto‐
42 matically launched environment variables must be used to change the
43 behavior of the daemon; see section Environment Variables.
44
45 If argument -daemon is not specified, epmd runs as a normal program
46 with the controlling terminal of the shell in which it is started.
47 Normally, it is to be run as a daemon.
48
49 Regular startup options are described in section Regular Options.
50
51 The DbgExtra options are described in section DbgExtra Options.
52
53 Communicating with a running port mapper daemon:
54 Communicating with the running epmd daemon by the epmd program is
55 done primarily for debugging purposes.
56
57 The different queries are described in section Interactive options.
58
60 These options are available when starting the name server. The name
61 server is normally started automatically by command erl(1) (if not al‐
62 ready available), but it can also be started at system startup.
63
64 -address List:
65 Lets this instance of epmd listen only on the comma-separated list
66 of IP addresses and on the loopback address (which is implicitly
67 added to the list if it has not been specified). This can also be
68 set using environment variable ERL_EPMD_ADDRESS; see section Envi‐
69 ronment Variables.
70
71 -port No:
72 Lets this instance of epmd listen to another TCP port than default
73 4369. This can also be set using environment variable
74 ERL_EPMD_PORT; see section Environment Variables.
75
76 -d | -debug:
77 Enables debug output. The more -d flags specified, the more debug
78 output you will get (to a certain limit). This option is most use‐
79 ful when the epmd daemon is not started as a daemon.
80
81 -daemon:
82 Starts epmd detached from the controlling terminal. Logging ends up
83 in syslog when available and correctly configured. If the epmd dae‐
84 mon is started at boot, this option is definitely to be used. It is
85 also used when command erl automatically starts epmd.
86
87 -relaxed_command_check:
88 Starts the epmd program with relaxed command checking (mostly for
89 backward compatibility). This affects the following:
90
91 * With relaxed command checking, the epmd daemon can be killed from
92 the local host with, for example, command epmd -kill even if ac‐
93 tive nodes are registered. Normally only daemons with an empty
94 node database can be killed with epmd -kill.
95
96 * Command epmd -stop (and the corresponding messages to epmd, as
97 can be specified using erl_interface:ei(3)) is normally always
98 ignored. This because it can cause a strange situation where two
99 nodes of the same name can be alive at the same time. A node un‐
100 registers itself by only closing the connection to epmd, which is
101 why command stop was only intended for use in debugging situa‐
102 tions.
103
104 With relaxed command checking enabled, you can forcibly unregis‐
105 ter live nodes.
106
107 Relaxed command checking can also be enabled by setting environment
108 variable ERL_EPMD_RELAXED_COMMAND_CHECK before starting epmd.
109
110 Use relaxed command checking only on systems with very limited in‐
111 teractive usage.
112
114 Note:
115 These options are only for debugging and testing epmd clients. They are
116 not to be used in normal operation.
117
118
119 -packet_timeout Seconds:
120 Sets the number of seconds a connection can be inactive before epmd
121 times out and closes the connection. Defaults to 60.
122
123 -delay_accept Seconds:
124 To simulate a busy server, you can insert a delay between when epmd
125 gets notified that a new connection is requested and when the con‐
126 nection gets accepted.
127
128 -delay_write Seconds:
129 Also a simulation of a busy server. Inserts a delay before a reply
130 is sent.
131
133 These options make epmd run as an interactive command, displaying the
134 results of sending queries to an already running instance of epmd. The
135 epmd contacted is always on the local node, but option -port can be
136 used to select between instances if several are running using different
137 ports on the host.
138
139 -port No:
140 Contacts the epmd listening on the specified TCP port number (de‐
141 fault 4369). This can also be set using environment variable
142 ERL_EPMD_PORT; see section Environment Variables.
143
144 -names:
145 Lists names registered with the currently running epmd.
146
147 -kill:
148 Kills the currently running epmd.
149
150 Killing the running epmd is only allowed if epmd -names shows an
151 empty database or if -relaxed_command_check was specified when the
152 running instance of epmd was started.
153
154 Notice that -relaxed_command_check is specified when starting the
155 daemon that is to accept killing when it has live nodes registered.
156 When running epmd interactively, -relaxed_command_check has no ef‐
157 fect. A daemon that is started without relaxed command checking
158 must be killed using, for example, signals or some other OS-spe‐
159 cific method if it has active clients registered.
160
161 -stop Name:
162 Forcibly unregisters a live node from the epmd database.
163
164 This command can only be used when contacting epmd instances
165 started with flag -relaxed_command_check.
166
167 Notice that relaxed command checking must enabled for the epmd dae‐
168 mon contacted. When running epmd interactively, -relaxed_com‐
169 mand_check has no effect.
170
172 ERL_EPMD_ADDRESS:
173 Can be set to a comma-separated list of IP addresses, in which case
174 the epmd daemon will listen only on the specified address(es) and
175 on the loopback address (which is implicitly added to the list if
176 it has not been specified). The default behavior is to listen on
177 all available IP addresses.
178
179 ERL_EPMD_PORT:
180 Can contain the port number epmd will use. The default port will
181 work fine in most cases. A different port can be specified to allow
182 several instances of epmd, representing independent clusters of
183 nodes, to co-exist on the same host. All nodes in a cluster must
184 use the same epmd port number.
185
186 ERL_EPMD_RELAXED_COMMAND_CHECK:
187 If set before start, the epmd daemon behaves as if option -re‐
188 laxed_command_check was specified at startup. Consequently, if this
189 option is set before starting the Erlang virtual machine, the auto‐
190 matically started epmd accepts the -kill and -stop commands without
191 restrictions.
192
194 On some operating systems syslog will be used for error reporting when
195 epmd runs as a daemon. To enable the error logging, you must edit the
196 /etc/syslog.conf file and add an entry:
197
198 !epmd
199 *.*<TABs>/var/log/epmd.log
200
201
202 where <TABs> are at least one real tab character. Spaces are silently
203 ignored.
204
206 The epmd daemon accepts messages from both the local host and remote
207 hosts. However, only the query commands are answered (and acted upon)
208 if the query comes from a remote host. It is always an error to try to
209 register a node name if the client is not a process on the same host as
210 the epmd instance is running on. Such requests are considered hostile
211 and the connection is closed immediately.
212
213 The following queries are accepted from remote nodes:
214
215 * Port queries, that is, on which port the node with a specified name
216 listens
217
218 * Name listing, that is, gives a list of all names registered on the
219 host
220
221 To restrict access further, firewall software must be used.
222
223
224
225Ericsson AB erts 12.1.5 epmd(1)