systemd의 복잡한 서비스 의존성 관리 및 부팅 프로세스 최적화를 위해 .target 파일과 .service 파일의 관계를 설명하고, 사용자 정의 서비스 유닛을 작성할 때 고려해야 할 고급 옵션과 시나리오를 제시해주세요.
힌트 · .target 파일은 여러 .service 파일을 묶어 특정 상태를 정의하며, .service 파일은 개별 서비스의 실행 방식을 정의합니다. `Wants`, `Requires`, `After`, `Before` 등의 옵션으로 의존성을 명확히 설정합니다.
모범답안
systemd에서 .target 파일은 여러 .service 파일들을 묶어 특정 시스템 상태를 정의하는 역할을 합니다. 예를 들어 multi-user.target은 다중 사용자 환경을 구성하는 데 필요한 서비스들을 묶어 놓은 것이죠. .service 파일은 개별 서비스의 실행 방식, 즉 시작/종료/재시작 방법 등을 정의합니다.
이 둘의 관계를 통해 서비스 의존성을 관리하고 부팅 프로세스를 최적화할 수 있습니다. Requires, Wants, After 등의 옵션을 사용해서 서비스 간의 의존 관계를 명확하게 설정하는 것이 중요합니다. Requires는 필수 의존성, Wants는 권장 의존성, After는 실행 순서를 지정합니다.
사용자 정의 서비스 유닛을 작성할 때는 ExecStart, Type, User 등의 옵션을 신중하게 고려해야 합니다. 예를 들어, 데몬 프로세스를 실행하는 서비스라면 Type=forking 또는 Type=simple을 적절히 선택하고, 보안을 위해 User 옵션을 통해 특정 사용자로 실행되도록 설정할 수 있습니다. 또한, 서비스가 실패했을 때 자동으로 재시작되도록 Restart 옵션을 설정하는 것도 좋은 방법입니다.
읽었다면, 이제 직접 답해볼 차례예요
패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.
함께 보는 Linux 면접 질문
- Linux 커널에서 시스템 호출(syscall)의 성능 병목 현상을 진단하고 최적화하기 위한 고급 도구와 기법(예: eBPF, perf, ftrace)에 대해 설명하고, 실제 시나리오에서 어떻게 활용할지 예를 들어주세요.
- 시스템 메모리가 부족해지는 상황에서 Linux 커널의 OOM Killer가 동작하는 방식과 OOM Score의 의미, 그리고 스와핑(swapping) 메커니즘이 시스템 성능에 미치는 영향 및 최적화 방안에 대해 설명해주세요.
- SELinux와 AppArmor 같은 강제적 접근 제어(MAC) 시스템이 기존 DAC(Discretionary Access Control) 방식과 어떻게 다르며, 실제 운영 환경에서 이들을 효과적으로 적용하고 관리하기 위한 전략과 트러블슈팅 기법에 대해 설명해주세요.