공공부하자개발 · 영어 학습 노트
리눅스
리눅스 명령어리눅스 자체를 익히는 명령 중심 학습0/10 완료
  • 01파일·디렉터리 명령
  • 02텍스트 보기·편집 (less·vi)
  • 03사용자·그룹·권한·sudo
  • 04패키지·시스템 정보 (dnf·rpm)
  • 05프로세스·자원 (ps·top·free·df)
  • 06네트워크 명령 (ip·ss·ping·scp)
  • 07압축·아카이브·검색 (tar·gzip·find)
  • 08셸 활용 (히스토리·별칭·단축키)
  • 09sed · awk 한 줄 처리 (치환·필드·집계)
  • 10링크 · 디스크 · 예약 작업 (ln·mount·crontab)
사이트 소개개인정보처리방침연락처
© 2026 공부하자
홈 › 리눅스 명령어 › 04 / 10

패키지·시스템 정보 (dnf·rpm)

섹션 7진행 0 / 10
1왜 배우는가2핵심 원리3코드 예제4응용 변형 예제5자주 하는 실수 (Tip)6연습 문제7정리‹ 이전다음 ›

2. 핵심 원리

2.1 시스템 식별

명령 출력
cat /etc/os-release OS 이름·버전
uname -r 커널 버전
uname -m 아키텍처 x86_64
hostname 서버 이름
hostnamectl 위 정보 요약
nproc CPU 코어 수
lscpu CPU 상세

hostnamectl 한 줄이 OS·커널·호스트명을 함께 보여 줘 처음 접속했을 때 가장 좋습니다. uname -m 은 rpm 파일이나 JDK 를 받을 때 x86_64 와 aarch64 를 구분하는 데 필요합니다.

2.2 메모리·디스크 요약

bash
free -m                     # 메모리 MB, available 열
df -h                       # 파티션 사용률
lsblk                       # 디스크·파티션 구조

free 의 available 이 실제 여유입니다. used 에는 캐시가 포함돼 커 보입니다. 05 프로세스·자원 레슨에서 더 봅니다.

2.3 date

date +형식 으로 원하는 모양을 만듭니다. 파일 이름과 로그에 붙일 때 씁니다.

형식 결과
+%F 2026-09-10
+%T 17:14:31
+%Y%m%d_%H%M%S 20260910_171431
+%s epoch 초
-d '-7 day' +%F 일주일 전
-d @1700000000 epoch 를 시각으로

-d 는 "3 days ago", "next monday" 같은 표현도 받습니다. 운영 묶음의 백업·릴리스 폴더 이름이 전부 +%Y%m%d_%H%M%S 였습니다.

2.4 시간대와 NTP

bash
timedatectl                              # 시간대, NTP 동기화 여부
sudo timedatectl set-timezone Asia/Seoul
chronyc tracking                         # NTP 오차
TZ=UTC date                              # 한 번만 다른 시간대로

timedatectl 의 System clock synchronized: yes 를 확인합니다. 서버 간 시각이 어긋나면 JWT 만료, DB 복제, 로그 대조가 전부 틀어집니다. JVM 은 시스템 시간대를 따르되 운영 묶음 04 의 -Duser.timezone 으로 고정할 수 있습니다.

2.5 uptime 과 부하

bash
uptime
# 17:20:01 up 30 days, 2:15, 2 users, load average: 0.52, 0.61, 0.58

up 30 days 가 재부팅 후 경과이고 load average 세 숫자가 1·5·15분 평균 실행 대기 프로세스 수입니다. 코어 수 nproc 보다 크면 CPU 가 밀리는 것이고, 1분 값이 15분 값보다 크면 지금 올라가는 중입니다.

2.6 환경 변수

bash
env                         # 전부
echo "$HOME $PATH"          # 하나씩
export JAVA_HOME=/usr/lib/jvm/java-21
unset JAVA_HOME

export 한 변수만 자식 프로세스가 물려받습니다. 운영 묶음 01 에서 본 규칙입니다. PATH 는 : 로 이은 폴더 목록이고 앞에서부터 찾습니다.

2.7 셸 설정 파일

