12.2. systemctl을 사용하여 시스템 서비스 관리
시스템 관리자는 systemctl
유틸리티를 사용하여 시스템 서비스를 관리할 수 있습니다. 실행 중인 서비스 시작, 중지, 다시 시작, 서비스 활성화 및 비활성화, 사용 가능한 서비스 나열, 시스템 서비스 상태 표시 등 다양한 작업을 수행할 수 있습니다.
12.2.1. 시스템 서비스 나열
현재 로드된 모든 서비스 단위를 나열하고 사용 가능한 모든 서비스 단위의 상태를 표시할 수 있습니다.
절차
systemctl
명령을 사용하여 다음 작업을 수행합니다.
현재 로드된 모든 서비스 단위를 나열합니다.
$ systemctl list-units --type service UNIT LOAD ACTIVE SUB DESCRIPTION abrt-ccpp.service loaded active exited Install ABRT coredump hook abrt-oops.service loaded active running ABRT kernel log watcher abrtd.service loaded active running ABRT Automated Bug Reporting Tool ... systemd-vconsole-setup.service loaded active exited Setup Virtual Console tog-pegasus.service loaded active running OpenPegasus CIM Server LOAD = Reflects whether the unit definition was properly loaded. ACTIVE = The high-level unit activation state, or a generalization of SUB. SUB = The low-level unit activation state, values depend on unit type. 46 loaded units listed. Pass --all to see loaded but inactive units, too. To show all installed unit files use 'systemctl list-unit-files'
기본적으로
systemctl list-units
명령은 활성 유닛만 표시합니다. 각 서비스 단위 파일에 대해 명령은 다음 매개변수에 대한 개요를 제공합니다.단위
- 서비스 유닛의 전체 이름
LOAD
- 구성 파일의 로드 상태
ACTIVE
또는SUB
- 현재 고급 및 낮은 수준의 장치 파일 활성화 상태
DESCRIPTION
- 유닛의 목적과 기능에 대한 간략한 설명
all 또는
-a
명령줄 옵션과 함께 다음 명령을 사용하여 상태에 관계없이 로드된모든
유닛 을 나열합니다.$ systemctl list-units --type service --all
사용 가능한 모든 서비스 단위의 상태(활성화 또는 비활성화)를 나열합니다.
$ systemctl list-unit-files --type service UNIT FILE STATE abrt-ccpp.service enabled abrt-oops.service enabled abrtd.service enabled ... wpa_supplicant.service disabled ypbind.service disabled 208 unit files listed.
각 서비스 유닛에 대해 이 명령은 다음을 표시합니다.
단위 파일
- 서비스 유닛의 전체 이름
상태
- 부팅 중에 서비스 단위가 활성화되거나 비활성화되었는지 여부에 대한 정보
추가 리소스
12.2.2. 시스템 서비스 상태 표시
서비스 단위를 검사하여 자세한 정보를 가져오고 부팅 중에 시작되도록 활성화되었는지 또는 현재 실행 중인 서비스 상태인지 확인할 수 있습니다. 또한 특정 서비스 유닛 이후 또는 이전에 주문된 서비스를 볼 수도 있습니다.
절차
systemctl
명령을 사용하여 다음 작업을 수행합니다.
시스템 서비스에 해당하는 서비스 유닛에 대한 자세한 정보를 표시합니다.
$ systemctl status <name>.service
&
lt;name
>을 검사하려는 서비스 단위의 이름으로 바꿉니다(예:gdm
).이 명령은 다음 정보를 표시합니다.
- 선택한 서비스 단위의 이름 뒤에 간단한 설명
- 사용 가능한 서비스 단위 정보에설명된 하나 이상의 필드
-
서비스 유닛의 실행:
루트
사용자가 유닛을 실행하는 경우 최신 로그 항목
표 12.2. 사용 가능한 서비스 단위 정보 필드 설명 loaded
서비스 유닛이 로드되었는지 여부, 단위 파일의 절대 경로, 부팅 중에 장치를 시작할 수 있는지 여부를 확인합니다.
active
서비스 유닛이 실행 중인지 여부 및 타임스탬프를 제공합니다.
Main PID
프로세스 ID 및 해당 시스템 서비스의 이름입니다.
상태
해당 시스템 서비스에 대한 추가 정보입니다.
process
관련 프로세스에 대한 추가 정보.
cgroup
관련 제어 그룹(
cgroup
)에 대한 추가 정보.
예 12.1. 서비스 상태 표시
GNOME Display Manager의 서비스 단위는
gdm.service
라고 합니다. 이 서비스 장치의 현재 상태를 확인하려면 쉘 프롬프트에서 다음을 입력합니다.# systemctl status gdm.service gdm.service - GNOME Display Manager Loaded: loaded (/usr/lib/systemd/system/gdm.service; enabled) Active: active (running) since Thu 2013-10-17 17:31:23 CEST; 5min ago Main PID: 1029 (gdm) CGroup: /system.slice/gdm.service ├─1029 /usr/sbin/gdm └─1047 /usr/bin/Xorg :0 -background none -verbose -auth /r... Oct 17 17:31:23 localhost systemd[1]: Started GNOME Display Manager.
특정 서비스 장치가 실행 중인지 확인합니다.
$ systemctl is-active <name>.service
부팅 중에 특정 서비스 단위가 시작되도록 활성화되어 있는지 확인합니다.
$ systemctl is-enabled <name>.service
참고지정된 서비스 장치가 실행 중이거나 활성화된 경우
systemctl is-active
및systemctl is-enabled
명령은 종료 상태0
을 반환합니다.지정된 서비스 단위 전에
systemd
주문을 시작할 서비스 확인# systemctl list-dependencies --after <name>.service
예를 들어
gdm
이전에 시작되도록 순서가 지정된 서비스 목록을 보려면 다음을 입력합니다.# systemctl list-dependencies --after gdm.service gdm.service ├─dbus.socket ├─getty@tty1.service ├─livesys.service ├─plymouth-quit.service ├─system.slice ├─systemd-journald.socket ├─systemd-user-sessions.service └─basic.target [output truncated]
지정된 서비스 단위 후에 시작할 서비스
systemd
주문을 확인합니다.# systemctl list-dependencies --before <name>.service
예를 들어
gdm
후에 시작할 서비스systemd
주문 목록을 보려면 다음을 입력합니다.# systemctl list-dependencies --before gdm.service gdm.service ├─dracut-shutdown.service ├─graphical.target │ ├─systemd-readahead-done.service │ ├─systemd-readahead-done.timer │ └─systemd-update-utmp-runlevel.service └─shutdown.target ├─systemd-reboot.service └─final.target └─systemd-reboot.service
추가 리소스
12.2.3. 시스템 서비스 시작
start 명령을 사용하여 현재 세션에서 시스템 서비스를 시작할
수 있습니다.
사전 요구 사항
- 루트 액세스
절차
현재 세션에서 시스템 서비스를 시작합니다.
# systemctl start <name>.service
&
lt;name
>을 시작하려는 서비스 단위의 이름으로 바꿉니다(예:httpd.service
).참고systemd
에서 서비스 간 양수 및 음수 종속성이 있습니다. 특정 서비스를 시작하려면 하나 이상의 다른 서비스(긍정 종속성)를 시작하거나 하나 이상의 서비스(negative dependency)를 중지해야 할 수 있습니다.새 서비스를 시작하려고 하면
systemd
는 사용자에게 명시적 통지 없이 모든 종속 항목을 자동으로 해결합니다. 즉, 이미 서비스를 실행하고 음수 종속성으로 다른 서비스를 시작하려고 하면 첫 번째 서비스가 자동으로 중지됩니다.예를 들어
postfix
서비스를 실행 중이고sendmail
서비스를 시작하려고 하는 경우systemd
는 먼저postfix
를 자동으로 중지합니다. 이 두 서비스는 충돌하고 동일한 포트에서 실행할 수 없기 때문입니다.
추가 리소스
-
시스템의
systemctl(1)
도움말 페이지 - 부팅 시 시스템 서비스가 시작되도록 활성화
- 시스템 서비스 상태 표시
12.2.4. 시스템 서비스 중지
현재 세션에서 시스템 서비스를 중지하려면 stop
명령을 사용합니다.
사전 요구 사항
- 루트 액세스
절차
시스템 서비스를 중지합니다.
# systemctl stop <name>.service
&
lt;name
>을 중지하려는 서비스 단위의 이름으로 바꿉니다(예:bluetooth
).
추가 리소스
-
시스템의
systemctl(1)
도움말 페이지 - 부팅할 때 시작할 시스템 서비스 비활성화
- 시스템 서비스 상태 표시
12.2.5. 시스템 서비스 재시작
restart
명령을 사용하여 현재 세션에서 시스템 서비스를 다시 시작하여 다음 작업을 수행할 수 있습니다.
- 현재 세션에서 선택한 서비스 장치를 중지하고 즉시 다시 시작합니다.
- 해당 서비스가 이미 실행 중인 경우에만 서비스 장치를 다시 시작합니다.
- 실행을 중단하지 않고 시스템 서비스의 구성을 다시 로드합니다.
사전 요구 사항
- 루트 액세스
절차
시스템 서비스를 다시 시작하십시오.
# systemctl restart <name>.service
&
lt;name
>을 재시작할 서비스 단위의 이름으로 바꿉니다(예:httpd
).참고선택한 서비스 장치가 실행되고 있지 않으면 이 명령도 시작합니다.
선택 사항: 해당 서비스가 이미 실행 중인 경우에만 서비스 장치를 다시 시작하십시오.
# systemctl try-restart <name>.service
선택 사항: 서비스 실행을 중단하지 않고 구성을 다시 로드합니다.
# systemctl reload <name>.service
참고이 기능을 지원하지 않는 시스템 서비스는 이 명령을 무시합니다. 이러한 서비스를 다시 시작하려면 대신
reload-or-restart
및reload-or-try-restart
명령을 사용합니다.
추가 리소스
-
시스템의
systemctl
man page - 시스템 서비스 상태 표시
12.2.6. 부팅 시 시스템 서비스가 시작되도록 활성화
부팅 시 서비스가 자동으로 시작되도록 활성화할 수 있습니다. 이러한 변경 사항은 다음 재부팅 시 적용됩니다.
사전 요구 사항
- 루트 액세스
사용하려는 서비스는 마스킹할 수 없습니다. 마스킹된 서비스가 있는 경우 먼저 마스킹을 해제합니다.
# systemctl unmask <name>.service
절차
부팅 시 시작할 서비스를 활성화합니다.
# systemctl enable <name>.service
&
lt;name
>을 활성화하려는 서비스 단위의 이름으로 바꿉니다(예:httpd
).선택 사항: 단일 명령을 사용하여 서비스를 활성화하고 시작할 수도 있습니다.
# systemctl enable --now <name>.service
추가 리소스
-
시스템의
systemctl(1)
도움말 페이지 - 시스템 서비스 상태 표시
- 시스템 서비스 시작
12.2.7. 부팅할 때 시작할 시스템 서비스 비활성화
부팅 시 서비스 장치가 자동으로 시작되지 않도록 할 수 있습니다. 서비스를 비활성화하면 부팅 시 시작되지 않지만 수동으로 시작할 수 있습니다. 수동으로 시작할 수 없도록 서비스를 마스킹할 수도 있습니다. 마스킹은 서비스를 다시 마스크 해제할 때까지 영구적으로 사용할 수 없게 하는 서비스를 비활성화하는 방법입니다.
사전 요구 사항
- 루트 액세스
절차
부팅 시 시작할 서비스를 비활성화합니다.
# systemctl disable <name>.service
&
lt;name
>을 비활성화하려는 서비스 단위의 이름으로 바꿉니다(예:bluetooth
).선택 사항: 서비스를 영구적으로 사용할 수 없게 하려면 서비스를 마스크하십시오.
# systemctl mask <name>.service
이 명령은
/etc/systemd/system/name.service
파일을/dev/null
에 대한 심볼릭 링크로 대체하여systemd
에 액세스할 수 없는 실제 장치 파일을 렌더링합니다.
추가 리소스
-
시스템의
systemctl(1)
도움말 페이지 - 시스템 서비스 상태 표시
- 시스템 서비스 중지