같은 리눅스, 다른 명령어
리눅스는 하나가 아닙니다. Ubuntu, CentOS/RHEL, Alpine, Arch 등 배포판마다 패키지 관리자와 서비스 관리 명령이 다릅니다. 서버를 운영하다 보면 여러 배포판을 동시에 다루는 경우가 흔하므로, 배포판별 차이를 알아두는 것이 중요합니다.
이 글에서는 실무에서 자주 사용하는 명령어를 카테고리별로 정리하고, 주요 배포판 간 차이를 비교합니다.
주요 배포판과 패키지 관리자
| 배포판 계열 | 대표 배포판 | 패키지 관리자 | 패키지 형식 | 용도 |
|---|---|---|---|---|
| Debian 계열 | Ubuntu, Debian | apt | .deb | 서버, 데스크톱 |
| Red Hat 계열 | RHEL, CentOS, Rocky, Alma | dnf (구 yum) | .rpm | 기업 서버 |
| Alpine | Alpine Linux | apk | .apk | Docker 컨테이너 |
| Arch 계열 | Arch, Manjaro | pacman | .pkg.tar.zst | 데스크톱, 최신 패키지 |
패키지 관리
가장 큰 차이가 나는 영역입니다. 동일한 작업이라도 배포판마다 명령어가 완전히 다릅니다.
# === 패키지 설치 ===
# Debian/Ubuntu
sudo apt update && sudo apt install -y nginx
# RHEL/CentOS/Rocky (8+)
sudo dnf install -y nginx
# Alpine
apk add nginx
# Arch
sudo pacman -S nginx
# === 패키지 검색 ===
# Debian/Ubuntu
apt search nginx
# RHEL/CentOS
dnf search nginx
# Alpine
apk search nginx
# Arch
pacman -Ss nginx
| 작업 | apt (Debian/Ubuntu) | dnf (RHEL/CentOS) | apk (Alpine) | pacman (Arch) |
|---|---|---|---|---|
| 저장소 갱신 | apt update | dnf check-update | apk update | pacman -Sy |
| 패키지 설치 | apt install pkg | dnf install pkg | apk add pkg | pacman -S pkg |
| 패키지 삭제 | apt remove pkg | dnf remove pkg | apk del pkg | pacman -R pkg |
| 전체 업그레이드 | apt upgrade | dnf upgrade | apk upgrade | pacman -Syu |
| 설치된 목록 | apt list --installed | dnf list installed | apk info | pacman -Q |
| 패키지 검색 | apt search keyword | dnf search keyword | apk search keyword | pacman -Ss keyword |
| 캐시 정리 | apt clean | dnf clean all | apk cache clean | pacman -Sc |
서비스 관리 (systemctl)
대부분의 최신 배포판은 systemd를 사용하므로 systemctl 명령이 공통입니다. 예외는 Alpine으로, 기본 init 시스템이 OpenRC입니다.
# === systemd 기반 (Ubuntu, CentOS, Arch 등 대부분) ===
sudo systemctl start nginx # 서비스 시작
sudo systemctl stop nginx # 서비스 중지
sudo systemctl restart nginx # 재시작
sudo systemctl status nginx # 상태 확인
sudo systemctl enable nginx # 부팅 시 자동 시작
sudo systemctl disable nginx # 자동 시작 해제
# === OpenRC (Alpine Linux) ===
rc-service nginx start # 서비스 시작
rc-service nginx stop # 서비스 중지
rc-service nginx restart # 재시작
rc-service nginx status # 상태 확인
rc-update add nginx default # 부팅 시 자동 시작
rc-update del nginx default # 자동 시작 해제
| 작업 | systemd (대부분) | OpenRC (Alpine) |
|---|---|---|
| 시작 | systemctl start svc | rc-service svc start |
| 중지 | systemctl stop svc | rc-service svc stop |
| 상태 | systemctl status svc | rc-service svc status |
| 자동 시작 | systemctl enable svc | rc-update add svc default |
| 로그 확인 | journalctl -u svc | cat /var/log/svc.log |
공통 필수 명령어
패키지 관리와 서비스 관리를 제외하면, 대부분의 명령어는 배포판과 무관하게 동일합니다.
파일 및 디렉토리
# 파일 목록 (상세, 숨김 포함, 사람이 읽기 쉬운 크기)
ls -lah
# 디렉토리 이동 / 생성 / 삭제
cd /var/log
mkdir -p /opt/app/config # 중간 경로까지 자동 생성
rm -rf /tmp/old-build # 강제 삭제 (주의!)
# 파일 복사 / 이동 / 이름 변경
cp config.yaml config.yaml.bak
mv old-name.txt new-name.txt
# 파일 내용 확인
cat /etc/hostname # 전체 출력
head -20 /var/log/syslog # 처음 20줄
tail -f /var/log/nginx/access.log # 실시간 로그 추적
# 파일 검색
find /var/log -name "*.log" -mtime +30 -type f # 30일 이상 된 .log 파일
텍스트 처리
# grep: 텍스트 검색
grep -rn "error" /var/log/app/ # 재귀 검색 + 줄번호 표시
grep -i "warning" app.log # 대소문자 무시
# awk: 컬럼 기반 처리
df -h | awk '{print $1, $5}' # 디스크별 사용률만 추출
# /dev/sda1 42%
# sed: 텍스트 치환
sed -i 's/localhost/0.0.0.0/g' config.yaml # 파일 내 문자열 치환
# wc: 줄/단어/바이트 수
wc -l /var/log/syslog # 줄 수 카운트
# sort + uniq: 정렬 후 중복 제거
cat access.log | awk '{print $1}' | sort | uniq -c | sort -rn | head -10
# IP별 접속 횟수 상위 10개
시스템 모니터링
# 디스크 사용량
df -h # 파일시스템별 사용량
du -sh /var/log/* # 디렉토리별 크기
# 메모리 사용량
free -h # 전체/사용/여유 메모리
# total: 16Gi, used: 8.2Gi, free: 2.1Gi, available: 7.3Gi
# CPU / 프로세스
top # 실시간 프로세스 모니터
htop # top의 향상 버전 (설치 필요)
ps aux | grep nginx # 특정 프로세스 검색
# 네트워크
ss -tlnp # 열린 포트 확인 (netstat 대체)
curl -I https://example.com # HTTP 헤더 확인
ping -c 4 8.8.8.8 # 네트워크 연결 테스트
| 명령어 | 용도 | 자주 쓰는 옵션 |
|---|---|---|
df -h | 디스크 사용량 | -h 사람이 읽기 쉬운 단위 |
free -h | 메모리 사용량 | -h 사람이 읽기 쉬운 단위 |
top / htop | 실시간 프로세스 | htop 권장 (색상, 마우스) |
ss -tlnp | 열린 포트 | -t TCP, -l 리슨, -n 숫자, -p 프로세스 |
journalctl | 시스템 로그 | -u svc 서비스별, -f 실시간 |
사용자 및 권한
# 사용자 추가/삭제
sudo useradd -m -s /bin/bash deploy # 홈 디렉토리 생성 + 기본 셸 지정
sudo passwd deploy # 비밀번호 설정
sudo userdel -r deploy # 사용자 + 홈 디렉토리 삭제
# 그룹 관리
sudo usermod -aG docker deploy # deploy 사용자를 docker 그룹에 추가
# 파일 권한
chmod 755 script.sh # rwxr-xr-x
chmod 600 .env # rw------- (소유자만 읽기/쓰기)
chown deploy:deploy /opt/app -R # 소유자/그룹 변경 (재귀)
| 권한 숫자 | 의미 | 일반적 용도 |
|---|---|---|
755 | rwxr-xr-x | 실행 파일, 디렉토리 |
644 | rw-r—r— | 일반 파일, 설정 파일 |
600 | rw------- | 비밀키, .env 파일 |
700 | rwx------ | .ssh 디렉토리 |
정리
리눅스 명령어의 핵심은 패키지 관리자만 배포판별로 다르고, 나머지는 거의 동일하다는 점입니다.
- 패키지 관리:
apt(Ubuntu) vsdnf(RHEL) vsapk(Alpine) vspacman(Arch) - 서비스 관리: 대부분
systemctl, Alpine만rc-service/rc-update - 파일/텍스트/시스템 명령어:
ls,grep,find,df,free등은 모든 배포판 공통 - 서버 운영 시 가장 자주 쓰는 조합:
tail -f(로그),grep -rn(검색),df -h(디스크),ss -tlnp(포트) - 권한 관리:
chmod 600으로 민감 파일 보호,chown으로 소유자 설정