Provided by: sysv-rc_2.88dsf-13.10ubuntu11_all bug

NAME

       update-rc.d - install and remove System-V style init script links

SYNOPSIS

       update-rc.d [-n] [-f] name remove

       update-rc.d [-n] name defaults [NN | SS KK]

       update-rc.d  [-n]  name  start|stop  NN  runlevel [runlevel]...  .  start|stop NN runlevel
              [runlevel]...  . ...

       update-rc.d [-n] name disable|enable [ S|2|3|4|5 ]

DESCRIPTION

       update-rc.d updates the System V style init script  links  /etc/rcrunlevel.d/NNname  whose
       target  is  the  script  /etc/init.d/name.   These  links  are run by init when it changes
       runlevels; they are generally used to start and stop  system  services  such  as  daemons.
       runlevel  is  one  of  the runlevels supported by init, namely, 0123456789S, and NN is the
       two-digit sequence number that determines where in the sequence init will run the scripts.

       This manpage documents only the usage and behaviour of update-rc.d.  For a  discussion  of
       the  System  V  style  init  script  arrangements please see init(8) and the Debian Policy
       Manual.

INSTALLING INIT SCRIPT LINKS

       update-rc.d has two modes of operation for installing scripts into the boot  sequence.   A
       legacy  mode  where  command  line  arguments are used to decide the sequence and runlevel
       configuration, and the default mode where  dependency  and  runlevel  information  in  the
       init.d  script  LSB comment header is used instead.  Such header is required to be present
       in init.d scripts.  See the insserv(8) manual  page  for  details  about  the  LSB  header
       format.   The  boot  sequencing method is decided during installation or upgrades.  During
       upgrades, if there are no loops in  the  dependencies  declared  by  LSB  headers  of  all
       installed  init.d  scripts and no obsolete init.d scripts, the boot system is converted to
       dependency based boot sequencing.  The conversion to dependency based boot  sequencing  is
       one-way.     The    machines    using    the    legacy    mode    will    have    a   file
       /etc/init.d/.legacy-bootordering .

       Packages installing init.d scripts should make sure both methods  work,  for  compatiblity
       with systems where the migration have not been done yet.

       For legacy mode, the following section documents the old behaviour.

       When  run  with  either  the  defaults,  start,  or  stop options, update-rc.d makes links
       /etc/rcrunlevel.d/[SK]NNname that point to the script /etc/init.d/name.

       If any files /etc/rcrunlevel.d/[SK]??name already exist  then  update-rc.d  does  nothing.
       The  program  was written this way so that it will never change an existing configuration,
       which may have been customized by the system administrator.  The program will only install
       links  if  none are present, i.e., if it appears that the service has never been installed
       before.

       A common system administration error is to delete the links with  the  thought  that  this
       will  "disable"  the service, i.e., that this will prevent the service from being started.
       However, if all links have been deleted then the next time the package  is  upgraded,  the
       package's  postinst  script  will  run  update-rc.d again and this will reinstall links at
       their factory default locations.  The correct way to disable services is to configure  the
       service  as  stopped  in all runlevels in which it is started by default.  In the System V
       init system this means renaming the service's symbolic links from S to K.

       If defaults is used then update-rc.d will make links to start  the  service  in  runlevels
       2345  and  to  stop  the  service  in  runlevels  016.  By default all the links will have
       sequence number 20, but this should be overridden if there are dependencies.  For  example
       if  daemon  B depends on A, then A must be started before B and B must be killed before A.
       You accomplish this by supplying two NN arguments. In general, core daemons  should  start
       early  and  be  killed  late,  whilst applications can start late and be killed early. See
       EXAMPLES below.

       The first NN argument supplies the start  sequence  number  and  the  second  NN  argument
       supplies  the  kill  sequence  number.   Kill  scripts  are  called  first, passing a stop
       argument. Then start scripts are called passing a start argument. In  either  case,  calls
       happen in ascending sequence number order.

       Supplying  a  single  NN  argument will use the same number for both start and kill links.
       This is supported for backward compatibility  but  is  discouraged,  as  it  may  lead  to
       inconsistent  settings.  As a rule of thumb, if you increase the start sequence number you
       should also decrease the stop sequence number, and vice-versa.

       As a rule of thumb, the sequence number of the stop link should be 100 minus the  sequence
       number of the start link; this causes services to be stopped in the opposite order to that
       in which they are started.  Obviously, therefore, the default stop sequence number  should
       be  80.  Defaulting to 20, as update-rc.d does, is an old bug that cannot be fixed because
       of the risk of breaking things.

       Instead of defaults one can give one or  more  sets  of  arguments  specifying  particular
       runlevels  in  which to start or stop the service.  Each of these sets of arguments starts
       with the keyword start or stop and a sequence number NN, followed by one or more  runlevel
       numbers.   The  set  is  terminated  by  a  solitary  full  stop character.  When explicit
       specification, rather than defaults, is used there will usually be one start and one  stop
       set.   If  different sequence codes are required in different runlevels then several start
       sets or several stop sets may be specified.  If this is done  and  the  same  runlevel  is
       named  in  multiple  sets  then only the last one counts.  Therefore it is not possible to
       create multiple start or multiple stop links for a service in a single runlevel directory.

       The script /etc/init.d/name must exist before update-rc.d is run to create the links.

