kernel(7)


NAME

   kernel - The Kernel application.

DESCRIPTION

   The  Kernel  application  has  all the code necessary to run the Erlang
   runtime system: file servers, code servers, and so on.

   The  Kernel  application  is  the  first  application  started.  It  is
   mandatory  in  the  sense  that  the minimal system based on Erlang/OTP
   consists of Kernel and STDLIB. Kernel contains the following functional
   areas:

     * Start,   stop,  supervision,  configuration,  and  distribution  of
       applications

     * Code loading

     * Logging

     * Error logging

     * Global name service

     * Supervision of Erlang/OTP

     * Communication with sockets

     * Operating system interface

ERROR LOGGER EVENT HANDLERS

   Two standard error logger event handlers  are  defined  in  the  Kernel
   application. These are described in error_logger(3erl).

CONFIGURATION

   The  following  configuration  parameters  are  defined  for the Kernel
   application. For more information about configuration  parameters,  see
   file app(5).

     browser_cmd = string() | {M,F,A}:
       When  pressing the Help button in a tool such as Debugger, the help
       text (an HTML file File) is by  default  displayed  in  a  Netscape
       browser, which is required to be operational. This parameter can be
       used to change the command for how to  display  the  help  text  if
       another  browser than Netscape is preferred, or if another platform
       than Unix or Windows is used.

       If set to a string Command, the command "Command File" is evaluated
       using os:cmd/1.

       If   set   to  a  module-function-args  tuple,  {M,F,A},  the  call
       apply(M,F,[File|A]) is evaluated.

     distributed = [Distrib]:
       Specifies which applications that  are  distributed  and  on  which
       nodes they are allowed to execute. In this parameter:

       * Distrib = {App,Nodes} | {App,Time,Nodes}

       * App = atom()

       * Time = integer()>0

       * Nodes = [node() | {node(),...,node()}]

       The parameter is described in application:load/2.

     dist_auto_connect = Value:
       Specifies when nodes are automatically connected. If this parameter
       is not specified, a node is  always  automatically  connected,  for
       example,  when  a  message is to be sent to that node. Value is one
       of:

       never:
         Connections are never automatically  established,  they  must  be
         explicitly connected. See net_kernel(3erl).

       once:
         Connections  are  established  automatically,  but  only once per
         node. If a node goes  down,  it  must  thereafter  be  explicitly
         connected. See net_kernel(3erl).

     permissions = [Perm]:
       Specifies  the  default  permission  for applications when they are
       started. In this parameter:

       * Perm = {ApplName,Bool}

       * ApplName = atom()

       * Bool = boolean()

       Permissions are described in application:permit/2.

     error_logger = Value:
       Value is one of:

       tty:
         Installs the standard event handler, which prints  error  reports
         to stdio. This is the default option.

       {file, FileName}:
         Installs  the  standard event handler, which prints error reports
         to file FileName, where FileName is a string.

       false:
         No  standard  event  handler  is  installed,  but  the   initial,
         primitive  event  handler is kept, printing raw event messages to
         tty.

       silent:
         Error logging is turned off.

     error_logger_format_depth = Depth:

       Can be used to limit the size of  the  formatted  output  from  the
       error logger event handlers.

     Note:
     This  configuration  parameter  was  introduced  in  OTP  18.1 and is
     experimental. Based on user feedback, it can be changed  or  improved
     in  future  releases, for example, to gain better control over how to
     limit the size of the formatted output. We have no  plans  to  remove
     this new feature entirely, unless it turns out to be useless.

       Depth is a positive integer representing the maximum depth to which
       terms are printed by the error logger event  handlers  included  in
       OTP. This configuration parameter is used by the two event handlers
       defined by the Kernel application and the two event handlers in the
       SASL application. (If you have implemented your own error handlers,
       this configuration parameter has no effect on them.)

       Depth is used as  follows:  Format  strings  passed  to  the  event
       handlers  are rewritten. The format controls ~p and ~w are replaced
       with ~P and ~W, respectively,  and  Depth  is  used  as  the  depth
       parameter. For details, see io:format/2 in STDLIB.

     Note:
     A  reasonable  starting  value  for Depth is 30. We recommend to test
     crashing various processes in your application, examine the logs from
     the crashes, and then increase or decrease the value.

     global_groups = [GroupTuple]:

       Defines global groups, see global_group(3erl). In this parameter:

       * GroupTuple  =  {GroupName,  [Node]}  |  {GroupName,  PublishType,
         [Node]}

       * GroupName = atom()

       * PublishType = normal | hidden

       * Node = node()

     inet_default_connect_options = [{Opt, Val}]:
       Specifies default options for connect sockets, see inet(3erl).

     inet_default_listen_options = [{Opt, Val}]:
       Specifies default options for  listen  (and  accept)  sockets,  see
       inet(3erl).

     {inet_dist_use_interface, ip_address()}:
       If  the  host  of  an Erlang node has many network interfaces, this
       parameter specifies which one to listen on. For the type definition
       of ip_address(), see inet(3erl).

     {inet_dist_listen_min, First} and {inet_dist_listen_max, Last}:
       Defines  the  First..Last  port  range for the listener socket of a
       distributed Erlang node.

     {inet_dist_listen_options, Opts}:

       Defines a list of extra socket options to be used when opening  the
       listening    socket    for   a   distributed   Erlang   node.   See
       gen_tcp:listen/2.

     {inet_dist_connect_options, Opts}:

       Defines a list of extra socket options to be used  when  connecting
       to other distributed Erlang nodes. See gen_tcp:connect/4.

     inet_parse_error_log = silent:
       If set, no error_logger messages are generated when erroneous lines
       are found and skipped in the various Inet configuration files.

     inetrc = Filename:
       The name (string) of an Inet user configuration file. For  details,
       see section Inet Configuration in the ERTS User's Guide.

     net_setuptime = SetupTime:

       SetupTime  must be a positive integer or floating point number, and
       is interpreted  as  the  maximum  allowed  time  for  each  network
       operation  during  connection  setup  to  another  Erlang node. The
       maximum allowed value is 120. If higher values are  specified,  120
       is  used. Default is 7 seconds if the variable is not specified, or
       if the value is incorrect (for example, not a number).

       Notice that this value does not limit the  total  connection  setup
       time,  but  rather  each  individual  network  operation during the
       connection setup and handshake.

     net_ticktime = TickTime:

       Specifies the  net_kernel  tick  time.  TickTime  is  specified  in
       seconds.  Once  every  TickTime/4  second,  all connected nodes are
       ticked (if anything else is written  to  a  node).  If  nothing  is
       received  from  another  node within the last four tick times, that
       node is considered to be down. This ensures that nodes that are not
       responding,  for reasons such as hardware errors, are considered to
       be down.

       The time T, in which a node that is not responding is detected,  is
       calculated as MinT < T < MaxT, where:

     MinT = TickTime - TickTime / 4
     MaxT = TickTime + TickTime / 4

       TickTime defaults to 60 (seconds). Thus, 45 < T < 75 seconds.

       Notice  that  all communicating nodes are to have the same TickTime
       value specified.

       Normally, a terminating node is detected immediately.

     shutdown_timeout = integer() | infinity:
       Specifies the time application_controller waits for an  application
       to   terminate   during   node  shutdown.  If  the  timer  expires,
       application_controller brutally  kills  application_master  of  the
       hanging application. If this parameter is undefined, it defaults to
       infinity.

     sync_nodes_mandatory = [NodeName]:
       Specifies which other nodes that must be alive  for  this  node  to
       start  properly. If some node in the list does not start within the
       specified time, this node does not start either. If this  parameter
       is undefined, it defaults to [].

     sync_nodes_optional = [NodeName]:
       Specifies  which  other  nodes  that  can be alive for this node to
       start properly. If some node in this list does not start within the
       specified  time,  this  node  starts  anyway.  If this parameter is
       undefined, it defaults to the empty list.

     sync_nodes_timeout = integer() | infinity:
       Specifies the time (in milliseconds) that this node waits  for  the
       mandatory  and  optional  nodes  to  start.  If  this  parameter is
       undefined,  no  node  synchronization  is  performed.  This  option
       ensures that global is synchronized.

     start_dist_ac = true | false:
       Starts  the dist_ac server if the parameter is true. This parameter
       is to be set to true for systems using distributed applications.

       Defaults to false. If this parameter is undefined,  the  server  is
       started if parameter distributed is set.

     start_boot_server = true | false:
       Starts   the   boot_server   if   the   parameter   is   true  (see
       erl_boot_server(3erl)). This parameter is to be set to true  in  an
       embedded system using this service.

       Defaults to false.

     boot_server_slaves = [SlaveIP]:
       If   configuration   parameter   start_boot_server  is  true,  this
       parameter can be used to initialize  boot_server  with  a  list  of
       slave IP addresses:

       SlaveIP         =         string()         |         atom         |
       {integer(),integer(),integer(),integer()},

       where 0 <= integer() <=255.

       Examples of SlaveIP in atom, string, and tuple form:

       '150.236.16.70', "150,236,16,70", {150,236,16,70}.

       Defaults to [].

     start_disk_log = true | false:
       Starts  the  disk_log_server  if  the  parameter   is   true   (see
       disk_log(3erl)). This parameter is to be set to true in an embedded
       system using this service.

       Defaults to false.

     start_pg2 = true | false:

       Starts the pg2 server (see pg2(3erl)) if  the  parameter  is  true.
       This parameter is to be set to true in an embedded system that uses
       this service.

       Defaults to false.

     start_timer = true | false:
       Starts the timer_server if the parameter is true (see timer(3erl)).
       This  parameter  is  to  be set to true in an embedded system using
       this service.

       Defaults to false.

     shutdown_func = {Mod, Func}:
       Where:

       * Mod = atom()

       * Func = atom()

       Sets a function that application_controller calls when it starts to
       terminate. The function is called as Mod:Func(Reason), where Reason
       is the terminate reason for  application_controller,  and  it  must
       return  as soon as possible for application_controller to terminate
       properly.

