소개
이 랩에서는 systemd를 사용하여 Linux 에서 시스템 서비스가 마스크되었는지 확인하는 방법을 배우게 됩니다. 서비스를 마스크하는 것은 서비스가 시작되는 것을 방지하며, 이는 시스템 관리 및 문제 해결의 핵심 개념입니다. systemctl is-masked 명령을 사용하여 특정 서비스의 마스크 상태를 확인하고, systemctl list-unit-files 명령을 사용하여 systemd 유닛 파일에 대한 더 광범위한 개요를 얻을 것입니다. 마지막으로, 이러한 설정이 저장되는 위치를 이해하기 위해 systemd 구성 디렉토리를 탐색할 것입니다.
systemctl is-masked 로 서비스 마스크 확인
이 단계에서는 Ubuntu 와 같은 최신 Linux 배포판에서 시스템 및 서비스 관리자인 systemd를 탐색하기 시작합니다. systemd는 웹 서버, 데이터베이스 등과 같은 서비스 및 기타 시스템 리소스를 시작, 중지 및 관리하는 역할을 합니다.
systemd의 중요한 개념 중 하나는 서비스를 "마스크 (masking)"하는 것입니다. 서비스를 마스크하면 수동으로 또는 다른 서비스에 의해서도 시작되지 않도록 합니다. 이는 서비스를 완전히 비활성화하는 방법입니다.
systemctl is-masked 명령을 사용하여 서비스가 마스크되었는지 확인할 수 있습니다. 일반적인 서비스인 apache2의 상태를 확인해 보겠습니다. Apache 는 널리 사용되는 웹 서버입니다.
터미널이 아직 열려 있지 않다면 엽니다. 데스크톱 왼쪽에서 Xfce 터미널 (Xfce Terminal) 아이콘을 찾을 수 있습니다.
다음 명령을 입력하고 Enter 키를 누르십시오.
systemctl is-masked apache2
다음과 유사한 출력을 볼 수 있습니다.
inactive
이 출력은 apache2 서비스가 마스크되지 않았음을 나타냅니다. 마스크된 경우 출력은 masked가 됩니다.
이 환경에서 기본적으로 마스크되는 서비스, 예를 들어 systemd-udevd-kernel.socket을 확인해 보겠습니다. 이는 하위 수준 시스템 서비스입니다.
다음 명령을 입력하고 Enter 키를 누르십시오.
systemctl is-masked systemd-udevd-kernel.socket
출력은 다음과 같아야 합니다.
masked
이는 systemd-udevd-kernel.socket 서비스가 실제로 마스크되었음을 확인합니다.
서비스가 마스크되었는지 이해하는 것은 시스템 문제 해결 및 관리에 매우 중요합니다. 서비스가 시작되지 않으면 마스크 상태를 확인하는 것이 종종 첫 번째 단계 중 하나입니다.
다음 단계로 진행하려면 **계속 (Continue)**을 클릭하십시오.
systemctl list-unit-files 로 유닛 파일 목록 확인
이전 단계에서는 systemctl is-masked를 사용하여 개별 서비스의 상태를 확인했습니다. 이제 systemd가 알고 있는 모든 유닛 파일에 대한 더 광범위한 보기를 얻어보겠습니다.
systemd는 서비스, 마운트 지점, 장치, 소켓 등을 정의하는 구성 파일인 다양한 유형의 "유닛 (units)"을 관리합니다. 가장 일반적인 유형은 백그라운드 프로세스 (서비스) 를 실행하는 방법을 정의하는 .service 유닛입니다.
systemctl list-unit-files 명령은 설치된 모든 유닛 파일과 해당 "활성화 (enable)" 상태를 표시합니다. 활성화 상태는 부팅 시 유닛이 자동으로 시작되도록 구성되었는지 여부를 나타냅니다.
터미널에 다음 명령을 입력하고 Enter 키를 누르십시오.
systemctl list-unit-files
이 명령은 긴 유닛 파일 목록을 출력합니다. 출력은 다음과 유사하게 보일 것입니다 (일부만 표시됨).
UNIT FILE STATE
proc-sys-fs-binfmt_misc.automount static
dev-hugepages.mount static
dev-mqueue.mount static
proc-sys-fs-binfmt_misc.mount static
sys-fs-fuse-connections.mount static
sys-kernel-config.mount static
sys-kernel-debug.mount static
sys-kernel-tracing.mount static
...
apache2.service disabled
...
출력에는 두 개의 열이 있습니다.
UNIT FILE: 유닛 파일의 이름 (예:apache2.service).STATE: 유닛의 활성화 상태 (예:static,enabled,disabled,masked).
다음은 몇 가지 일반적인 상태에 대한 간략한 설명입니다.
enabled: 유닛은 부팅 시 자동으로 시작되도록 구성되어 있습니다.disabled: 유닛은 부팅 시 자동으로 시작되도록 구성되어 있지 않습니다.static: 유닛은 활성화 또는 비활성화할 수 없으며, 시작은 다른 유닛에 의해 제어됩니다.masked: 유닛은 완전히 비활성화되어 시작할 수 없습니다.
터미널의 스크롤바를 사용하거나 출력을 less와 같은 페이저로 파이핑하여 출력을 스크롤할 수 있습니다. 예를 들어:
systemctl list-unit-files | less
less 내에서 화살표 키를 사용하여 스크롤하고, 스페이스바를 눌러 한 페이지 아래로 이동하고, q를 눌러 종료할 수 있습니다.
이 명령은 시스템에 어떤 서비스가 설치되어 있고 어떻게 시작되도록 구성되었는지 확인하는 데 매우 유용합니다.
다음으로 이동하려면 **계속 (Continue)**을 클릭하십시오.
/etc/systemd 에서 systemd 설정 검토
이전 단계에서는 systemctl 명령을 사용하여 systemd와 상호 작용했습니다. 이제 systemd가 구성 파일을 저장하는 위치를 살펴보겠습니다.
systemd 구성 파일의 기본 디렉토리는 /etc/systemd입니다. 이 디렉토리에는 다양한 유형의 유닛 파일 및 구성 설정에 대한 하위 디렉토리가 포함되어 있습니다.
ls 명령을 사용하여 /etc/systemd 디렉토리의 내용을 나열해 보겠습니다. /etc는 구성 파일에 대한 Linux 의 표준 디렉토리입니다.
터미널에 다음 명령을 입력하고 Enter 키를 누르십시오.
ls /etc/systemd/
다음과 유사한 디렉토리 및 파일 목록이 표시됩니다.
journald.conf logind.conf networkd.conf resolved.conf system system.conf timesyncd.conf user user.conf
여기서 가장 중요한 하위 디렉토리는 /etc/systemd/system입니다. 이는 시스템 전체 유닛 파일이 종종 배치되거나 연결되는 곳입니다. 이 디렉토리 내부를 살펴보겠습니다.
cd 명령을 사용하여 현재 디렉토리를 /etc/systemd/system으로 변경합니다.
cd /etc/systemd/system
이제 이 디렉토리의 내용을 나열합니다.
ls
실제 유닛 파일 (종종 /lib/systemd/system에 위치) 을 가리키는 심볼릭 링크 (->) 가 많이 포함된 파일 및 디렉토리 목록이 표시됩니다. 이것이 서비스가 활성화 또는 비활성화되는 방식입니다. 즉, 이러한 심볼릭 링크를 생성하거나 제거하여 수행됩니다.
예를 들어 다음과 같은 내용을 볼 수 있습니다.
multi-user.target.wants -> /lib/systemd/system/multi-user.target.wants
sockets.target.wants -> /lib/systemd/system/sockets.target.wants
...
.wants 디렉토리에는 해당 대상에 도달했을 때 시작되어야 하는 서비스에 대한 심볼릭 링크가 포함되어 있습니다. 예를 들어, multi-user.target.wants에는 시스템이 다중 사용자 상태 (부팅 후 등) 에 있을 때 실행되어야 하는 서비스에 대한 링크가 포함되어 있습니다.
multi-user.target.wants 디렉토리 내부를 살펴보겠습니다.
ls multi-user.target.wants/
다중 사용자 대상에서 시작하도록 활성화된 서비스 목록이 표시됩니다.
anacron.service -> ../anacron.service
apache2.service -> ../../apache2.service
...
이는 apache2.service가 여기에 연결되어 있음을 보여줍니다. 즉, 다중 사용자 대상과 함께 시작하도록 활성화되어 있음을 의미합니다.
/etc/systemd/system 디렉토리를 탐색하면 systemd가 시스템에서 서비스를 구성하고 관리하는 방식을 이해하는 데 도움이 됩니다.
이 랩을 완료하려면 **계속 (Continue)**을 클릭하십시오.
요약
이 랩에서는 Linux 에서 systemd를 탐구하기 시작하여 시스템 서비스가 "마스크 (masked)"되었는지 여부를 확인하는 방법에 중점을 두었습니다. 서비스를 마스크하는 것은 서비스를 완전히 비활성화하여 어떤 상황에서도 시작되지 않도록 하는 방법입니다. systemctl is-masked 명령을 사용하여 특정 서비스의 마스크 상태를 확인하는 방법을 배웠으며, apache2는 마스크되지 않은 반면 systemd-udevd-kernel.socket은 마스크되었음을 확인했습니다. 마스크 상태를 이해하는 것은 서비스 시작 문제를 해결하는 데 기본적인 단계입니다.
그런 다음 systemctl list-unit-files를 사용하여 systemd가 관리하는 모든 유닛 파일에 대한 더 광범위한 관점을 얻었습니다. 유닛 파일은 다양한 시스템 리소스 및 서비스를 나타내는 구성 파일입니다. 이 명령은 유닛과 해당 상태의 포괄적인 목록을 제공하여 개별 서비스 확인을 넘어 시스템 구성에 대한 더 넓은 시야를 제공합니다.



