리눅스 정보실
리눅스 서비스 관리 완벽 정리 systemctl과 service 차이
고지존
2025. 8. 31. 15:32
리눅스 서버 운영에서 서비스 관리는 핵심입니다. 이번 글에서는 systemctl과 service 명령어 차이, 그리고 왜 어떤 서버에서는 둘 다 되거나 안 되는지까지 명확하게 설명합니다.
1. 리눅스 서비스 관리란?
리눅스 서비스 관리는 시스템에서 동작하는 프로세스를 제어하는 작업입니다. 대표적인 예로 웹 서버(Apache, Nginx), 데이터베이스(MySQL), SSH 서비스가 있습니다. 이러한 서비스는 systemctl
또는 service
명령어로 제어합니다.
2. systemctl과 service 차이
systemctl vs service 차이는 단순히 명령어가 다른 것이 아니라, 내부 구조와 동작 방식이 다릅니다.
2.1 역사적 차이
- service: SysV init 기반 스크립트를 실행 (
/etc/init.d/
) - systemctl: systemd 기반 Unit 파일로 서비스 관리
2.2 기능 차이
기능 | systemctl | service |
---|---|---|
자동 실행 설정 | 지원 (enable/disable ) |
제한적 |
로그 관리 | journalctl 가능 |
불가 |
병렬 실행 | 지원 | 지원 안 함 |
2.3 언제 어떤 명령어를 쓸까?
- systemctl: CentOS 7+, Ubuntu 16.04+ 최신 배포판에서 표준
- service: 구형 배포판 또는 호환성 유지 목적
3. 왜 서버마다 두 명령어가 다르게 동작할까?
서버마다 service
또는 systemctl
명령어가 다르게 동작하는 이유는 초기화 시스템(init system)과 호환성 스크립트 때문입니다.
3.1 초기화 시스템 차이
- SysV init (구형) → service 명령어 사용
- systemd (신형) → systemctl 명령어 사용
3.2 확인 방법
ps -p 1 -o comm=
# 출력이 systemd → systemctl 사용
# 출력이 init → service 사용
3.3 둘 다 되는 경우
최신 배포판은 호환성을 위해 service 명령어를 systemctl에 연결합니다. 예를 들어, service httpd start
를 입력하면 내부적으로 systemctl start httpd.service
를 실행합니다.
3.4 왜 service가 안 될 때가 있을까?
- 최신 minimal 설치 →
initscripts
패키지 없음 → service 명령어 미지원 - 완전 systemd 환경 → 호환 스크립트 제거됨
4. 실습: Apache 서비스 관리
목표: Apache 설치 후 systemctl로 서비스 제어
- Apache 설치
# CentOS sudo yum install httpd -y # Ubuntu sudo apt-get install apache2 -y
- 서비스 시작 및 상태 확인
sudo systemctl start httpd sudo systemctl status httpd
- 자동 실행 설정
sudo systemctl enable httpd
- 로그 확인
journalctl -u httpd --since "10 minutes ago"

5. 자주 하는 실수와 해결책
- 서비스가 시작 안 됨 →
journalctl -xe
확인 - 포트 충돌 →
ss -tuln | grep :80
확인 후 해결 - 자동 실행 안 됨 →
systemctl enable 서비스명
다시 실행