| 명령 | 출력 |
|---|---|
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 를 구분하는 데 필요합니다.
free -m # 메모리 MB, available 열
df -h # 파티션 사용률
lsblk # 디스크·파티션 구조free 의 available 이 실제 여유입니다. used 에는 캐시가 포함돼 커 보입니다. 05 프로세스·자원 레슨에서 더 봅니다.
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 였습니다.
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 으로 고정할 수 있습니다.
uptime
# 17:20:01 up 30 days, 2:15, 2 users, load average: 0.52, 0.61, 0.58up 30 days 가 재부팅 후 경과이고 load average 세 숫자가 1·5·15분 평균 실행 대기 프로세스 수입니다. 코어 수 nproc 보다 크면 CPU 가 밀리는 것이고, 1분 값이 15분 값보다 크면 지금 올라가는 중입니다.
env # 전부
echo "$HOME $PATH" # 하나씩
export JAVA_HOME=/usr/lib/jvm/java-21
unset JAVA_HOMEexport 한 변수만 자식 프로세스가 물려받습니다. 운영 묶음 01 에서 본 규칙입니다. PATH 는 : 로 이은 폴더 목록이고 앞에서부터 찾습니다.
| 파일 | 읽는 때 |
|---|---|
/etc/profile |
모든 사용자 로그인 |
~/.bash_profile |
내 로그인 |
~/.bashrc |
셸을 열 때마다 |
/etc/profile.d/*.sh |
전체 설정 조각 |
export 와 별칭은 ~/.bashrc 에 적고 source ~/.bashrc 로 즉시 반영합니다. 전 사용자에게 JAVA_HOME 을 주려면 /etc/profile.d/java.sh 를 만듭니다. cron 은 이 파일들을 읽지 않으므로 운영 묶음 06 처럼 PATH 를 직접 적습니다.
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) 로 실제 경로를 봅니다.
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 패키지입니다.
rpm 은 저장소 없이 로컬 패키지 DB 와 파일을 다룹니다. 조회는 rpm, 설치는 dnf 가 편합니다.
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 을 전부 함께 옮깁니다.
인터넷이 없으면 사내 미러를 /etc/yum.repos.d/이름.repo 에 등록합니다.
[corp-baseos]
name=Corp BaseOS mirror
baseurl=http://repo.corp/rhel9/baseos/
enabled=1
gpgcheck=1dnf repolist # 활성 저장소
sudo dnf clean all && sudo dnf makecache
sudo dnf config-manager --disable epel # 안 되는 저장소 끄기기본 저장소가 인터넷을 바라보고 있으면 dnf 가 접속을 기다리다 느려집니다. 안 쓰는 저장소는 enabled=0 으로 끕니다. 프록시가 있으면 /etc/dnf/dnf.conf 에 proxy= 를 적습니다.
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분 뒤 재부팅합니다.