| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
| 29 | 30 | 31 |
- Spring
- 오블완
- APM
- 바이브코딩
- 공부
- Pinpoint
- tucker의 go 언어 프로그래밍
- minikube
- kotlin
- go
- Kubernetes
- AWS EKS
- 기록으로 실력을 쌓자
- golang
- 정보처리기사 실기 기출문제
- Java
- CKA
- MySQL
- CloudWatch
- PETERICA
- CKA 기출문제
- Rag
- SRE
- AI
- LLM
- Linux
- aws
- 티스토리챌린지
- 코틀린 코루틴의 정석
- kotlin coroutine
- Today
- Total
피터의 개발이야기
[Linux] 운영체제마다 다른 시작 프로그램 관리 방식 본문
ㅁ 들어가며
서버를 운영하다 보면 서비스를 시스템 시작과 함께 자동으로 실행해야 하는 경우가 많다.
웹 서버, 모니터링 에이전트, 메시지 큐, 데이터베이스 등 대부분의 인프라 서비스는
부팅과 동시에 올라와야 하기 때문이다.
흥미로운 점은 운영체제마다 시작 프로그램을 관리하는 방식과 명령어가 전부 다르다는 것이다.
Linux에서는 systemd를 사용하고,
macOS는 launchd,
Windows는 Service Manager를 사용한다.
이번 글에서는 운영체제별 시작 프로그램 관리 구조와 명령어의 차이를 정리하였다.
ㅁ 왜 운영체제마다 서비스 관리 방식이 다른가
운영체제가 부팅될 때 가장 먼저 실행되는 프로그램을 init 시스템이라고 한다.
이 init 시스템의 역할은 다음과 같다.
- 시스템 초기화
- 서비스 실행
- 프로세스 관리
- 시스템 상태 유지
운영체제마다 이 init 시스템을 구현하는 방식이 달라지면서
서비스 관리 방법도 자연스럽게 달라졌다.
대표적인 서비스 관리 시스템은 다음과 같다.
| 운영체제 | 서비스 관리 시스템 |
| Linux | systemd |
| macOS | launchd |
| Windows | Service Control Manager |
ㅁ Linux의 서비스 관리 : systemd
현재 대부분의 Linux 배포판(Ubuntu, Debian, CentOS, RHEL 등)은 systemd를 사용한다.
systemd는 서비스 관리 플랫폼에 가까운 구조를 가지고 있다.
서비스는 Unit 파일이라는 설정 파일로 정의된다.
/etc/systemd/system/my-service.service
서비스 관리는 systemctl 명령어로 수행한다.
대표적인 명령어
systemctl start nginx
systemctl stop nginx
systemctl restart nginx
systemctl enable nginx
systemctl status nginx
여기서 중요한 특징은 systemd가 의존성 기반 서비스 실행 구조를 가진다는 점이다.
ㅁ macOS의 서비스 관리 : launchd
macOS는 launchd라는 시스템을 사용한다.
Linux의 systemd와 유사한 역할을 하지만 구조적으로는 이벤트 기반 서비스 실행 모델에 가깝다.
서비스 설정은 plist 파일로 정의된다.
/Library/LaunchDaemons
~/Library/LaunchAgents
관리 명령어는 launchctl이다.
launchctl load service.plist
launchctl unload service.plist
launchctl start service
launchctl stop service
launchctl list
macOS의 특징은 다음과 같다.
- 사용자 서비스와 시스템 서비스를 분리
- 이벤트 기반 실행
- 로그인 기반 서비스 실행
즉 Linux처럼 서버 서비스 중심 구조라기보다는 데스크톱 환경 중심 구조다.
ㅁ 운영체제별 서비스 관리 구조 비교
| OS | 서비스 시스템 | 설정 방식 | 관리 명령 |
| Linux | systemd | unit 파일 | systemctl |
| macOS | launchd | plist 파일 | launchctl |
| Windows | SCM | registry / service DB | sc, net |
겉으로 보면 단순히 명령어 차이처럼 보이지만
사실은 운영체제 철학의 차이가 반영된 결과다.
ㅁ 인프라 운영 관점에서 보는 차이
실제 인프라 환경에서는 다음과 같은 특징이 나타난다.
Linux
- 서버 인프라 표준
- systemd 기반 서비스 운영
macOS
- 개발 환경 중심
- 사용자 세션 기반 서비스
Windows
- 기업 애플리케이션 서비스 중심
특히 클라우드 서버, Docker, Kubernetes 환경에서는 Linux + systemd 구조가 사실상 표준이다.
그래서 DevOps나 SRE 업무를 하다 보면
결국 systemctl 명령어를 가장 많이 사용하게 된다.
ㅁ 마무리
운영체제마다 시작 프로그램 관리 방식이 다른 이유는
단순히 명령어 차이가 아니라 시스템 아키텍처 차이 때문이다.
- Linux → 의존성 기반 서비스 그래프 (systemd)
- macOS → 이벤트 기반 실행 (launchd)
- Windows → 서비스 관리자 구조 (SCM)
이 차이를 이해하면 새로운 운영체제를 접하더라도
서비스가 어떻게 시작되고 관리되는지 구조적으로 이해할 수 있다.
'Linux' 카테고리의 다른 글
| [FFmpeg] ffmpeg의 DNS 캐싱 문제 (0) | 2025.05.20 |
|---|---|
| [Linux] curl을 사용하여 HTTP 헤더를 확인 방법 (1) | 2025.03.15 |
| [Linux] SSH Keygen: 안전한 원격 접속을 위한 키 생성 도구 (0) | 2025.01.16 |
| [FFmpeg] FFprobe 사용법: 멀티미디어 파일 분석하기 (0) | 2025.01.09 |
| [Linux] sudo 명령어의 -E 옵션 알아보기 (0) | 2024.12.04 |