REMOVING SCRIPTS

       When  invoked  with  the  remove  option,   update-rc.d   removes   any   links   in   the
       /etc/rcrunlevel.d  directories  to the script /etc/init.d/name.  The script must have been
       deleted already.  If the script is still present then update-rc.d  aborts  with  an  error
       message.

       update-rc.d  is  usually  called  from a package's post-removal script when that script is
       given the purge argument.  Any files in the /etc/rcrunlevel.d  directories  that  are  not
       symbolic links to the script /etc/init.d/name will be left untouched.

DISABLING INIT SCRIPT START LINKS

       When  run  with  the disable [ S|2|3|4|5 ] options, update-rc.d modifies existing runlevel
       links for the script /etc/init.d/name by  renaming  start  links  to  stop  links  with  a
       sequence number equal to the difference of 100 minus the original sequence number.

       When  run  with  the  enable [ S|2|3|4|5 ] options, update-rc.d modifies existing runlevel
       links for the script /etc/init.d/name by  renaming  stop  links  to  start  links  with  a
       sequence  number  equal  to  the positive difference of current sequence number minus 100,
       thus returning to the original sequence number that the script  had  been  installed  with
       before disabling it.

       Both of these options only operate on start runlevel links of S, 2, 3, 4 or 5. If no start
       runlevel is specified after the disable or enable keywords, the  script  will  attempt  to
       modify links in all start runlevels.

OPTIONS

       -n     Don't do anything, just show what we would do.

       -f     Force removal of symlinks even if /etc/init.d/name still exists.

EXAMPLES

       Insert links using the defaults:
          update-rc.d foobar defaults
       The equivalent dependency header would have start and stop
       dependencies on $remote_fs and $syslog, and start in
       runlevels 2-5 and stop in runlevels 0, 1 and 6.
       Equivalent command using explicit argument sets:
          update-rc.d foobar start 20 2 3 4 5 . stop 20 0 1 6 .
       More typical command using explicit argument sets:
          update-rc.d foobar start 30 2 3 4 5 . stop 70 0 1 6 .
       Insert links at default runlevels when B requires A
          update-rc.d script_for_A defaults 80 20
          update-rc.d script_for_B defaults 90 10
       Insert a link to a service that (presumably) will not be needed by any other daemon
          update-rc.d top_level_app defaults 98 02
       Insert links for a script that requires services that start/stop at sequence number 20
          update-rc.d script_depends_on_svc20 defaults 21 19
       Remove all links for a script (assuming foobar has been deleted already):
          update-rc.d foobar remove
       Example of disabling a service:
          update-rc.d -f foobar remove
          update-rc.d foobar stop 20 2 3 4 5 .
       Example of a command for installing a system initialization-and-shutdown script:
          update-rc.d foobar start 45 S . stop 31 0 6 .
       Example of a command for disabling a system initialization-and-shutdown script:
          update-rc.d -f foobar remove
          update-rc.d foobar stop 45 S .

BUGS

       See http://bugs.debian.org/sysv-rc.

FILES

       /etc/init.d/
              The directory containing the actual init scripts.

       /etc/rc?.d/
              The directories containing the links used by init and managed by update-rc.d.

       /etc/init.d/skeleton
              Model for use by writers of init.d scripts.

       /var/lib/sysv-rc/legacy-bootsequence
              Flag indicating the machine is using legacy mode for boot script ordering.

SEE ALSO

       Debian Policy Manual,
       /etc/init.d/skeleton,
       insserv(8), sysv-rc-conf(8), bum(8), init(8).