Unix & Linux Stack Exchange is a question and answer site for users of Linux, FreeBSD and other Un*x-like operating systems. It's 100% free, no registration required.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I'm running Ubuntu where I have the directories /etc/rc0.d, /etc/rc1.d, /etc/rc2.d, ..., /etc/rc6.d.

Example files from my machine:

directory      example symlinks in the dir
/etc/rc1.d:    K76dovecot, K77ntp
/etc/rc2.d:    S23ntp, S24dovecot
/etc/rc3.d:    S23ntp, S24dovecot
/etc/rc4.d:    S23ntp, S24dovecot
/etc/rc5.d:    S23ntp, S24dovecot


  1. What's the purpose of the multiple "rc" directories?
  2. Why did Ubuntu install duplicates of dovecot and ntp into all the directories except rc0.d and rc6.d?
  3. If they are specified multiple times like above, are they actually executed multiple times?
  4. Can you tell from the above in what order dovecot and ntp will execute at startup?
  5. What is the proper way to tell Ubuntu to always execute ntp before dovecot at startup?
share|improve this question
up vote 10 down vote accepted
  1. These are runlevels and are a System V-style initiation used by most *NIX systems (with the notable exception of systemd-based systems). When booting the kernel/user decides what runlevel should it run and execute only that runlevel. Meaning that depending the runlevel you can boot up with a different set of programs. There are runlevels for halt and reboot too, but since you are focusing on the startup part, let's ignore them for now.
  2. Since only one runlevel is executed at boot, some programs should/want to start/stop at different runlevels with different or same parameters in the same or different order (not all runlevels are the same in all OS's). But Ubuntu copy runlevels 3-5 from 2, that's why they are the same.
  3. No. runlevels are executed just once in startup or when you change runlevel.
  4. ntp scripts should execute first then dovecot in runlevel 2-5, not the case for runlevel 1. The ordinal number in the script names (S23ntp) states the order of execution. So, it all depends of the runlevel you are using.
  5. It depends of the Distro but in the particular case of Ubuntu you can add your script to runlevel 1 and 2.

More info in the Wikipedia article about Ubuntu runlevels

share|improve this answer
so if I put script to all RC.X dirs, it will execute few times or not? – Flash Thunder May 13 at 12:22
@FlashThunder no. – Braiam May 13 at 14:27

As others have noted, the answer is all about runlevels which are basically the modes of operation of an operating system. On Linux, these are usually:

ID  Name                               Description
0   Halt                               Shuts down the system.
1   Single-user Mode                   Mode for administrative tasks.
2   Multi-user Mode                    Does not configure network interfaces and 
                                       does not export networks services.
3   Multi-user Mode with Networking    Starts the system normally.
4   Not used/User-definable            For special purposes.
5   Start the system normally with 
    with GUI                           As runlevel 3 + display manager.
6   Reboot                             Reboots the system.

So, each of the rcX directories contains the scripts that should be run at the different runlevels. These scripts are not installed multiple times, each entry under one of the rcXs is just a link to the real script which is normally in the /etc/init.d directory:

$ ls -l /etc/rc5.d/S22cron
lrwxrwxrwx 1 root root 14 Jan 14  2013 /etc/rc5.d/S22cron -> ../init.d/cron

Now, the naming scheme is also quite simple. Scripts whose name begins with an S will be started at the runlevel in question while those whose name begins with K will be killed. Notice that all the scripts in rc6.d, the reboot runlevel, start with K. That's because they should all be stoped for a reboot and nothing should be started. The numbers refer to the running order of the scripts. Those with smaller numbers will be run before those with higher numbers. So, in your specific example, S23ntp will be run (started in this case) before S24dovecot.

share|improve this answer

1) The multiple rcX.d directories specify what services to start or stop during the 'X' runlevel.

2) rc0.d is for runlevel 0 which is shutdown. rc6.d is for reboot. Rest all are for different runlevels (2 - 5). The S stands for start and K for Kill. These are essentially links to the original scripts in /etc/rc.d. The numbers after S/K are the priority by which the services will be started/Killed.

3) Yes if they are specified multiple times the start/kill script will be run multiple times. But no one wants to do that.

4) Looking at the priority numbers, ntp service will be started first followed by dovecot.

5) The 4th point's the way.

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.