파일 읽는 때
/etc/profile 모든 사용자 로그인
~/.bash_profile 내 로그인
~/.bashrc 셸을 열 때마다
/etc/profile.d/*.sh 전체 설정 조각

export 와 별칭은 ~/.bashrc 에 적고 source ~/.bashrc 로 즉시 반영합니다. 전 사용자에게 JAVA_HOME 을 주려면 /etc/profile.d/java.sh 를 만듭니다. cron 은 이 파일들을 읽지 않으므로 운영 묶음 06 처럼 PATH 를 직접 적습니다.

2.8 명령 찾기와 도움말

bash
type cd                     # shell builtin
which java                  # /usr/bin/java
man ls                      # 매뉴얼, q 로 나가기, /단어 검색
ls --help | head            # 짧은 도움말
man -k 'disk usage'         # 키워드로 매뉴얼 찾기

type 은 별칭·내장·파일을 구분해 알려 줍니다. which 가 /usr/bin/java 를 가리켜도 그것이 링크일 수 있어 readlink -f $(which java) 로 실제 경로를 봅니다.

2.9 dnf 기본

RHEL 8 부터 dnf 이고 yum 은 같은 것을 가리키는 별칭입니다.

명령 뜻
dnf search 이름 저장소에서 찾기
dnf info 패키지 버전·설명
dnf install -y 패키지 설치
dnf remove 패키지 삭제
dnf update 전체 업데이트
dnf update --security 보안 패치만
dnf history 이력, undo 가능
dnf provides */ss 명령이 든 패키지

dnf provides 는 "이 명령이 없는데 무엇을 깔아야 하나" 의 답입니다. ss 는 iproute, nc 는 nmap-ncat, lsof 는 lsof 패키지입니다.

2.10 rpm

rpm 은 저장소 없이 로컬 패키지 DB 와 파일을 다룹니다. 조회는 rpm, 설치는 dnf 가 편합니다.

bash
rpm -qa | grep -i java          # 설치된 목록
rpm -qi java-21-openjdk         # 정보
rpm -ql java-21-openjdk | head  # 설치한 파일들
rpm -qf /usr/bin/java           # 이 파일의 패키지
sudo dnf install ./pkg.rpm      # 파일 설치, 의존성은 저장소에서
sudo rpm -ivh pkg.rpm           # 파일 설치, 의존성 직접

-q 가 조회이고 뒤 글자가 a 전체, i 정보, l 파일 목록, f 파일로 찾기입니다. rpm -ivh 는 의존 패키지가 없으면 실패하므로 폐쇄망에서는 필요한 rpm 을 전부 함께 옮깁니다.

2.11 폐쇄망 저장소

인터넷이 없으면 사내 미러를 /etc/yum.repos.d/이름.repo 에 등록합니다.

ini
[corp-baseos]
name=Corp BaseOS mirror
baseurl=http://repo.corp/rhel9/baseos/
enabled=1
gpgcheck=1
bash
dnf repolist                            # 활성 저장소
sudo dnf clean all && sudo dnf makecache
sudo dnf config-manager --disable epel  # 안 되는 저장소 끄기

기본 저장소가 인터넷을 바라보고 있으면 dnf 가 접속을 기다리다 느려집니다. 안 쓰는 저장소는 enabled=0 으로 끕니다. 프록시가 있으면 /etc/dnf/dnf.conf 에 proxy= 를 적습니다.

2.12 서비스·로그인·재부팅

bash
systemctl list-units --type=service --state=running
systemctl list-unit-files --state=enabled
last -n 5                    # 최근 로그인
last reboot | head -n 3      # 재부팅 이력
who                          # 지금 접속자
sudo shutdown -r +10 "10분 뒤 재부팅"

last reboot 는 "언제 재부팅됐나" 의 답이고 who 는 재부팅 전 다른 사람이 작업 중인지 확인하는 용도입니다. shutdown -r +10 은 접속자에게 알림을 보내고 10분 뒤 재부팅합니다.

핵심 원리
  • 2.1 시스템 식별
  • 2.2 메모리·디스크 요약
  • 2.3 date
  • 2.4 시간대와 NTP
  • 2.5 uptime 과 부하
  • 2.6 환경 변수
  • 2.7 셸 설정 파일
  • 2.8 명령 찾기와 도움말
  • 2.9 dnf 기본
  • 2.10 rpm
  • 2.11 폐쇄망 저장소
  • 2.12 서비스·로그인·재부팅
이전 섹션1 왜 배우는가2 / 7다음 섹션3 코드 예제