10.3. systemd 대상 작업
SysV init 또는 Upstart와 함께 배포된 이전 버전의 Red Hat Enterprise Linux는 특정 작업 모드를 나타내는 사전 정의된 실행 수준을 구현했습니다. 이러한 실행 수준으로 인해 0에서 6까지 번호가 지정되었으며 시스템 관리자가 특정 실행 수준을 사용하도록 설정한 경우 실행할 시스템 서비스에 의해 정의되었습니다. Red Hat Enterprise Linux 7에서는 실행 수준이라는 개념이 systemd 대상으로 교체되었습니다.
systemd 대상은 대상 유닛으로 표시됩니다. 대상 단위는 . target 파일
확장자로 종료되고 유일한 목적은 종속 항목 체인을 통해 다른 systemd 유닛을 함께 그룹화하는 것입니다. 예를 들어 그래픽 세션을 시작하는 데 사용되는 graphical.target
장치는 GNOME Display Manager(gdm.service ) 또는 계정 서비스(accounts-daemon
)와 같은 시스템 서비스를 시작하고, .service
다중 사용자.target
유닛을 활성화합니다. 마찬가지로 multi-user.target
장치는 NetworkManager(NetworkManager.service
) 또는 D-Bus(dbus.service
)와 같은 다른 필수 시스템 서비스를 시작하고 basic.target
이라는 다른 대상 장치를 활성화합니다.
Red Hat Enterprise Linux 7은 이 시스템의 이전 릴리스의 표준 실행 수준 세트와 비슷하거나 더 적은 사전 정의된 대상과 함께 배포됩니다. 호환성의 이유로 SysV 실행 수준을 직접 매핑하는 이러한 대상에 대한 별칭도 제공합니다. 표 10.6. “systemd 대상과 SysV Runlevels 비교” 에서는 SysV 실행 수준 및 해당 systemd 대상의 전체 목록을 제공합니다.
실행 수준 | 대상 단위 | 설명 |
---|---|---|
|
| 시스템을 종료하고 전원을 끕니다. |
|
| 복구 쉘을 설정합니다. |
|
| 그래픽이 아닌 다중 사용자 시스템을 설정합니다. |
|
| 그래픽이 아닌 다중 사용자 시스템을 설정합니다. |
|
| 그래픽이 아닌 다중 사용자 시스템을 설정합니다. |
|
| 그래픽 다중 사용자 시스템을 설정합니다. |
|
| 시스템을 종료하고 재부팅합니다. |
systemd 대상을 확인, 변경 또는 구성하려면 표 10.7. “systemctl과 SysV init 명령 비교” 및 아래 섹션에서 systemctl
유틸리티를 사용합니다. 실행 수준
및 telinit
명령은 계속 시스템에서 사용할 수 있으며 예상대로 작동하지만 호환성상의 이유로만 포함되어 있어야 합니다.
이전 명령 | 새 명령 | 설명 |
---|---|---|
|
| 현재 로드된 대상 유닛을 나열합니다. |
|
| 현재 대상을 변경합니다. |
10.3.1. 기본 대상 보기
기본적으로 사용되는 대상 장치를 확인하려면 다음 명령을 실행합니다.
systemctl get-default
이 명령은 /etc/systemd/system/default.target
에 있는 심볼릭 링크를 확인하고 결과를 표시합니다. 기본 대상을 변경하는 방법에 대한 자세한 내용은 10.3.3절. “기본 대상 변경” 을 참조하십시오. 현재 로드된 모든 대상 장치를 나열하는 방법에 대한 자세한 내용은 10.3.2절. “현재 대상 보기” 을 참조하십시오.
예 10.10. 기본 대상 보기
기본 대상 장치를 표시하려면 다음을 입력합니다.
~]$ systemctl get-default
graphical.target
10.3.2. 현재 대상 보기
현재 로드된 모든 대상 장치를 나열하려면 쉘 프롬프트에서 다음 명령을 입력합니다.
systemctl list-units --type target
각 대상 유닛에 대해 이 명령은 전체 이름(UNIT
)을 표시하고, 유닛이 로드되었는지 여부(LOAD
), 높은 레벨( started) 및 하위 수준(SUB
) 단위 활성화 상태, 짧은 설명 (DESCRIPTION
)을 표시합니다.
기본적으로 systemctl list-units
명령은 활성 유닛만 표시합니다. 상태에 관계없이 로드된 유닛을 모두 나열하려면 --all
또는 -a
명령줄 옵션을 사용하여 이 명령을 실행하십시오.
systemctl list-units --type target --all
기본 대상을 표시하는 방법에 대한 자세한 내용은 10.3.1절. “기본 대상 보기” 을 참조하십시오. 현재 대상을 변경하는 방법에 대한 자세한 내용은 10.3.4절. “현재 대상 변경” 을 참조하십시오.
예 10.11. 현재 대상 보기
현재 로드된 모든 대상 장치를 나열하려면 다음 명령을 실행합니다.
~]$ systemctl list-units --type target
UNIT LOAD ACTIVE SUB DESCRIPTION
basic.target loaded active active Basic System
cryptsetup.target loaded active active Encrypted Volumes
getty.target loaded active active Login Prompts
graphical.target loaded active active Graphical Interface
local-fs-pre.target loaded active active Local File Systems (Pre)
local-fs.target loaded active active Local File Systems
multi-user.target loaded active active Multi-User System
network.target loaded active active Network
paths.target loaded active active Paths
remote-fs.target loaded active active Remote File Systems
sockets.target loaded active active Sockets
sound.target loaded active active Sound Card
spice-vdagentd.target loaded active active Agent daemon for Spice guests
swap.target loaded active active Swap
sysinit.target loaded active active System Initialization
time-sync.target loaded active active System Time Synchronized
timers.target loaded active active Timers
LOAD = Reflects whether the unit definition was properly loaded.
ACTIVE = The high-level unit activation state, i.e. generalization of SUB.
SUB = The low-level unit activation state, values depend on unit type.
17 loaded units listed. Pass --all to see loaded but inactive units, too.
To show all installed unit files use 'systemctl list-unit-files'.
10.3.3. 기본 대상 변경
기본적으로 다른 대상 장치를 사용하도록 시스템을 구성하려면 쉘 프롬프트에 root
로 다음을 입력합니다.
systemctl set-default name.target
기본적으로 사용할 대상 유닛의 이름으로 이름을 바꿉니다(예: 다중 사용자
). 이 명령은 /etc/systemd/system/default.target
파일을 /usr/lib/systemd/system/name.target
에 대한 심볼릭 링크로 교체합니다. 여기서 name 은 사용하려는 대상 장치의 이름입니다. 현재 대상을 변경하는 방법에 대한 자세한 내용은 10.3.4절. “현재 대상 변경” 을 참조하십시오. 현재 로드된 모든 대상 장치를 나열하는 방법에 대한 자세한 내용은 10.3.2절. “현재 대상 보기” 을 참조하십시오.
예 10.12. 기본 대상 변경
기본적으로 multi-user.target
장치를 사용하도록 시스템을 구성하려면 root
로 다음 명령을 실행합니다.
~]# systemctl set-default multi-user.target rm '/etc/systemd/system/default.target' ln -s '/usr/lib/systemd/system/multi-user.target' '/etc/systemd/system/default.target'
10.3.4. 현재 대상 변경
현재 세션에서 다른 대상 단위로 변경하려면 쉘 프롬프트에 root
로 다음을 입력합니다.
systemctl isolate name.target
name 을 사용하려는 대상 유닛의 이름으로 바꿉니다(예: 다중 사용자
). 이 명령은 name 및 모든 종속 유닛이라는 대상 유닛을 시작하고 다른 모든 장치를 즉시 중지합니다. 기본 대상을 변경하는 방법에 대한 자세한 내용은 10.3.3절. “기본 대상 변경” 을 참조하십시오. 현재 로드된 모든 대상 장치를 나열하는 방법에 대한 자세한 내용은 10.3.2절. “현재 대상 보기” 을 참조하십시오.
예 10.13. 현재 대상 변경
그래픽 사용자 인터페이스를 끄고 현재 세션의 multi-user.target
장치로 변경하려면 root
로 다음 명령을 실행합니다.
~]# systemctl isolate multi-user.target
10.3.5. 복구 모드로 변경
복구 모드는 편리한 단일 사용자 환경을 제공하며 일반적인 부팅 프로세스를 완료할 수 없는 상황에서 시스템을 복구할 수 있습니다. 복구 모드에서는 시스템이 모든 로컬 파일 시스템을 마운트하고 일부 중요한 시스템 서비스를 시작하려고 하지만 네트워크 인터페이스를 활성화하지 않거나 더 많은 사용자가 시스템에 로그인할 수 있도록 합니다. Red Hat Enterprise Linux 7에서 복구 모드는 단일 사용자 모드 와 동일하며 root 암호가 필요합니다.
현재 대상을 변경하고 현재 세션에서 복구 모드로 들어가려면 쉘 프롬프트에 root
로 다음을 입력합니다.
systemctl rescue
이 명령은 systemctl isolate rescue.target
과 유사하지만 현재 시스템에 로그인한 모든 사용자에게 정보 메시지를 보냅니다. systemd가 이 메시지를 전송하지 못하도록 하려면 --no-wall
명령줄 옵션을 사용하여 이 명령을 실행하십시오.
systemctl --no-wall rescue
긴급 모드로 전환하는 방법에 대한 자세한 내용은 10.3.6절. “긴급 모드로 변경” 을 참조하십시오.
예 10.14. 복구 모드로 변경
현재 세션에서 복구 모드로 들어가려면 root
로 다음 명령을 실행합니다.
~]# systemctl rescue Broadcast message from root@localhost on pts/0 (Fri 2013-10-25 18:23:15 CEST): The system is going down to rescue mode NOW!
10.3.6. 긴급 모드로 변경
긴급 모드는 가능한 가장 최소한의 환경을 제공하며 시스템이 복구 모드로 전환되지 않은 경우에도 시스템을 복구할 수 있습니다. 긴급 모드에서는 읽기용으로만 루트 파일 시스템을 마운트하고 다른 로컬 파일 시스템을 마운트하지 않고 네트워크 인터페이스를 활성화하지 않으며 몇 가지 필수 서비스만 시작합니다. Red Hat Enterprise Linux 7의 긴급 모드에서는 루트 암호가 필요합니다.
현재 대상을 변경하고 긴급 모드로 전환하려면 쉘 프롬프트에서 root
로 다음을 입력합니다.
systemctl emergency
이 명령은 systemctl isolate emergency.target
과 유사하지만 현재 시스템에 로그인한 모든 사용자에게 정보 메시지를 보냅니다. systemd가 이 메시지를 전송하지 못하도록 하려면 --no-wall
명령줄 옵션을 사용하여 이 명령을 실행하십시오.
systemctl --no-wall emergency
복구 모드로 전환하는 방법에 대한 자세한 내용은 10.3.5절. “복구 모드로 변경” 을 참조하십시오.
예 10.15. 긴급 모드로 변경
현재 시스템에 로그인한 모든 사용자에게 메시지를 보내지 않고 긴급 모드로 전환하려면 root
로 다음 명령을 실행합니다.
~]# systemctl --no-wall emergency