2026. 6. 14. 17:00ㆍ리눅스
Ⅰ. Linux 서비스 운영 방식
● CentOS 6 운영 방식 vs CentOS 7 이상 운영 방식
| Linux 서비스 운영 방식 |
구분 | CentOS 6 (init 시스템) | CentOS 7 이상 (systemd 시스템) |
| 기본 프로세스 | init 프로세스 | systemd 프로세스 | |
| 서비스 관리 방식 | 스크립트 기반 (/etc/init.d/ 하위의 start / stop 스크립트 사용) |
단일 프로세스 (systemd)가 모든 서비스와 의존 관계 통합 관리 |
|
| 서비스 설정 위치 | /etc/init.d/ 폴더의 개별 Shell 스크립트 | /usr/lib/systemd/system/*.service 단위 파일 | |
| 서비스 제어 도구 | service, chkconfig 명령 사용 | systemctl 명령 사용 | |
| 병렬 서비스 실행 |
순차 실행 | 의존 관계 기반 병렬 실행 지원 | |
| 부팅 속도 느림 | 부팅 속도 향상 | ||
| 로그 관리 방식 | syslog, rsyslog 별도 로그 수집 | journald 통합 로그 관리 (systemd 내부) | |
| 프로세스 관리 단위 | 개별 스크립트별로 독립 실행 | Unit 단위로 통합 관리 (서비스, 소켓, 타이머 등) |
|
| 의존성 관리 | 서비스 간 순서 수동 지정 | After, Requires, Wants 옵션을 통해 자동 관리 | |
| 구성 파일 확장성 | 단순 Shell 스크립트 기반 | .service, .target, .socket, .timer 등 다양한 유닛 단위 확장 가능 |
● init
| init | 구분 | 설명 | |
| 개념 | 리눅스 부팅 시 최초로 실행되는 프로세스 (PID 1) | ||
| 커널이 로드된 이후 시스템의 모든 서비스 (daemon)를 순차적으로 실행하고 관리하는 초기화 시스템 | |||
| 역할 | 부팅 과정의 시작점으로서 커널이 실행된 직후 시스템 환경을 초기화하고 각종 데몬 실행 | ||
| 서비스 (프로세스) 관리자로사 로그인, 네트워크, 파일 시스템, cron 등 필수 프로세스 순차적으로 시작 | |||
| 종료 시에도 각 서비스를 역순으로 안전하게 종료시킴 | |||
| 운영 방식 | /etc/inittab 파일에 정의된 런레벨 (Runlevel)에 따라 서비스들 순차적으로 실행 | ||
| 각 런레벨별 실행 스크립트는 /etc/rc.d/rcN.d (N = 0 ~ 6) 디렉터리에 존재 | |||
| 스크립트는 S (service start) 또는 K (kill) 접두어를 통해 실행 / 중지 순서 지정 | |||
| 런레벨 (Runlevel) |
레벨 | 설명 | |
| 0 | 시스템 종료 (shutdown) | ||
| 1 | 단일 사용자 모드 (maintenance) | ||
| 2 | 다중 사용자 모드 (네트워크 미사용) | ||
| 3 | 다중 사용자 모드 (CLI) | ||
| 4 | 미사용 (사용자 정의) | ||
| 5 | 다중 사용자 모드 (GUI) | ||
| 6 | 재부팅 (reboot) | ||
| 서비스 관리 구조 | 서비스 실행 스크립트는 /etc/init.d 디렉터리에 저장 | ||
| 명령어 service [name] start 사용 | |||
| 장점 | 구조가 단순하고 이해하기 쉬움 | ||
| 스크립트 기반이라 커스터마이징 용이 | |||
| 작은 시스템 (임베디드 환경 등)에 적합 | |||
| 단점 | 서비스가 순차적으로 실행되어 부팅 속도 느림 | ||
| 의존성 관리 부족으로 서비스 간 충돌 가능 | |||
| 장애 발생 시 자동 복구 기능 없음 | |||
| 로그 관리가 분산되어 서비스별로 따로 확인 필요 | |||
| 대표 명령어 | service <서비스명> start / stop / restart / status | ||
| chkconfig <서비스명> on / off (부팅 시 자동 실행 설정) | |||
| runlevel (현재 런레벨 확인) | |||
| init <번호> (런레벨 전환) | |||
● systemd
| systemd | 구분 | 설명 | |
| 개념 |
리눅스의 부팅 과정부터 서비스, 프로세스, 자원 관리까지 통합적으로 담당하는 시스템 관리 데몬 | ||
| 기존 SysV init 시스템 대체 | |||
| 이름은 'system'을 관리하는 'daemon'에서 유래 | |||
| 역할 | 시스템 전체의 시작 (startup), 종료 (shutdown), 서비스 관리 (service management) 총괄 | ||
| 부팅 시 PID 1로 가장 먼저 실행되어 커널 로드 이후 필요한 서비스와 프로세스를 병렬로 구동 | |||
| 모든 서비스의 상태를 감시 및 제어 | |||
| 도입 배경 (기존 init의 한계) |
기존 init은 모든 서비스를 순차적으로 실행하기 때문에 부팅 속도 느리고, 서비스 간 의존 관계 자동으로 처리 불가능 |
||
| 스크립트 기반이라 관리 복잡하고, 장애 시 수동으로 재시작 필요 | |||
| 도입 목적 | 서비스 간 의존 관계를 분석해 병렬 실행 및 자동화 구현 | ||
| 부팅 속도 향상 및 충돌 방지 | |||
| 서비스 관리, 로깅, 타이머, 장치 제어, 마운트 관리 기능을 하나의 프로세스 (systemd)로 통합 | |||
| 서비스 상태 추적 및 자동 복구 기능 강화 | |||
| 구성 요소 | 항목 | 설명 | |
| Unit | systemd가 관리하는 최소 단위 개체 (Service, Socket, Timer, Target 등) | ||
| Target | 여러 Unit을 묶은 실행 단계 | ||
| ex) multi-user.target | |||
| Journal (journald) |
서비스 및 커널 로그 통합 관리 | ||
| Dependecy | Unit 간 관계 정의 | ||
| After=, Before=, Requires= 등 | |||
| Service Manager | systemctl 명령을 통해 서비스의 시작, 중지, 상태 제어 | ||
| 주요 Unit 종류 |
항목 | 설명 | |
| .service | 데몬 실행 제어 (ex. sshd, httpd) | ||
| .socket | 요청 발생 시 데몬 자동 실행 | ||
| .target | 실행 단계 그룹 | ||
| .timer | 예약 작업 (cron 대체) | ||
| .mount / .automount | 파일시스템 마운트 관리 | ||
| .device | 커널 장치 관리 | ||
| .path | 파일 / 디렉터리 변경 감시 기반 트리거 | ||
| 주요 특징 | 특징 | 설명 | |
| 병렬 부팅 | 서비스 간 의존 관계를 분석해 여러 프로세스 동시에 시작 | ||
| 의존성 관리 | After=, Before=, Requires= 등으로 실행 순서 제어 | ||
| 통합 로그 관리 | journald가 모든 로그 수집 | ||
| journalctl로 확인 가능 | |||
| 서비스 자동 복구 | 장애 발생 시 자동 재시작 (Restart=always) | ||
| 타이머 서비스 | cron보다 정교한 .timer 기반 스케줄링 제공 | ||
| 소켓 활성화 | 요청 시점에만 데몬 실행해 자원 낭비 최소화 | ||
| 모듈형 구조 | Unit 단위로 확장 가능 | ||
| 커스텀 서비스 정의 용이 | |||
| 부팅 과정 | 커널 로드 완료 후 systemd (PID 1) 실행 | ||
| /etc/systemd/system/default.target에서 기본 타깃 확인 (multi-user.target 등) | |||
| 관련 Unit 파일들을 불러와 의존 관계 계산 후 병렬 실행 | |||
| 모든 서비스 시작 후 사용자 로그인 환경 제공 | |||
| 핵심 효과 | 부팅 속도 향상 (병렬 실행) | ||
| 의존 관계 자동 관리 | |||
| 로그 및 서비스 통합 관리 | |||
| 장애 자동 복구 | |||
| 자원 효율적 활용 (on-demand 서비스) | |||
| 운영 자동화와 유지보수 편의성 극대화 | |||

ps –ef | head 명령을 통해 리눅스 서버에서 현재 실행 중인 프로세스 목록 중 상위 10개 확인
Ⅱ. Standalone 방식
| Standalone 방식 |
개념 | 서버가 부팅될 때 서비스 데몬을 미리 실행해 항상 메모리에 상주한 상태로 대기하는 운영 방식 |
| 동작 원리 | 부팅 시 자동으로 서비스 데몬이 시작되어 메모리에 상주함 | |
| 클라이언트 요청이 없어도 항상 프로세스 형태로 실행 중 | ||
| 클라이언트가 접속하면 즉시 응답 가능 (지연 최소화) | ||
| 특징 | 항상 활성화된 상태로 빠른 응답 속도 제공 | |
| CPU와 메모리 자원을 상시 사용하기 때문에 리소스 점유율 높음 | ||
| 시스템 자원을 많이 사용하지만 요청 빈도가 높은 서비스에 적합 | ||
| 장점 | 서비스가 상시 구동되어 응답 지연 거의 없음 | |
| 빈번한 요청 처리에 효율적 (ex. 웹 서버, DB 서버) | ||
| 단점 | 클라이언트 요청이 없을 때도 프로세스가 유지되어 리소스 낭비 발생 | |
| 서버가 많거나 서비스가 많을 경우, 메모리 부담 증가 | ||
| 대표 서비스 예시 | Apache HTTPD (웹 서버) | |
| MySQL / MariaDB (데이터베이스 서버, DB 서버) | ||
| SSHD (원격 접속 서비스) | ||
| 적용 환경 | 항상 서비스가 요청될 가능성이 높은 서버 환경 (ex. 웹 애플리케이션 서버, DB 서버, 인증 서버 등) |
Ⅱ - Ⅰ. systemctl을 이용한 서비스 데몬 확인

systemctl list-unit-files 명령을 통해 시스템 서비스 (unit 파일)들의 상태를 전체 목록으로 조회

yum –y install vsftpd 명령을 통해 vsftpd (FTP 서버) 패키지 설치

systemctl list-unit-files | grep vsftpd 명령을 통해 vsftpd 서비스의 상태 확인

systemctl status vsftpd 명령을 통해 vsftpd 서비스의 현재 동작 상태 확인
systemctl start vsftpd 명령을 통해 vsftpd 서비스 수동으로 시작
systemctl status vsftpd 명령을 통해 vsftpd 서비스가 정상적으로 실행 중인지 재확인

systemctl enable vsftpd 명령을 통해 시스템 부팅 시 자동으로 vsftpd 서비스가 실행되도록 설정
systemctl list-unit-files | grep vsftpd 명령을 통해 vsftpd 관련 유닛 파일들의 활성화 상태 조회
systemctl status vsftpd 명령을 통해 vsftpd 서비스의 현재 동작 상태 확인

systemctl start vsftpd 명령을 통해 vsftpd 서비스 수동으로 실행
systemctl enable vsftpd 명령을 통해 시스템 부팅 시 자동으로 vsftpd 서비스가 실행되도록 설정
systemctl enable —now vsftpd 명령을 통해 자동 실행 설정과 동시에 즉시 서비스 시작하도록 설정
systemctl stop vsftpd 명령을 통해 vsftpd 서비스 중지
systemctl status vsftpd 명령을 통해 vsftpd 서비스가 잘 중지되었는지 확인
Ⅲ. xinetd 방식 (On - Demand 방식)
| xinetd 방식 (On-Demand 방식) |
구분 | 설명 | |
| 개념 | 클라이언트의 요청이 있을 때만 서비스 데몬을 실행하는 요청 기반 (on-demand) 서비스 운영 방식 |
||
| 동작 원리 | 서버는 서비스 요청을 기다리는 xinetd (Extended Internet Daemon) 프로세스만 상주 | ||
| 클라이언트가 특정 포트로 요청을 보내면 xinetd가 해당 요청을 감지하고 해당 서비스 데몬을 즉시 실행 |
|||
| 요청 처리가 완료되면 서비스 데몬이 자동 종료되어 메모리 자원 절약 | |||
| 특징 | 요청이 있을 때만 프로세스가 생성되므로 시스템 자원 효율적 사용 | ||
| 요청 빈도가 적은 서비스에 적합 | |||
| 서비스 실행 시간이 짧거나 트래픽이 적은 경우 효율적 | |||
| 장점 | CPU와 메모리 사용량 절감 (필요할 때만 프로세스 실행) | ||
| 서비스 수가 많아도 부팅 속도에 영향 적음 | |||
| 단점 | 클라이언트 요청시마다 데몬을 새로 실행하므로 초기 응답 지연 발생 | ||
| 요청이 빈번한 서비스에서는 비효율적 | |||
| 대표 서비스 예시 | Telnet | ||
| FTP (vsftpd) | |||
| TFTP (Trivial File Transfer Protocol) | |||
| rsync (daemon 모드) | |||
| 설정 파일 경로 | 경로 | 설명 | |
| /etc/xinetd.conf | 기본 설정 파일 | ||
| /etc/xined.d | 개별 서비스 설정 파일들 존재 | ||
| 관리 명령어 | 명령어 | 설명 | |
| systmectl start xinetd | 서비스 시작 | ||
| systemctl status xinetd | 상태 확인 | ||
| systemctl enable xinetd | 자동 실행 설정 | ||
| 적용 환경 | 서비스 요청이 드문 서버 또는 테스트 환경 (ex. 내부 관리용 Telnet / FTP 서버, 임시 백업 서비스 등) |
||

wget 명령을 통해 xinetd 2.3.15 버전을 설치하기 위해 패키지 파일 다운로드
ls 명령을 통해 다운로드된 파일 존재 여부 확인

rpm –i xinetd-2.3.15-24.el8.x86_64.rpm 명령을 통해 xinetd 패키지 설치
rpm –qa xinetd 명령을 통해 xinetd 설치 여부 확인
ls –l /etc/xinetd,d 명령을 통해 xinetd 설정 디렉터리 존재 여부 확인

vi /etc/xinetd.d/vsftpd 명령을 통해 vi 편집기 사용하여 vsftpd 파일에 내용 입력
cat /etc/xinetd.d/vsftpd 명령을 통해 vsftpd 파일에 입력한 내용 확인
[ vsftpd 파일의 내용 ]
disable = no 명령을 통해 FTP 서비스 활성화하도록 지정
socket_type = stream 명령을 통해 TCP 스트림 소켓 사용하도록 설정
protocol = tcp 명령을 통해 TCP 프로토콜 사용하도록 설정
wait = no 명령을 통해 여러 연결을 동시에 처리하도록 설정
user = root 명령을 통해 FTP 서비스 프로세스가 root 권한으로 실행되도록 설정
server = /usr/sbin/vsftpd 명령을 통해 FTP 서비스로 실행할 프로그램 경로 지정
server_args = /et/vsftpd/vsftpd.conf 명령을 통해 vsftpd 실행 시 사용할 설정 파일 경로 지정

systemctl restart xinetd 명령을 통해 xinetd 데몬 재시작
systemctl status xinetd 명령을 통해 xinetd 서비스가 정상 작동 중인지 확인
ps –ef | grep xinetd 명령을 통해 실행 중인 프로세스에 xinetd 서비스가 동작하는지 검사
ps –ef | grep vsftpd 명령을 통해 vsftpd 존재 여부 확인

yum –y install ftp 명령을 통해 ftp 클라이언트 프로그램 설치

ftp 192.168.2.203 명령을 통해 IP 주소가 192.168.2.203인
Server1에 접속하여 user1이라는 계정으로 로그인 시도

ps –ef | grep vsftpd 명령을 통해 vsftpd 존재 여부 확인

rm –rf /etc/xinetd.d/vsftpd 명령을 통해 xinetd가 관리하는 vsftpd 관련 설정 파일 삭제
systemctl restart xinetd 명령을 통해 삭제 후 변경 사항을 반영하기 위해 xinetd 서비스 재시작
systemctl restart vsftpd 명령을 통해 vsftpd 서버 직접 재시작
systemctl enable —now vsftpd 명령을 통해 부팅시 vsftpd 서비스가
자동으로 시작되도록 활성화하고, 즉시 현재 세션에서 서비스 시작
systemctl status vsftpd 명령을 통해 vsftpd 서비스 상태 확인
● Standalone vs xinetd 비교
| 구분 | Standalone 방식 | xinetd 방식 (On - Demand) |
| 개념 | 서비스 데몬이 부팅 시 자동으로 실행되어 항상 메모리에 상주하는 방식 |
클라이언트 요청이 있을 때만 xinetd가 해당 서비스 데몬을 실행하는 방식 |
| 동작 시점 | 시스템 부팅 시 즉시 실행 및 상시 대기 | 클라이언트 요청 시점에만 데몬 실행 |
| 프로세스 상태 | 항상 실행 중 (서비스 프로세스 상주) |
요청이 없으면 실행되지 않음 (xinetd만 상주) |
| 응답 속도 |
즉시 처리 가능하여 응답 속도 빠름 | 요청 시 데몬 새로 띄워야해 응답 속도 느림 |
| 자원 사용량 | 높음 (항상 메모리와 CPU 사용) |
낮음 (요청 시에만 리소스 사용) |
| 적합한 환경 | 요청이 빈번한 서비스 (항상 사용되는 서버) |
요청이 드문 서비스 (간헐적 접근) |
| 장점 | 즉각 응답 가능 (지연 없음) | 시스템 자원 절약 |
| 빈번한 트래픽에 효율적 | 서비스가 많아도 부팅 속도에 영향 적음 | |
| 단점 | 요청이 없어도 리소스 점유 | 요청마다 초기 지연 발생 |
| 비효율적 메모리 사용 | 트래픽이 많으면 부하 증가 | |
대표 서비스 예시 |
ex) Apache | ex) Telnet |
| ex) MySQL | ex) FTP | |
| ex) MariaDB | ex) TFTP | |
| ex) SSHD | ex) rsync (daemon) | |
| 설정 관리 위치 | /etc/systemd/system/ | /etc/xinetd.conf |
| /etc/init.d/ | /etc/xinetd.d/ | |
| 관리 명령어 | systemctl start / stop / restart [서비스명] | systemctl start / stop / restart xinetd |
| 기본 실행 프로세스 | 서비스 자체 데몬 (ex. httpd, mysqld 등) |
xinetd 프로세스 하나가 다수 서비스 요청 감시 |
Ⅳ. systemd 프로세스
| systemd 프로세스 | 구분 | 설명 | |
| 개념 | CentOS 7 이후부터 리눅스의 서비스 및 시스템 초기화를 담당하는 PID 1번 프로세스로, 기존 init 시스템을 대체한 차세대 부팅 및 서비스 관리 시스템 |
||
| CentOS 6 (init 방식) |
init이 PID 1번 프로세스로 동작 | ||
| 시스템 부팅 시 가장 먼저 실행 | |||
| 서비스 제어에 service, chkconfig 명령 사용 | |||
| 서비스 스크립트는 /etc/init.d/ 디렉터리에 존재 | |||
| start, stop, restart 등의 동작 수행 | |||
| CentOS 7 (systemd 방식) |
systemd가 PID 1번 프로세스로 동작 | ||
| 부팅 속도 향상 및 서비스 의존성 자동 관리 지원 | |||
| 기존 명령어 대신 systemctl 명령어로 서비스 제어 | |||
| 병렬 서비스 실행 및 상태 모니터링 가능 | |||
| 주요 디렉터리 | 디렉터리리 | 설명 | |
| /etc/systemd/ | 사용자 정의 설정 파일 저장 위치 | ||
| /lib/systemd/ | 바이너리 실행 파일 저장 경로 | ||
| /lib/systemd/system/ | Service, Socket, Target 파일이 위치 (서비스 단위 정의) |
||
| 대표 명령어 | 설명 | 명령어 | |
| 서비스 시작 | systemctl start [서비스명] | ||
| 서비스 중지 | systemctl stop [서비스명] | ||
| 서비스 재시작 | systemctl restart [서비스명] | ||
| 서비스 상태 확인 | systemctl status [서비스명] | ||
| 부팅 시 자동 실행 설정 | systemctl enable [서비스명] | ||
| 자동 실행 해제 | systemctl disable [서비스명] | ||
| 장점 | 서비스 간 의존성 자동 분석 및 관리 | ||
| 병렬 서비스 실행으로 부팅 속도 향상 | |||
| journalctl을 통한 로그 통합 관리 | |||
| 서비스, 소켓, 타겟 단위의 체계적 구조 제공 | |||
| 관련 로그 명령어 | 명령어 | 설명 | |
| journalctl -xe | 최근 서비스 실행 로그 확인 | ||
| journalctl -u [서비스명] | 툭정 서비스 로그 확인 | ||
| 구성 단위 (Unit) |
단위 | 설명 | |
| Service Unit | 개별 서비스 정의 파일 (.service) | ||
| Socket Unit | 네트워크 / IPC 소켓 단위 (.socket) | ||
| Target Unit | 서비스 그룹 (부팅 단계) 정의 (.target) | ||

ls –l /lib/systemd/system | grep vsftpd 명령을 통해
systemd 기본 시스템 서비스 디렉터리에서 vsftpd 관련 서비스 파일 목록 필터링하여 나열
cat /lib/systemd/system/vsftpd.service 명령을 통해 vsftpd.service라는 서비스 단위 파일 내용 출력

systemctl enable —now vsftpd.service 명령을 통해 vsftpd 서비스를 부팅 시 자동으로
시작하도록 활성화하고 지금 바로 서비스 실행하도록 설정
systemctl status vsftpd 명령을 통해 vsftpd 서비스의 현재 상태 확인

rpm –e vsftpd 명령을 통해 vsftpd 서비스 삭제
ls –l /lib/systemd/system | grep vsftpd 명령을 통해 vsftpd 서비스가 잘 삭제되었는지 확인

yum –y install vsftpd 명령을 통해 vsftpd 서비스 다시 설치
ls –l /usr/lib/systemd/system | grep vsftpd 명령을 통해 vsftpd 서비스가 잘 설치되었는지 확인

systemctl enable —now vsftpd.service 명령을 통해 vsftpd 서비스를 시스템 부팅 시
자동으로 시작하도록 활성화하고, 즉시 서비스를 시작하도록 설정
cat /lib/systemd/system/vsftpd.service 명령을 통해 vsftpd가
systemd에서 관리될 때 사용하는 서비스 단위(unit) 파일 내용 출력
systemctl status vsftpd 명령을 통해 현재 vsftpd 서비스가 정상적으로 작동하는지 확인

cd /usr/local 명령을 통해 홈 디렉터리에서 /usr/local 디렉터리로 이동
wget 명령을 통해 Tomcat 9.0.108 버전의 압축 파일 다운
ls 명령을 통해 Tomcat이 잘 다운로드 되었는지 확인

tar xzf apache-tomcat-9.0.108.tar.gz 명령을 통해
Tomcat 압축 파일을 현재 디렉터리인 /usr/local 디렉터리에 압축 해제
ls 명령을 통해 압축이 풀린 apache-tomcat-9.0.108 디렉터리가 생긴 것 확인
ln –s apache-tomcat-9.0.108 tomcat 명령을 통해
apache-tomcat-9.0.108 디렉터리에 대해 tomcat이라는 심볼릭 링크 생성
ls tomcat 명령을 통해 심볼릭 링크가 가리키는 디렉터리 내부 확인
ls tomcat/bin 명령을 통해 Tomcat 실행과 관련된 스크립트와 실행 파일 압축 해제 확인

useradd —system –s /sbin/nologin tomcat 명령을 통해 시스템 계정으로 tomcat 사용자 추가
cat /etc/passwd | grep tomcat 명령을 통해 시스템 전체 사용자 목록 중 tomcat 사용자가 잘 등록되었는지 확인
chown -R tomcat:tomcat /usr/local/apache-tomcat-9.0.108 명령을 통해 Tomcat 설치 폴더 및 하위 파일들의
소유권을 모두 tomcat 사용자와 tomcat 그룹으로 변경해, tomcat 사용자가 모든 파일을 읽고 쓸 수 있도록 설정
ls –l /usr/local/apache-tomcat-9.0.108 명령을 통해 권한이 잘 변경되었는지 확인

vi /lib/systemd/system/tomcat.service 명령을 통해 vi 편집기 사용하여 tomcat.service에 내용 입력
cat /lib/systemd/system/tomcat.service 명령을 통해 tomcat.service에 입력된 내용 확인

rm –rf /lib/systemd/system/tomcat.service 명령을 통해 /lib/systemd/system/tomcat.service 삭제
ls –l /lib/systemd/system/tomcat.service 명령을 통해 잘 삭제되었는지 확인
rm –rf tomcat 명령을 통해 tomcar으로 시작하는 것 삭제
rm -rf apache* 명령을 통해 apache로 시작하는 것 삭제
ls 명령을 통해 잘 삭제되었는지 확인
Ⅴ. service와 socket의 차이점
| 구분 | Service Unit (.service) | Socket Unit (.socket) | ||
| 개념 | systemd에서 실제 서비스를 실행하고 관리하는 단위 (Unit) | systemd에서 클라이언트 요청이 발생할 때만 해당 서버를 자동으로 실행하도록 관리하는 단위 (Unit) |
||
| CentOS 6 시절의 Standalone 방식과 유사 | CentOS 6의 xinetd (On - Demand) 방식과 유사 | |||
| 동작 방식 | 시스템 부팅 시 서비스가 즉시 실행되어 메모리에 상주 | 클라이언트 요청을 감시하는 소켓 (Socket)만 상주 | ||
| 클라이언트 요청이 없어도 서비스 프로세스가 항상 대기 중 | 요청 발생 시 자동으로 관련 .service 파일을 실행하여 서비스 시작 |
|||
| 파일 위치 | /usr/lib/systemd/system/[서비스명].service | /usr/lib/systemd/system/[서비스명].socket | ||
| 파일 역할 | 서비스 실행 방식, 명령어, 실행 사용자, 재시작 정책 등 정의 | 서비스와 연결될 포트, 프로토콜 (TCP / UDP), 활성화 조건 등 정의 |
||
| 서비스 예시 | 예시 | 설명 | 예시 | 설명 |
| sshd.service | SSH 서버 데몬 관리 | cups.socket | 프린터 요청 감시 | |
| httpd.service | Apahce 웹 서버 실행 | avahi-daemon.socket | 네트워크 탐색 요청 발생 시 실행 |
|
| mariadb.service | DB 서버 실행 | dbus.socket | IPC 요청 시 활성화 | |
| 장점 | 즉시 응답 가능 (상시 실행) | 요청이 있을 때만 실행되어 리소스 절약 | ||
| 요청 빈도가 많은 서비스에 효율적 | 요청이 적은 서비스에 효율적 | |||
| 단점 | 항상 메모리 점유 (리소스 소모 많음) | 요청 시 데몬 실행으로 초기 지연 발생 | ||
| 관련 명령어 | systemctl start [서비스명].service | systemctl start [서비스명].socket | ||
| systemctl enable [서비스명].service | systemctl enable [서비스명].socket | |||
| 동작 관계 | 독립적으로 실행 (소켓과 무관하게 동작) | .socket이 .service 실행을 트리거 (Trigger) 함 | ||
'리눅스' 카테고리의 다른 글
| Linux 네트워크 (0) | 2026.06.14 |
|---|---|
| Linux 원격 파일 접속 & 파일 전송 (0) | 2026.06.14 |
| Linux 스케줄링 관리 (0) | 2026.06.14 |
| Linux 백업 관리 (0) | 2026.06.14 |
| Linux 패키지 관리 (0) | 2026.06.14 |