SEE ALSO

   app(5),      application(3erl),       code(3erl),       disk_log(3erl),
   erl_boot_server(3erl),  erl_ddll(3erl), error_logger(3erl), file(3erl),
   global(3erl),     global_group(3erl),     heart(3erl),      inet(3erl),
   net_kernel(3erl),   os(3erl),  pg2(3erl),  rpc(3erl),  seq_trace(3erl),
   user(3erl), timer(3erl)





Opportunity


Personal Opportunity - Free software gives you access to billions of dollars of software at no cost. Use this software for your business, personal use or to develop a profitable skill. Access to source code provides access to a level of capabilities/information that companies protect though copyrights. Open source is a core component of the Internet and it is available to you. Leverage the billions of dollars in resources and capabilities to build a career, establish a business or change the world. The potential is endless for those who understand the opportunity.

Business Opportunity - Goldman Sachs, IBM and countless large corporations are leveraging open source to reduce costs, develop products and increase their bottom lines. Learn what these companies know about open source and how open source can give you the advantage.





Free Software


Free Software provides computer programs and capabilities at no cost but more importantly, it provides the freedom to run, edit, contribute to, and share the software. The importance of free software is a matter of access, not price. Software at no cost is a benefit but ownership rights to the software and source code is far more significant.


Free Office Software - The Libre Office suite provides top desktop productivity tools for free. This includes, a word processor, spreadsheet, presentation engine, drawing and flowcharting, database and math applications. Libre Office is available for Linux or Windows.





Free Books


The Free Books Library is a collection of thousands of the most popular public domain books in an online readable format. The collection includes great classical literature and more recent works where the U.S. copyright has expired. These books are yours to read and use without restrictions.


Source Code - Want to change a program or know how it works? Open Source provides the source code for its programs so that anyone can use, modify or learn how to write those programs themselves. Visit the GNU source code repositories to download the source.





Education


Study at Harvard, Stanford or MIT - Open edX provides free online courses from Harvard, MIT, Columbia, UC Berkeley and other top Universities. Hundreds of courses for almost all major subjects and course levels. Open edx also offers some paid courses and selected certifications.


Linux Manual Pages - A man or manual page is a form of software documentation found on Linux/Unix operating systems. Topics covered include computer programs (including library and system calls), formal standards and conventions, and even abstract concepts.