Linux 서비스 관리

LinuxBeginner
지금 연습하기

소개

Linux 서비스 관리에 대한 이 실습 랩에 오신 것을 환영합니다. Linux 의 서비스는 네트워크 연결, 로깅, 인쇄 등과 같은 중요한 시스템 기능을 처리하는 백그라운드 프로세스입니다. 이러한 서비스를 효율적으로 관리하는 것은 Linux 관리자에게 필수적인 기술입니다.

이 랩에서는 대부분의 최신 Linux 배포판의 표준 init 시스템이자 서비스 관리자인 systemd 스위트의 일부인 systemctl 명령을 사용하는 방법을 배우게 됩니다. 서비스 상태를 확인하고, 서비스를 시작 및 중지하여 제어하고, 시스템 부팅 시 서비스 동작을 구성하는 연습을 할 것입니다.

이 랩을 마치면 Linux 서비스 관리의 기본 사항을 이해하게 되어 Linux 환경에서 시스템 서비스를 효과적으로 제어할 수 있게 됩니다.

시스템 서비스 상태 이해 및 확인

이 단계에서는 systemctl 명령을 사용하여 시스템 서비스의 상태를 확인하는 방법을 배우게 됩니다. 서비스 상태를 이해하는 것은 효과적인 서비스 관리의 첫 번째 단계입니다.

시스템 서비스란 무엇인가요?

시스템 서비스 (또는 데몬) 는 다양한 시스템 작업을 수행하기 위해 백그라운드에서 실행되는 프로그램입니다. 일반적으로 부팅 시 시작되어 시스템이 종료될 때까지 계속 실행됩니다. 웹 서버, 데이터베이스 서버, SSH 서버 및 인쇄 서비스 등이 있습니다.

서비스 상태 확인

Linux 시스템에 대한 원격 액세스에 일반적으로 사용되는 SSH 서비스 (sshd) 의 상태를 확인하는 것으로 시작해 보겠습니다.

  1. LabEx VM 환경에서 터미널을 엽니다. 이미 기본 디렉토리인 /home/labex/project에 있어야 합니다.

  2. SSH 서비스의 상태를 확인하려면 다음 명령을 실행합니다.

    systemctl status sshd

    다음과 유사한 출력이 표시됩니다.

    ● ssh.service - OpenBSD Secure Shell server
      Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
      Active: active (running) since Wed 2023-10-25 08:15:00 UTC; 1h 30min ago
        Docs: man:sshd(8)
              man:sshd_config(5)
     Process: 1234 ExecStartPre=/usr/sbin/sshd -t (code=exited, status=0/SUCCESS)
    Main PID: 1235 (sshd)
       Tasks: 1 (limit: 4915)
      Memory: 5.6M
         CPU: 500ms
      CGroup: /system.slice/ssh.service
              └─1235 sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups

    이 출력은 서비스에 대한 중요한 정보를 제공합니다.

    • Loaded: 서비스가 로드되었는지, 부팅 시 시작하도록 활성화되었는지 여부를 보여줍니다.
    • Active: 서비스가 현재 실행 중인지 여부를 보여줍니다.
    • Process/Main PID: 서비스의 프로세스 ID 를 표시합니다.
    • Memory/CPU: 리소스 사용량을 보여줍니다.
    • Logs: 서비스와 관련된 최근 로그 항목.
  3. 다른 서비스의 상태를 확인해야 하는 경우 sshd를 해당 서비스의 이름으로 바꿀 수 있습니다. 예를 들어, Apache 웹 서버의 상태를 확인하려면 (설치된 경우):

    systemctl status apache2

모든 서비스 나열

다음 명령을 사용하여 시스템의 모든 서비스를 나열할 수 있습니다.

  1. 모든 활성 서비스를 나열하려면:

    systemctl list-units --type=service --state=active

    이 명령은 현재 시스템에서 활성 상태인 모든 서비스를 표시합니다.

  2. 상태에 관계없이 모든 서비스를 나열하려면:

    systemctl list-units --type=service --all

서비스 목록 파일 생성

