CodeGym /행동 /Docker SELF /서비스 관리 기본: systemctl 명령어 (시작, 중지, 재시작 서비스)

서비스 관리 기본: systemctl 명령어 (시작, 중지, 재시작 서비스)

Docker SELF
레벨 3 , 레슨 0
사용 가능

서비스 관리 기본: systemctl 명령어 (시작, 중지, 재시작 서비스)

1. Linux에서 서비스란 무엇일까?

서비스는 모든 현대적인 Linux 배포판의 핵심이야. Nginx에서 웹 서버를 실행하고 싶어? 관련 서비스를 시작하고 설정하면 돼. MySQL 데이터베이스를 실행하고 싶어? 물론, 그것도 서비스야. 심지어 네가 좋아하는 cron도, 멋진 bash 스크립트를 실행시켜주는 녀석이지, 이것 또한 서비스야. 서비스 관리는 너가 직장에서뿐만 아니라 개인 프로젝트에서도 반드시 활용하게 될 기술이야. 참고로, 면접에서 "서비스를 어떻게 중지하겠어?"라는 질문은 네가 생각했던 것보다 자주 나온다.

정의와 역할

Linux에서 서비스란 백그라운드에서 동작하는 프로그램이야 (영어 "daemon"에서 온 단어). 이런 프로그램들은 시스템이 부팅될 때 자동으로 실행되거나 필요에 따라 수동으로 실행될 수도 있어. 이들은 다음과 같은 특정 작업을 수행해:

  • 웹 요청 처리 (nginx/apache 등).
  • 원격 접속 지원 (openssh 등).
  • 예약된 작업 실행 (cron 등).

결국, 서비스는 사용자가 눈치채지 못해도 시스템 작동에 있어서 필수적인 작업을 수행하는 "일꾼" 같은 존재야.


2. systemctl을 사용한 서비스 관리 기본

systemctl이란?

systemctlsystemd를 사용하는 시스템에서 서비스를 관리하기 위한 주요 명령어야. 최신 Linux 배포판(예: Ubuntu, Fedora 또는 CentOS)을 사용 중인 경우, 대부분 systemd를 사용하는 시스템일 거야.

주요 기능

  1. 서비스 시작: 비활성화된 서비스를 시작해.
  2. 서비스 중지: 실행 중인 서비스를 중지해.
  3. 서비스 재시작: 서비스를 중지한 후 다시 시작해.
  4. 상태 확인: 서비스의 현재 상태를 확인해.

기본 명령어 구조는 다음과 같아:

sudo systemctl [액션] [서비스_이름]

서비스 시작 및 중지

시작:

예를 들어, 웹 서버 nginx를 설치했고, 이걸 실행하고 싶어. 이럴 때 start 명령어를 사용하면 돼:

sudo systemctl start nginx

중지:

그런데 웹 서버를 잠시 멈추고 싶다면? 이럴 때 stop 명령어를 사용하면 돼:

sudo systemctl stop nginx

서비스 재시작

재시작은 설정 변경 사항을 적용하거나 단순히 서비스를 "새로 고침"하고 싶을 때 필요하지. 서비스를 깨우는 느낌으로 restart 명령어를 사용해:

sudo systemctl restart nginx

상태 확인

nginx가 작동 중인지 확실하지 않아? status 명령어를 사용하면 상세 정보를 제공해:

sudo systemctl status nginx

출력에서 다음 항목을 확인할 수 있을 거야:

  • 프로세스의 고유 ID (PID).
  • 시작 시간.
  • 문제가 있을 경우 오류 로그.

출력 예시:

nginx.service - A high performance web server
   Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
   Active: active (running) since Tue 2023-11-01 09:00:00 UTC; 10min ago
   ...

3. 서비스 자동 시작

자동 시작 활성화

시스템 시작 시마다 서비스가 자동으로 시작되게 설정하려면 다음 명령어를 사용하세요:

sudo systemctl enable nginx

자동 시작 비활성화

서비스가 부팅 시 더 이상 시작되지 않게 하려면:

sudo systemctl disable nginx

자동 시작이 활성화되었는지 확인하는 간단한 방법은 다음과 같습니다:

systemctl is-enabled nginx

서비스 관리 실습

cron 서비스를 예로 들어 종합 연습을 해봅시다.

  1. cron 서비스를 시작하세요:

    sudo systemctl start cron
    
  2. 작동 중인지 확인하세요:

    sudo systemctl status cron
    

    상태가 "active (running)"인지 확인하세요.

  3. cron 서비스를 중지하세요:

    sudo systemctl stop cron
    

    상태가 "inactive (dead)"로 변경되었는지 확인하세요.

  4. cron 서비스를 재시작하세요:

    sudo systemctl restart cron
    

4. 활성화된, 비활성화된 및 오류로 종료된 서비스 간의 차이점

서비스는 다양한 상태를 가질 수 있어. 주요 상태는 다음과 같아:

  1. Active (running) — 서비스가 활성화되어 정상적으로 작동 중이야.
  2. Inactive (dead) — 서비스가 중지된 상태야.
  3. Failed — 서비스 시작, 중지 또는 실행 중에 오류가 발생했어.

에러 상태에 있는 모든 서비스를 빠르게 찾으려면 다음 명령어를 사용해:

systemctl --failed

5. 일반적인 실수 및 함정

오류: Unit not found

다음과 같은 메시지가 나타날 경우:

Failed to start nginx.service: Unit nginx.service not found.

필요한 서비스가 설치되지 않았거나 이름이 잘못 입력되었을 수 있습니다. 정확한 이름 확인:

systemctl list-unit-files | grep nginx

권한 오류

sudo 권한으로 커맨드를 실행하는 것을 잊으면, 보통 액세스 거부 메시지가 나옵니다:

Permission denied

systemctl 명령어 앞에 sudo를 추가하는 걸 잊지 마세요.


6. 실제 프로젝트에서의 활용

서비스 관리는 Linux와 관련된 모든 역할에서 사용할 일이 많아:

  • DevOps: 모든 시스템 서비스를 자동화하고 관리하기.
  • 서버 관리: 웹 서버, 데이터베이스 및 기타 서비스 상태를 제어하기.
  • Linux에서 개발: 프로젝트와 관련된 서비스를 관리하는 방법을 알아야 해 (예: 개발 서버 실행).

결론적으로, systemctl 명령어를 이해하는 것은 단순히 추상적인 기술이 아니라 실제 작업 도구야. 예를 들면: 웹사이트 업데이트 후 웹 서버를 재시작해야 할 때? sudo systemctl restart nginx 한 번 호출하면 끝!

코멘트
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION