An Erlang runtime system is started with the command erl
:
% erl Erlang (BEAM) emulator version 5.2.3.5 [hipe] [threads:0] Eshell V5.2.3.5 (abort with ^G) 1>
erl
understands a number of command line arguments, see
erl(1)
. A number of them are also described in this
chapter.
Application programs can access the values of the command line
arguments by calling one of the functions
init:get_argument(Key)
, or init:get_arguments()
.
See init(3)
.
The runtime system can be halted by calling halt/0,1
.
See erlang(3)
.
The module init
contains function for restarting,
rebooting and stopping the runtime system. See init(3)
.
init:restart() init:reboot() init:stop()
Also, the runtime system will terminate if the Erlang shell is terminated.
The runtime system is started using a boot script. The boot script contains instructions on which code to load and which processes and applications to start.
A boot script file has the extension .script
.
The runtime system uses a binary version of the script. This
binary boot script file has the extension .boot
.
Which boot script to use is specified by the command line flag
-boot
. The extension .boot
should be omitted.
Example, using the boot script start_all.boot
:
% erl -boot start_all
If no boot script is specified, it defaults to
ROOT/bin/start
, see Default Boot Scripts below.
The command line flag -init_debug
makes the init
process write some debug information while interpreting the boot
script:
% erl -init_debug {progress,preloaded} {progress,kernel_load_completed} {progress,modules_loaded} {start,heart} {start,error_logger} ...
See script(4)
for a detailed description of the syntax
and contents of the boot script.
Erlang/OTP comes with two boot scripts:
start_clean.boot
start_sasl.boot
Which of start_clean
and start_sasl
to use as
default is decided by the user when installing Erlang/OTP using
Install
. The user is asked "Do you want to use a minimal
system startup instead of the SASL startup". If the answer is
yes, then start_clean
is used, otherwise
start_sasl
is used. A copy of the selected boot script
is made, named start.boot
and placed in
the ROOT/bin
directory.
It is sometimes useful or necessary to create a user-defined boot script. This is true especially when running Erlang in embedded mode, see Code Loading Strategy.
It is possible to write a boot script manually.
The recommended way to create a boot script, however, is to
generate the boot script from a release resource file
Name.rel
, using the function
systools:make_script/1,2
. This requires that the source
code is structured as applications according to the OTP design
principles. (The program does not have to be started in terms of
OTP applications but can be plain Erlang).
Read more about .rel
files in OTP Design Principles and
rel(4)
.
The binary boot script file Name.boot
is generated from
the boot script file Name.script
using the function
systools:script2boot(File)
.
The runtime system can be started in either embedded or
interactive mode. Which one is decided by the command
line flag -mode
.
% erl -mode embedded
Default mode is interactive
.
Initially, the code path consists of the current
working directory and all object code directories under
ROOT/lib
, where ROOT
is the installation directory
of Erlang/OTP. Directories can be named Name[-Vsn]
and
the code server, by default, chooses the directory with
the highest version number among those which have the same
Name
. The -Vsn
suffix is optional. If an
ebin
directory exists under the Name[-Vsn]
directory, it is this directory which is added to the code path.
The code path can be extended by using the command line flags
-pa Directories
and -pz Directories
. These will add
Directories
to the head or end of the code path,
respectively. Example
% erl -pa /home/arne/mycode
The code server module code
contains a number of
functions for modifying and checking the search path, see
code(3)
.
The following file types are defined in Erlang/OTP:
File Type | File Name/Extension | Documented in |
module |
.erl
|
Erlang Reference Manual |
include file |
.hrl
|
Erlang Reference Manual |
release resource file |
.rel
|
rel(4)
|
application resource file |
.app
|
app(4)
|
boot script |
.script
|
script(4)
|
binary boot script |
.boot
|
- |
configuration file |
.config
|
config(4)
|
application upgrade file |
.appup
|
appup(4)
|
release upgrade file |
relup
|
relup(4)
|