이제 시스템에서 실행 중인 모든 서비스 목록을 저장할 파일을 만들어 보겠습니다.

  1. 다음을 실행하여 현재 디렉토리에 services_list.txt라는 파일을 만듭니다.

    systemctl list-units --type=service --state=running > ~/project/services_list.txt

    이 명령은 systemctl list-units를 실행하고 출력을 프로젝트 디렉토리의 services_list.txt라는 파일로 리디렉션합니다.

  2. 파일이 생성되었고 데이터가 포함되어 있는지 확인합니다.

    cat ~/project/services_list.txt

    시스템에서 실행 중인 모든 서비스 목록이 표시됩니다.

이 단계에서는 서비스 상태를 확인하고 시스템에서 실행 중인 모든 서비스 목록을 만드는 방법을 배웠습니다. 이 정보는 어떤 서비스가 활성 상태이고 어떻게 구성되어 있는지 이해하는 데 유용합니다.

시스템 서비스 제어: 시작, 중지 및 재시작

이 단계에서는 시스템 서비스를 시작, 중지 및 다시 시작하는 방법을 배우게 됩니다. 이러한 작업은 서비스 유지 관리, 문제 해결 및 구성 변경 사항 적용에 필수적입니다.

서비스 시작 및 중지

SSH 서비스를 제어하는 연습을 해보겠습니다.

  1. 먼저 SSH 서비스의 현재 상태를 확인합니다.

    systemctl status sshd

    서비스가 현재 활성 상태인지 비활성 상태인지 확인합니다.

  2. 이제 SSH 서비스를 중지합니다.

    sudo systemctl stop sshd

    이 명령은 서비스를 즉시 중지합니다. 성공하면 이 명령의 출력은 없습니다.

  3. 서비스가 중지되었는지 확인합니다.

    systemctl status sshd

    이제 출력에 서비스가 "inactive (dead)"로 표시되어야 합니다.

    ● ssh.service - OpenBSD Secure Shell server
      Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
      Active: inactive (dead) since Wed 2023-10-25 10:15:00 UTC; 5s ago
  4. 서비스를 다시 시작합니다.

    sudo systemctl start sshd
  5. 서비스가 시작되었는지 확인합니다.

    systemctl status sshd

    출력에 서비스가 다시 "active (running)"으로 표시되어야 합니다.

서비스 다시 시작

서비스를 다시 시작하는 것은 특히 구성을 변경한 후 일반적인 작업입니다.

  1. SSH 서비스를 다시 시작하려면:

    sudo systemctl restart sshd

    이 명령은 서비스를 중지한 다음 시작합니다.

  2. 다시 시작을 확인하려면 서비스 상태를 확인합니다.

    systemctl status sshd

    "Active" 줄을 보고 서비스가 마지막으로 시작된 시간을 확인합니다.

서비스 제어 명령에 대한 참조 파일 생성

배운 명령으로 참조 파일을 만들어 보겠습니다.

  1. 프로젝트 디렉토리에 service_control.txt라는 파일을 만듭니다.

    echo "Service Control Commands:" > ~/project/service_control.txt
    echo "Start a service: sudo systemctl start <service_name>" >> ~/project/service_control.txt
    echo "Stop a service: sudo systemctl stop <service_name>" >> ~/project/service_control.txt
    echo "Restart a service: sudo systemctl restart <service_name>" >> ~/project/service_control.txt
  2. 파일의 내용을 확인합니다.

    cat ~/project/service_control.txt

이 단계에서는 서비스를 시작, 중지 및 다시 시작하여 서비스를 제어하는 방법을 배웠습니다. 이러한 작업은 Linux 시스템에서 서비스 관리 및 유지 관리에 필수적입니다.

서비스 부팅 동작 관리: 활성화 및 비활성화

이 단계에서는 시스템이 부팅될 때 서비스가 자동으로 시작되도록 구성하는 방법을 배우게 됩니다. 이는 시스템 재시작 후 수동 개입 없이 필요한 서비스를 사용할 수 있도록 하는 데 중요합니다.

서비스 부팅 구성 이해

서비스는 부팅 시 자동으로 시작되도록 구성 (활성화) 하거나 수동으로 시작해야 하도록 구성 (비활성화) 할 수 있습니다. 이 구성은 서비스의 현재 실행 상태와 별개입니다.

서비스가 활성화되었는지 확인

  1. SSH 서비스가 부팅 시 시작하도록 구성되었는지 확인하려면:

    systemctl is-enabled sshd

    출력은 "enabled"(부팅 시 시작) 또는 "disabled"(부팅 시 시작 안 함) 입니다.

서비스 비활성화

