*BASH User Commands Ubuntu 10.04.4 LTS Server coreutils
GNU/Linux
UPDATE-RC.D(8)                      sysv-rc                     UPDATE-RC.D(8)



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

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

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

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

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

DESCRIPTION
       update-rc.d updates the System V style init  script  links  /etc/rcrun-
       level.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 R 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 com-
       ment 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  cus-
       tomized  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 pre-
       vent  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 ser-
       vice 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 num-
       ber 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.  Obvi-
       ously,  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 specify-
       ing 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 R 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/rcrun-
       level.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 differ-
       ence 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 run-
       levels.


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-shut-
       down 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
       R Debian Policy Manual ,
       /etc/init.d/skeleton,
       insserv(8), sysv-rc-conf(8), bum(8), init(8).



Debian Project                 14 November 2005                 UPDATE-RC.D(8)