Aller au contenu principal

50. Manage Startup Process and Services


개요

이 가이드는 Linux가 init 시스템과 systemd 유닛을 통해 시작 프로세스와 서비스를 관리하는 방법을 설명합니다. 부팅 시 시스템은 정의된 순서로 애플리케이션을 실행하여 의존성이 충족되고 중요한 서비스가 실패 시 자동으로 재시작됩니다.

Init 시스템과 Systemd 유닛의 역할

init 시스템은 Linux 시스템에서 서비스의 시작과 동작을 제어합니다. Systemd는 도구 모음이자 주요 init 프로그램으로, systemd 유닛(unit) 이라는 설정 파일을 사용하여 애플리케이션 생명주기를 관리합니다.

유닛 타입: service, socket, device, timer 유닛 등. Timer 유닛은 "주간 파일 정리 또는 데이터베이스 검증"과 같은 반복 작업을 예약할 수 있습니다.

man systemd.service에서 사용 가능한 옵션을 확인합니다.

예시: SSH 데몬 관리

SSH 서비스 유닛 파일 확인:

systemctl cat ssh.service

주요 설정 요소:

  • ExecStart: SSH 데몬을 시작하는 명령어
  • ExecReload: SSH 설정을 다시 로드하는 명령어
  • Restart=on-failure: 충돌 시 자동 재시작

서비스 상태 확인

sudo systemctl status ssh.service

이 출력은 부팅 시 활성화 여부, 실행 중 여부, 프로세스 ID, 문제 해결을 위한 로그 메시지를 표시합니다.

서비스 관리

명령어설명
sudo systemctl stop ssh.service서비스 중지
sudo systemctl start ssh.service서비스 시작
sudo systemctl restart ssh.service서비스 재시작 (새 설정 적용)
sudo systemctl reload ssh.service활성 세션 중단 없이 설정 재로드
모든 애플리케이션이 설정 재로드를 지원하지는 않습니다.

서비스 활성화 및 비활성화

명령어설명
sudo systemctl disable ssh.service부팅 시 자동 시작 비활성화
sudo systemctl enable ssh.service부팅 시 자동 시작 활성화
sudo systemctl enable --now ssh.service즉시 시작 + 자동 시작 활성화
sudo systemctl disable --now ssh.service즉시 중지 + 자동 시작 비활성화
원격 시스템에서 SSH와 같은 중요한 서비스를 비활성화하면 접근이 불가능해질 수 있습니다.

서비스 마스킹

문제가 있는 서비스의 자동 활성화 방지:

sudo systemctl mask atd.service

마스킹된 서비스는 시작하거나 활성화할 수 없습니다. 정상 운영으로 복원:

sudo systemctl unmask atd.service

서비스 유닛 목록

상태에 관계없이 사용 가능한 모든 서비스 조회:

sudo systemctl list-units --type service --all

활성, 비활성, 활성화, 비활성화 등 다양한 상태의 서비스를 표시합니다.

요약

Systemd는 설정 유닛을 통해 효율적인 Linux 서비스 관리를 가능하게 합니다. 기본적인 시작/중지 작업부터 고급 마스킹까지 이 명령어들을 숙달하면 신뢰할 수 있는 시스템 운영과 지속적인 서비스 가용성을 보장합니다.