리눅스/공통

리눅스(Linux) 런레벨(RunLevel)

씨실과 날실 2020. 6. 16. 09:00

런레벨(RunLevel)이란?

우리는 아래 링크의 글에서 터미널에서 init 0과 init 6을 입력해 시스템을 종료하거나 재부팅하는 방법을 알아본 적이 있습니다.


시스템을 중지(정지), 종료(전원 끊기), 재부팅(리부팅)하는 다양한 방법들은 위 링크를 참고하시기 바랍니다.


앞서 알아본 init 뒤에 붙는 숫자를 이른바 런레벨(RunLevel)이라고 부르는데 이것은 부팅 후 시스템이 작동하는 다양한 형태를 의미합니다.

OS에 따라 최대 8가지 런레벨이 존재합니다. 그리고 리눅스는 일반적으로 0에서 6까지 7가지 런레벨이 있습니다.

OS별로, 또는 리눅스 배포판에 따라 런레벨 구성 설정이 다릅니다.


참고로 과거의 우분투 런레벨 구성은 현재의 런레벨 구성과 달랐습니다.

0 : 시스템 종료

1 : 단일 사용자(싱글 유저)

2 : 다중 사용자(멀티 유저) + 그래픽 사용자 인터페이스 + 네트워크 지원

3 : 2와 같음 (사용하지 않음)

4 : 2와 같음 (사용하지 않음)

5 : 2와 같음 (사용하지 않음)

6 : 시스템 재부팅

그러나 현재 우분투의 런레벨 구성은 레드햇 계열 리눅스의 런레벨과 동일합니다.

0 : 시스템 종료

1 : 단일 사용자(싱글 유저) - 시스템 복구 모드

2 : 다중 사용자(멀티 유저) - 사용하지 않음

3 : 다중 사용자(멀티 유저) + 명령행 인터페이스

4 : 다중 사용자(멀티 유저) - 사용하지 않음

5 : 다중 사용자(멀티 유저) + 그래픽 사용자 인터페이스 + 네트워크 지원

6 : 시스템 재부팅


런레벨 확인

현재 가동 중인 런레벨 확인

study@study-VirtualBox:~$ runlevel
N 5
study@study-VirtualBox:~$


study@study-VirtualBox:~$ who
study    :0           2020-06-12 17:31 (:0)
study@study-VirtualBox:~$ 

런레벨 구성 확인

/lib/systemd/system/runlevel?.target파일을 확인하면 됩니다.

study@study-VirtualBox:~$ cd /lib/systemd/system
study@study-VirtualBox:/lib/systemd/system$ ls -l runlevel?.target
lrwxrwxrwx 1 root root 15  5월 14 09:53 runlevel0.target -> poweroff.target
lrwxrwxrwx 1 root root 13  5월 14 09:53 runlevel1.target -> rescue.target
lrwxrwxrwx 1 root root 17  5월 14 09:53 runlevel2.target -> multi-user.target
lrwxrwxrwx 1 root root 17  5월 14 09:53 runlevel3.target -> multi-user.target
lrwxrwxrwx 1 root root 17  5월 14 09:53 runlevel4.target -> multi-user.target
lrwxrwxrwx 1 root root 16  5월 14 09:53 runlevel5.target -> graphical.target
lrwxrwxrwx 1 root root 13  5월 14 09:53 runlevel6.target -> reboot.target
study@study-VirtualBox:/lib/systemd/system$ 

각 런레벨 구성 파일 내용

runlevel 0 = init 0 = runlevel0.target -> poweroff.target =

study@study-VirtualBox:/lib/systemd/system$ cat poweroff.target
#  SPDX-License-Identifier: LGPL-2.1+
#
#  This file is part of systemd.
#
#  systemd is free software; you can redistribute it and/or modify it
#  under the terms of the GNU Lesser General Public License as published by
#  the Free Software Foundation; either version 2.1 of the License, or
#  (at your option) any later version.

[Unit]
Description=Power-Off
Documentation=man:systemd.special(7)
DefaultDependencies=no
Requires=systemd-poweroff.service
After=systemd-poweroff.service
AllowIsolate=yes
JobTimeoutSec=30min
JobTimeoutAction=poweroff-force

[Install]
Alias=ctrl-alt-del.target
study@study-VirtualBox:/lib/systemd/system$


runlevel 1 = init 1 = runlevel1.target -> rescue.target

study@study-VirtualBox:/lib/systemd/system$ cat rescue.target
#  SPDX-License-Identifier: LGPL-2.1+
#
#  This file is part of systemd.
#
#  systemd is free software; you can redistribute it and/or modify it
#  under the terms of the GNU Lesser General Public License as published by
#  the Free Software Foundation; either version 2.1 of the License, or
#  (at your option) any later version.

[Unit]
Description=Rescue Mode
Documentation=man:systemd.special(7)
Requires=sysinit.target rescue.service
After=sysinit.target rescue.service
AllowIsolate=yes
study@study-VirtualBox:/lib/systemd/system$


runlevel 3 = init 3 = runlevel3.target -> multi-user.target

study@study-VirtualBox:/lib/systemd/system$ cat multi-user.target
#  SPDX-License-Identifier: LGPL-2.1+
#
#  This file is part of systemd.
#
#  systemd is free software; you can redistribute it and/or modify it
#  under the terms of the GNU Lesser General Public License as published by
#  the Free Software Foundation; either version 2.1 of the License, or
#  (at your option) any later version.

[Unit]
Description=Multi-User System
Documentation=man:systemd.special(7)
Requires=basic.target
Conflicts=rescue.service rescue.target
After=basic.target rescue.service rescue.target
AllowIsolate=yes
study@study-VirtualBox:/lib/systemd/system$


runlevel 5 = init 5 = runlevel5.target -> graphical.target

study@study-VirtualBox:/lib/systemd/system$ cat graphical.target
#  SPDX-License-Identifier: LGPL-2.1+
#
#  This file is part of systemd.
#
#  systemd is free software; you can redistribute it and/or modify it
#  under the terms of the GNU Lesser General Public License as published by
#  the Free Software Foundation; either version 2.1 of the License, or
#  (at your option) any later version.

[Unit]
Description=Graphical Interface
Documentation=man:systemd.special(7)
Requires=multi-user.target
Wants=display-manager.service
Conflicts=rescue.service rescue.target
After=multi-user.target rescue.service rescue.target display-manager.service
AllowIsolate=yes
study@study-VirtualBox:/lib/systemd/system$


runlevel 6 = init 6 = runlevel6.target -> reboot.target

study@study-VirtualBox:/lib/systemd/system$ cat reboot.target
#  SPDX-License-Identifier: LGPL-2.1+
#
#  This file is part of systemd.
#
#  systemd is free software; you can redistribute it and/or modify it
#  under the terms of the GNU Lesser General Public License as published by
#  the Free Software Foundation; either version 2.1 of the License, or
#  (at your option) any later version.

[Unit]
Description=Reboot
Documentation=man:systemd.special(7)
DefaultDependencies=no
Requires=systemd-reboot.service
After=systemd-reboot.service
AllowIsolate=yes
JobTimeoutSec=30min
JobTimeoutAction=reboot-force

[Install]
Alias=ctrl-alt-del.target
study@study-VirtualBox:/lib/systemd/system$



작동 중인 런레벨 변경

study@study-VirtualBox:~$ init 3