≡ Menu

Linux Changing Run Levels

A question from my email bag:

How do changing run levels affect us or our users?


If you are moving to higher run levels, you may make additional services available to users, while moving to a lower run level will causes to services (daemons) to become unavailable. On the production server run level 3 is the normally used and rarely changed. However, some administrative tasks require the administrator to move system to run level 1 i.e single user mode.

Linux Find Out Current Run Level Command

Type the following command:
$ who -r
Sample outputs:

         run-level 2  2011-10-12 05:38   

Linux Change Run Level Command

Use the init command to change rune levels:
# init 1

Runlevel And Its Usage

The Init is the parent of all processes with PID # 1. Its primary purpose is to create processes from a script stored in the file /etc/inittab file. This file usually has entries which cause init to spawn gettys on each line that users can log in. A runlevel is nothing but a software configuration of the Linux system which allows only a selected group of processes to exist. The processes spawned by init for each of these runlevels are defined in the /etc/inittab file. Init can be in one of eight runlevels as follows:

  • Runlevel 0 is halt
  • Runlevel 1 is single-user
  • Runlevels 2-5 are multi-user (some distro uses RUN level 5 to start X [KDE/Gnome])
  • Runlevel 6 is for rebooting system

For example, typing the init 3 command will move system to run level 3:

# init 3

On most Linux server system default run level is 3 and on most Linux Desktop system default run level is 5. The default run level is defined by the initdefault line at the top of /etc/inittab file under CentOS / Fedora / Redhat / RHEL / Debian Linux. To change the default run level, edit /etc/inittab file, and edit entry initdefault:

# vi /etc/inittab

Set initdefault to 5, so that you can boot to X next time when Linux comes up:

id:5:initdefault:

Save and close the file. Reboot the system to see changes:
# reboot

More About getty

getty is the program which opens a tty port, prompts for a login name and password (via /bin/login command). Your console displays a login/password prompt at run levels 1 through 6. You can use ALT+F1…ALT+F6 keys to switch console (use CTRL+ALT+F1..F6 under X windows).

SSH logins are handled by OenSSH (sshd) server which starts at run level 2/3. KDE/Genome Desktop login are handled by GDM/XDM/KDM display manager which starts at run level 5 (however Debian Linux and some other distro can start them from run level 2 via special rc.d script located in /etc/init.d/gdm)

Related articles:

Updated for accuracy!

Share this on:

Your support makes a big difference:
I have a small favor to ask. More people are reading the nixCraft. Many of you block advertising which is your right, and advertising revenues are not sufficient to cover my operating costs. So you can see why I need to ask for your help. The nixCraft, takes a lot of my time and hard work to produce. If you use nixCraft, who likes it, helps me with donations:
Become a Supporter →    Make a contribution via Paypal/Bitcoin →   

Don't Miss Any Linux and Unix Tips

Get nixCraft in your inbox. It's free:



{ 17 comments… add one }
  • matt October 17, 2005, 2:38 pm

    you have some good content! i’m reading this blog since last 4+ months; althoug it is not updated daily like other blog/sites still it makes a good read as it is based upon Linux/UNIX sys admins hard core experince
    considering only 1 or 2 perople contributes to this blog it is a good read and you have Good number of hits as well. Just wanna say good job man & keep it up

  • Anonymous October 17, 2005, 2:44 pm

    my questions is very simple how do i find out current runlevel as well as last runlevel? since you take linux sys admin class you must have some info :D

    –bha

    • Namdev October 27, 2012, 12:02 pm

      RUN-LEVEL IN LINUX
      ==================
      0 – halt (shutdown pc)
      1 – Single user mode
      2 – Multiuser
      3 – Full multiuser mode
      4 – unused
      5 – X11 (Graphical)
      6 – reboot

      TO VIEW RUNLEVEL CONFIG FILE

      # cat /etc/inittab

      TO CHANGE RUNLEVEL CONFIGURATION FILE
      # vi /etc/inittab

      To check Current Run Level
      # who -r or
      # runlevel

      To change Run Level
      # init 1

      On most Linux server system default run level is 3 and on most Linux Desktop system default run level is 5.

      • narendra April 30, 2013, 5:57 am

        if it is set as 0, then how to change as system get reboot again and again
        kindly advice

        • vivek November 4, 2015, 4:58 pm

          I guess you can use any live distro to boot into your system and then access the drive and then change the default runlevel from the file it is contained.

  • cyberciti October 17, 2005, 6:31 pm

    > how do i find out current runlevel as well as last runlevel?
    Use who -r command
    $ who -r
    run-level 2 Oct 17 18:21 last=S

    • Ronald Kaiser April 9, 2012, 2:24 pm

      In order to get the last runlevel as well as the current, you can use /sbin/runlevel too.
      $ /sbin/runlevel
      S 2

  • cyberciti October 17, 2005, 6:34 pm

    Thanks matt :) We don’t update our blog everyday, as and when event occurs in our life it is get documented here.

    I appreciate your post.

  • srikar March 5, 2013, 9:55 am

     How to Change the run levels of the linux at run time with out restarting the system

  • Tony S. May 20, 2013, 11:52 am

    Thanks, this really helped me out. It turns out Ubuntu does have both commands, albeit a bit useless due to it lacking a proper single-user bootmode that’s accessible, this still helped. Thanks very much.

  • Rajesh May 20, 2013, 2:04 pm

    I went and changed the default run level as 6 in the config files. now system starts with default mode as 6 and then restarts again.

  • Guignol June 13, 2013, 6:21 pm

    For the folks fool enough to edit their /etc/inittab config file to 0 or 6, your only way to break the loop is to boot the system from a livecd, then navigate to the config file through the live filesystem (probably /mnt/sd*/etc/inittab or /media/*) and edit it. But seriously, what were you expecting to happen?

  • air805ronin January 8, 2014, 11:01 pm

    Guignol is actually kind of wrong there. A better option, to me, would to use Grub to boot into a specific runlevel, and then edit the inittab file to fix your mistake.

    Just google “grub change runlevel” and you should get some useful results.

  • ashwin September 15, 2015, 6:08 am

    i have set default as 6, then how to change as system get reboot again and again
    kindly advice

    • Addams Scrub October 20, 2016, 11:29 am

      Try to avoid 0 and 6 .. Put 5 for example.

      As someone said before in the documentation:
      0 – halt (shutdown pc)
      1 – Single user mode
      2 – Multiuser
      3 – Full multiuser mode
      4 – unused
      5 – X11 (Graphical)
      6 – reboot

      If you are on 6, the system will reboot on and on.
      If you want to use Linux desktop and graphics try setting runlevel to 5
      If you have a Linux server, try 3
      You can change your runlevel by typing ‘init 5’ from bash cli.
      init 5
      init 3

  • ashwin September 15, 2015, 6:09 am

    i have set default as 6,
    system stops and says noting to do
    pls help hoe to over come this issue

  • satish February 16, 2016, 9:59 am

    Under Red Hat Enterprise Linux, it is possible to change the default runlevel at boot time.

    To change the runlevel of a single boot session, use the following instructions:

    When the GRUB menu bypass screen appears at boot time, press any key to enter the GRUB menu (within the first three seconds).

    Press the a key to append to the kernel command.

    Add at the end of the boot options line to boot to the desired runlevel. For example, the following entry would initiate a boot process into runlevel 3:

Security: Are you a robot or human?

Leave a Comment


   Tagged with: , , , , , , , , , , , , , , , ,