RHCSA 6일차

chapter 4

Jun Noh

1. systemd: 서비스 및 유닛 관리

systemd는 RHEL 9의 핵심 데몬으로, 시스템 리소스를 유닛 단위로 관리한다.

  • 서비스 제어: systemctl 명령어를 통해 서비스의 상태를 제어한다.

  • systemctl start/stop/restart/status <unit> 순서로 사용한다.

  • 자동 시작 설정: systemctl enable --now <unit>은 부팅 시 자동 실행 설정과 현재 시점의 즉각 실행을 동시에 처리한다.

  • 부팅 타겟 변경: systemctl set-default <target>을 사용하여 멀티 유저 모드(텍스트)나 그래픽 모드 중 기본값을 설정할 수 있다.

2. 작업 예약 및 시간 관리

반복되는 작업의 자동화와 시스템 시간의 정확성은 서버 관리의 기본이다.

  • cron: crontab -e를 통해 사용자별 예약 작업을 등록한다. 예를 들어 매일 새벽 3시에 백업 스크립트를 실행하려면 0 3 * * * /path/to/script 형식을 사용한다.
  • chronyd: 외부 NTP 서버와 동기화하여 시계 오차를 수정한다. chronyc sources -v 명령어로 현재 동기화 상태를 확인할 수 있다.
  • 시간 설정: timedatectl set-timezone Asia/Seoul 명령어로 타임존을 변경하거나 NTP 동기화 여부를 결정한다.

3. 리소스 모니터링 및 로그 관리

시스템의 부하를 확인하고 발생한 이벤트의 기록을 분석하는 과정이다.

  • 모니터링 명령어:

  • free -h: 메모리 및 스왑 사용량 확인.

  • df -h: 디스크 여유 공간 확인.

  • topuptime: CPU 부하 및 가동 시간 확인.

  • 로그 분석: journalctl은 바이너리 로그를 쿼리하는 강력한 도구다. journalctl -u <service> -b를 사용하면 이번 부팅 중 특정 서비스에서 발생한 로그만 볼 수 있다.

  • logrotate: 로그 파일이 디스크를 가득 채우지 않도록 관리한다. /etc/logrotate.d/ 디렉터리에 서비스별 설정 파일을 위치시켜 주기적인 분할과 압축을 수행한다.

4. 최종 미션: 시스템 상태 보고서 자동화

배운 내용을 종합하여 실습 미션을 진행했다.

[목표] 매일 밤 12시에 메모리/디스크 상태를 /var/log/sys_report.log에 기록하고, 7일치만 보관하기.

Step 1: 작업 예약 (cron)

crontab -e 명령어로 아래 설정을 추가했다.

0 0 * * * (free -h; df -h) >> /var/log/sys_report.log 2>&1

매일 0시 0분에 표준 출력과 표준 에러를 모두 지정된 로그 파일에 추가(append)하도록 설정했다.

Step 2: 로그 로테이션 설정 (logrotate)

/etc/logrotate.d/sys_report 파일을 생성하여 관리 규칙을 정의했다.

/var/log/sys_report.log {
    daily
    rotate 7
    missingok
    notifempty
    compress
}

매일 로테이션을 수행하되, 최대 7개까지만 보관하며 용량 절약을 위해 압축을 적용했다.

기타 설정 (로케일 관리)

시스템의 언어와 지역 설정을 관리하는 법도 정리했다.

  • localectl: localectl set-locale LANG=ko_KR.utf8 명령어로 시스템 언어를 변경할 수 있다. (단, dnf install glibc-langpack-ko를 통한 언어 팩 설치가 선행되어야 함)

뭐, 그래도 좀 만져봤다고, 아직까지는 그냥그냥 할만하다.

마침.

다른 글 보기