서비스를 비활성화하면 부팅 시 자동으로 시작되지 않도록 구성하는 것입니다.

  1. SSH 서비스를 비활성화합니다.

    sudo systemctl disable sshd

    심볼릭 링크가 제거되었다는 메시지가 표시됩니다.

    Removed /etc/systemd/system/multi-user.target.wants/ssh.service.
  2. 서비스가 이제 비활성화되었는지 확인합니다.

    systemctl is-enabled sshd

    출력은 "disabled"여야 합니다.

  3. 서비스를 비활성화해도 현재 실행 중인 경우 중지되지 않습니다. 현재 상태를 확인합니다.

    systemctl status sshd

    서비스가 다음 부팅에 대해 비활성화되었더라도 여전히 활성 상태일 수 있습니다.

서비스 활성화

서비스를 활성화하면 부팅 시 자동으로 시작되도록 구성하는 것입니다.

  1. SSH 서비스를 다시 활성화합니다.

    sudo systemctl enable sshd

    심볼릭 링크가 생성되었다는 메시지가 표시됩니다.

    Created symlink /etc/systemd/system/multi-user.target.wants/ssh.service → /lib/systemd/system/ssh.service.
  2. 서비스가 이제 활성화되었는지 확인합니다.

    systemctl is-enabled sshd

    출력은 "enabled"여야 합니다.

결합된 명령

활성화/비활성화를 단일 명령으로 시작/중지와 결합할 수도 있습니다.

  1. 한 번의 명령으로 서비스를 비활성화하고 중지하려면:

    sudo systemctl disable --now sshd
  2. 한 번의 명령으로 서비스를 활성화하고 시작하려면:

    sudo systemctl enable --now sshd

서비스 부팅 구성에 대한 참조 파일 생성

배운 명령으로 참조 파일을 만들어 보겠습니다.

  1. 프로젝트 디렉토리에 service_boot.txt라는 파일을 만듭니다.

    echo "Service Boot Configuration Commands:" > ~/project/service_boot.txt
    echo "Check if a service is enabled: systemctl is-enabled <service_name>" >> ~/project/service_boot.txt
    echo "Enable a service to start at boot: sudo systemctl enable <service_name>" >> ~/project/service_boot.txt
    echo "Disable a service from starting at boot: sudo systemctl disable <service_name>" >> ~/project/service_boot.txt
    echo "Enable and immediately start a service: sudo systemctl enable --now <service_name>" >> ~/project/service_boot.txt
    echo "Disable and immediately stop a service: sudo systemctl disable --now <service_name>" >> ~/project/service_boot.txt
  2. 파일의 내용을 확인합니다.

    cat ~/project/service_boot.txt

이 단계에서는 서비스를 활성화 및 비활성화하여 서비스 부팅 동작을 관리하는 방법을 배웠습니다. 이는 시스템 부팅 시 어떤 서비스가 자동으로 시작되도록 구성하고, 불필요한 서비스가 리소스를 소비하지 않도록 하면서 필요한 서비스를 사용할 수 있도록 하는 데 중요합니다.

요약

이 랩에서는 systemctl 명령을 사용하여 Linux 서비스 관리의 기본 사항을 배웠습니다. 모든 Linux 관리자가 알아야 할 필수 기술을 연습했습니다.

  1. 서비스 상태 확인: 모니터링 및 문제 해결에 중요한 서비스의 현재 상태를 확인하는 방법을 배웠습니다.

  2. 서비스 제어: 유지 관리 및 구성 변경에 필요한 기본 작업인 서비스 시작, 중지 및 다시 시작을 연습했습니다.

  3. 부팅 동작 관리: 시스템 시작 시 서비스를 활성화 및 비활성화하는 방법을 배워 재부팅 후 어떤 서비스가 자동으로 실행될지 제어할 수 있었습니다.

이러한 기술은 Linux 환경에서 효과적인 서비스 관리를 위한 기반을 제공합니다. Linux 시스템으로 계속 작업하면서 시스템 안정성과 성능을 유지하는 데 이러한 명령이 필수적임을 알게 될 것입니다.

적절한 서비스 관리는 시스템 보안, 리소스 최적화 및 필요한 경우 필요한 기능을 사용할 수 있도록 하는 데 중요합니다. 이 랩에서 얻은 지식은 보다 고급 Linux 관리 작업의 구성 요소 역할을 할 것입니다.