반응형

DevOps 엔지니어가 자주 사용하는 Linux 명령어 세트


목차

  1. 개요
  2. 시스템 정보 확인
  3. 파일 및 디렉토리 관리
  4. 텍스트 처리
  5. 프로세스 관리
  6. 네트워크
  7. 사용자 및 권한 관리
  8. 디스크 및 스토리지
  9. 압축 및 아카이브

1. 개요

이 문서는 DevOps 엔지니어가 서버 관리, 배포, 모니터링 업무에서 자주 사용하는 Linux 명령어를 정리한 레퍼런스이다.
각 명령어는 작업 유형별로 분류하였으며, 실무에서 바로 활용할 수 있도록 옵션과 예제를 함께 제공한다.
초급부터 중급 수준의 DevOps 엔지니어가 빠르게 참조할 수 있는 실용적인 가이드를 목표로 한다.

작업 유형별 챕터

챕터 설명
시스템 정보 확인 호스트명, 커널 버전, 가동 시간 등 시스템 기본 정보를 조회한다. 서버 상태 파악 및 트러블슈팅의 첫 단계에서 활용한다.
파일 및 디렉토리 관리 파일/디렉토리의 생성, 복사, 이동, 삭제, 검색 작업을 수행한다. 배포 스크립트 작성 시 필수적으로 사용한다.
텍스트 처리 로그 분석, 설정 파일 편집, 데이터 추출 등 텍스트 기반 작업을 처리한다. 파이프라인과 조합하여 강력한 자동화가 가능하다.
프로세스 관리 실행 중인 프로세스 조회, 종료, 서비스 제어를 수행한다. 시스템 리소스 모니터링과 장애 대응에 핵심적이다.
네트워크 네트워크 연결 상태 확인, 파일 다운로드, API 테스트를 수행한다. 인프라 구성 및 디버깅에 필수적이다.
사용자 및 권한 관리 사용자 계정 관리와 파일 권한 설정을 담당한다. 보안 정책 적용과 접근 제어에 사용한다.
디스크 및 스토리지 디스크 용량, 마운트 상태, 파티션 정보를 확인한다. 스토리지 관리 및 용량 모니터링에 활용한다.
압축 및 아카이브 파일 압축, 해제, 아카이브 생성을 수행한다. 백업 및 배포 패키지 생성에 사용한다.

2. 시스템 정보 확인

서버의 기본 상태와 시스템 정보를 조회하는 명령어 모음이다.
장애 대응, 환경 확인, 문서화 작업 시 가장 먼저 실행하는 명령어들이다.

명령어 리스트

Command Function
hostname 시스템 호스트명 확인 및 설정
uname 커널 및 시스템 정보 출력
uptime 시스템 가동 시간 및 부하 확인
date 시스템 날짜/시간 확인 및 설정
whoami 현재 로그인 사용자 확인
id 사용자 UID/GID 정보 확인

hostname

시스템의 호스트명을 확인하거나 설정한다.

주요 옵션

옵션 설명
-f FQDN(Fully Qualified Domain Name) 출력
-i 호스트의 IP 주소 출력
-s 짧은 호스트명 출력

예제

# 현재 호스트명 확인
hostname

# FQDN 확인
hostname -f

# IP 주소 확인
hostname -i

↑ 목차로 돌아가기


uname

커널 버전, 아키텍처 등 시스템 정보를 출력한다.

주요 옵션

옵션 설명
-a 모든 시스템 정보 출력
-r 커널 릴리즈 버전 출력
-m 하드웨어 아키텍처 출력
-n 네트워크 노드 호스트명 출력

예제

# 모든 시스템 정보 확인
uname -a

# 커널 버전만 확인
uname -r

# 아키텍처 확인 (x86_64, arm64 등)
uname -m

↑ 목차로 돌아가기


uptime

시스템 가동 시간, 로그인 사용자 수, 시스템 부하를 확인한다.

주요 옵션

옵션 설명
-p 가동 시간을 읽기 쉬운 형태로 출력
-s 시스템 시작 시간 출력

예제

# 기본 출력 (가동시간, 사용자수, 로드 평균)
uptime

# 읽기 쉬운 형태로 가동 시간 출력
uptime -p

# 시스템 시작 시간 확인
uptime -s

↑ 목차로 돌아가기


date

시스템의 현재 날짜와 시간을 확인하거나 설정한다.

주요 옵션

옵션 설명
+FORMAT 지정한 포맷으로 출력
-u UTC 시간 출력
-d STRING 지정한 날짜/시간 문자열 파싱

자주 사용하는 포맷

포맷 출력 예시
+%Y-%m-%d 2024-01-15
+%H:%M:%S 14:30:25
+%Y%m%d_%H%M%S 20240115_143025

예제

# 현재 날짜/시간 확인
date

# ISO 형식으로 출력
date +%Y-%m-%d

# 로그 파일명용 타임스탬프
date +%Y%m%d_%H%M%S

# UTC 시간 확인
date -u

# 특정 날짜 계산 (7일 전)
date -d "7 days ago" +%Y-%m-%d

↑ 목차로 돌아가기


whoami

현재 로그인한 사용자의 이름을 출력한다.

예제

# 현재 사용자 확인
whoami

↑ 목차로 돌아가기


id

현재 사용자 또는 지정한 사용자의 UID, GID, 그룹 정보를 출력한다.

주요 옵션

옵션 설명
-u UID만 출력
-g 기본 GID만 출력
-G 모든 그룹 ID 출력
-n 숫자 대신 이름으로 출력

예제

# 현재 사용자 전체 정보
id

# 특정 사용자 정보 확인
id username

# UID만 확인
id -u

# 소속 그룹명 확인
id -nG

↑ 목차로 돌아가기


3. 파일 및 디렉토리 관리

파일과 디렉토리의 생성, 복사, 이동, 삭제, 검색 등 기본적인 파일 시스템 작업을 수행한다.
배포 스크립트, 백업 작업, 일상적인 서버 관리에서 가장 빈번하게 사용하는 명령어들이다.

명령어 리스트

Command Function
ls 디렉토리 내용 목록 출력
cd 디렉토리 이동
pwd 현재 작업 디렉토리 경로 출력
mkdir 디렉토리 생성
rm 파일/디렉토리 삭제
cp 파일/디렉토리 복사
mv 파일/디렉토리 이동 또는 이름 변경
find 파일/디렉토리 검색
ln 링크 생성 (하드링크/심볼릭링크)
touch 빈 파일 생성 또는 타임스탬프 갱신

ls

디렉토리의 내용을 목록으로 출력한다.

주요 옵션

옵션 설명
-l 상세 정보 출력 (권한, 소유자, 크기, 날짜)
-a 숨김 파일 포함 전체 출력
-h 파일 크기를 읽기 쉬운 단위로 출력
-R 하위 디렉토리 재귀적 출력
-t 수정 시간순 정렬
-S 파일 크기순 정렬

예제

# 상세 정보 출력
ls -l

# 숨김 파일 포함, 읽기 쉬운 크기 표시
ls -lah

# 수정 시간순 정렬
ls -lt

# 특정 패턴 파일만 출력
ls -l *.log

↑ 목차로 돌아가기


cd

작업 디렉토리를 변경한다.

예제

# 홈 디렉토리로 이동
cd ~
cd

# 상위 디렉토리로 이동
cd ..

# 절대 경로로 이동
cd /var/log

# 이전 디렉토리로 이동
cd -

↑ 목차로 돌아가기


pwd

현재 작업 디렉토리의 절대 경로를 출력한다.

주요 옵션

옵션 설명
-P 심볼릭 링크를 해석한 실제 경로 출력
-L 심볼릭 링크 경로 그대로 출력 (기본값)

예제

# 현재 경로 확인
pwd

# 심볼릭 링크 해석한 실제 경로
pwd -P

↑ 목차로 돌아가기


mkdir

새 디렉토리를 생성한다.

주요 옵션

옵션 설명
-p 상위 디렉토리까지 한 번에 생성
-m MODE 생성 시 권한 지정
-v 생성 과정 출력

예제

# 단일 디렉토리 생성
mkdir logs

# 중첩 디렉토리 한 번에 생성
mkdir -p /app/logs/2024/01

# 권한 지정하여 생성
mkdir -m 755 scripts

↑ 목차로 돌아가기


rm

파일 또는 디렉토리를 삭제한다.

주요 옵션

옵션 설명
-r 디렉토리 재귀적 삭제
-f 강제 삭제 (확인 없음)
-i 삭제 전 확인
-v 삭제 과정 출력

예제

# 파일 삭제
rm file.txt

# 디렉토리와 내용물 전체 삭제
rm -rf directory/

# 확인 후 삭제
rm -i important.txt

# 특정 패턴 파일 삭제
rm -f *.tmp

⚠️ 주의: rm -rf / 또는 중요 경로에 대한 실행 시 복구 불가

↑ 목차로 돌아가기


cp

파일 또는 디렉토리를 복사한다.

주요 옵션

옵션 설명
-r 디렉토리 재귀적 복사
-p 권한, 소유자, 타임스탬프 유지
-a 아카이브 모드 (-rp + 심볼릭링크 유지)
-v 복사 과정 출력
-i 덮어쓰기 전 확인

예제

# 파일 복사
cp source.txt dest.txt

# 디렉토리 복사
cp -r source_dir/ dest_dir/

# 속성 유지하며 복사
cp -a /var/www/ /backup/www/

# 여러 파일을 디렉토리로 복사
cp file1.txt file2.txt dest_dir/

↑ 목차로 돌아가기


mv

파일 또는 디렉토리를 이동하거나 이름을 변경한다.

주요 옵션

옵션 설명
-i 덮어쓰기 전 확인
-f 강제 이동 (확인 없음)
-v 이동 과정 출력
-n 기존 파일 덮어쓰지 않음

예제

# 파일 이름 변경
mv old_name.txt new_name.txt

# 파일 이동
mv file.txt /path/to/destination/

# 디렉토리 이동
mv source_dir/ /new/location/

# 여러 파일 이동
mv *.log /var/log/archive/

↑ 목차로 돌아가기


find

조건에 맞는 파일과 디렉토리를 검색한다.

주요 옵션

옵션 설명
-name PATTERN 파일명 패턴 검색
-type f/d 파일(f) 또는 디렉토리(d) 지정
-mtime +/-N 수정 시간 기준 검색 (일 단위)
-size +/-N 파일 크기 기준 검색
-exec CMD {} \; 검색 결과에 명령 실행
-perm MODE 권한 기준 검색

예제

# 이름으로 검색
find /var/log -name "*.log"

# 7일 이상 된 파일 검색
find /tmp -type f -mtime +7

# 100MB 이상 파일 검색
find / -type f -size +100M

# 검색 후 삭제
find /tmp -name "*.tmp" -exec rm {} \;

# 빈 디렉토리 검색
find /app -type d -empty

# 권한이 777인 파일 검색
find / -type f -perm 0777

↑ 목차로 돌아가기


ln

파일에 대한 링크를 생성한다.

주요 옵션

옵션 설명
-s 심볼릭 링크 생성
-f 기존 링크 덮어쓰기
-v 생성 과정 출력

예제

# 심볼릭 링크 생성
ln -s /path/to/original /path/to/link

# 설정 파일 심볼릭 링크
ln -s /etc/nginx/sites-available/mysite /etc/nginx/sites-enabled/

# 하드 링크 생성
ln original.txt hardlink.txt

# 기존 링크 교체
ln -sf /new/target /path/to/link

↑ 목차로 돌아가기


touch

빈 파일을 생성하거나 기존 파일의 타임스탬프를 갱신한다.

주요 옵션

옵션 설명
-a 접근 시간만 변경
-m 수정 시간만 변경
-t STAMP 특정 시간으로 설정
-d STRING 날짜 문자열로 시간 설정

예제

# 빈 파일 생성
touch newfile.txt

# 여러 파일 생성
touch file1.txt file2.txt file3.txt

# 타임스탬프 갱신
touch existing_file.txt

# 특정 날짜로 설정
touch -d "2024-01-01 00:00:00" file.txt

↑ 목차로 돌아가기


4. 텍스트 처리

로그 파일 분석, 설정 파일 편집, 데이터 추출 및 변환 등 텍스트 기반 작업을 처리한다.
파이프라인(|)과 조합하여 강력한 데이터 처리 자동화가 가능하다.

명령어 리스트

Command Function
cat 파일 내용 출력
head 파일 앞부분 출력
tail 파일 뒷부분 출력
grep 패턴 검색
awk 텍스트 처리 및 데이터 추출
sed 스트림 편집기
cut 필드 추출
sort 정렬
uniq 중복 제거
wc 라인/단어/문자 수 카운트

cat

파일 내용을 출력하거나 파일을 연결한다.

주요 옵션

옵션 설명
-n 라인 번호 출력
-b 비어있지 않은 라인에만 번호 출력
-s 연속된 빈 라인을 하나로 압축
-A 모든 제어 문자 표시

예제

# 파일 내용 출력
cat file.txt

# 라인 번호와 함께 출력
cat -n file.txt

# 여러 파일 연결
cat file1.txt file2.txt > combined.txt

# 파일 내용 추가
cat newdata.txt >> existing.txt

↑ 목차로 돌아가기


head

파일의 앞부분을 출력한다. 기본값은 10줄.

주요 옵션

옵션 설명
-n N 처음 N줄 출력
-c N 처음 N바이트 출력

예제

# 처음 10줄 출력
head file.txt

# 처음 20줄 출력
head -n 20 file.txt

# 처음 100바이트 출력
head -c 100 file.txt

↑ 목차로 돌아가기


tail

파일의 뒷부분을 출력한다. 로그 모니터링에 필수적.

주요 옵션

옵션 설명
-n N 마지막 N줄 출력
-f 파일 변경을 실시간 추적
-F 파일 변경 추적 + 파일 재생성 감지
-c N 마지막 N바이트 출력

예제

# 마지막 10줄 출력
tail file.txt

# 마지막 50줄 출력
tail -n 50 file.txt

# 실시간 로그 모니터링
tail -f /var/log/syslog

# 로그 로테이션 대응 모니터링
tail -F /var/log/nginx/access.log

# 여러 파일 동시 모니터링
tail -f /var/log/*.log

↑ 목차로 돌아가기


grep

파일에서 패턴을 검색한다.

주요 옵션

옵션 설명
-i 대소문자 구분 없이 검색
-r 디렉토리 재귀 검색
-n 라인 번호 출력
-v 패턴과 일치하지 않는 라인 출력
-c 일치하는 라인 수 출력
-l 일치하는 파일명만 출력
-E 확장 정규표현식 사용
-A N 일치 라인 이후 N줄 출력
-B N 일치 라인 이전 N줄 출력

예제

# 기본 검색
grep "error" /var/log/syslog

# 대소문자 무시
grep -i "error" logfile.txt

# 디렉토리 내 재귀 검색
grep -r "TODO" /app/src/

# 라인 번호와 함께 출력
grep -n "failed" app.log

# 에러 제외하고 출력
grep -v "DEBUG" app.log

# 여러 패턴 검색
grep -E "error|warning|critical" app.log

# 일치 라인 전후 3줄씩 출력
grep -B 3 -A 3 "Exception" app.log

↑ 목차로 돌아가기


awk

텍스트를 필드 단위로 처리하고 데이터를 추출한다.

기본 구문

awk 'pattern { action }' file

주요 내장 변수

변수 설명
$0 전체 라인
$1, $2, ... 1번째, 2번째, ... 필드
NF 필드 개수
NR 현재 라인 번호
FS 필드 구분자

예제

# 특정 필드 출력
awk '{print $1, $3}' file.txt

# 필드 구분자 지정
awk -F: '{print $1}' /etc/passwd

# 조건부 출력
awk '$3 > 100 {print $1, $3}' data.txt

# 라인 번호 출력
awk '{print NR, $0}' file.txt

# 합계 계산
awk '{sum += $1} END {print sum}' numbers.txt

# 특정 패턴 라인 처리
awk '/error/ {print $0}' logfile.txt

# 마지막 필드 출력
awk '{print $NF}' file.txt

↑ 목차로 돌아가기


sed

스트림 편집기. 텍스트 치환 및 변환에 사용한다.

기본 구문

sed 's/패턴/대체문자열/플래그' file

주요 옵션

옵션 설명
-i 파일 직접 수정
-e 여러 명령 실행
-n 자동 출력 비활성화
g 전체 치환 (플래그)

예제

# 문자열 치환 (첫 번째만)
sed 's/old/new/' file.txt

# 전체 치환
sed 's/old/new/g' file.txt

# 파일 직접 수정
sed -i 's/old/new/g' file.txt

# 특정 라인 삭제
sed '5d' file.txt

# 빈 라인 삭제
sed '/^$/d' file.txt

# 특정 라인만 출력
sed -n '10,20p' file.txt

# 여러 치환 명령
sed -e 's/foo/bar/g' -e 's/baz/qux/g' file.txt

↑ 목차로 돌아가기


cut

라인에서 특정 필드나 문자 영역을 추출한다.

주요 옵션

옵션 설명
-d DELIM 필드 구분자 지정
-f N N번째 필드 추출
-c N-M N~M 문자 위치 추출

예제

# 콜론으로 구분된 1번째 필드
cut -d: -f1 /etc/passwd

# 여러 필드 추출
cut -d, -f1,3,5 data.csv

# 문자 위치로 추출
cut -c1-10 file.txt

# 탭 구분 파일 (기본값)
cut -f2 data.tsv

↑ 목차로 돌아가기


sort

라인을 정렬한다.

주요 옵션

옵션 설명
-n 숫자로 정렬
-r 역순 정렬
-k N N번째 필드 기준 정렬
-t DELIM 필드 구분자 지정
-u 중복 제거 후 정렬

예제

# 알파벳순 정렬
sort file.txt

# 숫자순 정렬
sort -n numbers.txt

# 역순 정렬
sort -r file.txt

# 2번째 필드 기준 정렬
sort -t: -k2 data.txt

# 중복 제거 후 정렬
sort -u file.txt

# 파일 크기순 정렬 (ls 출력)
ls -l | sort -k5 -n

↑ 목차로 돌아가기


uniq

연속된 중복 라인을 제거한다. 보통 sort와 함께 사용.

주요 옵션

옵션 설명
-c 중복 횟수 출력
-d 중복된 라인만 출력
-u 중복되지 않은 라인만 출력
-i 대소문자 무시

예제

# 중복 제거 (정렬 필요)
sort file.txt | uniq

# 중복 횟수 카운트
sort file.txt | uniq -c

# 중복된 라인만 출력
sort file.txt | uniq -d

# 횟수별 정렬
sort file.txt | uniq -c | sort -rn

↑ 목차로 돌아가기


wc

파일의 라인, 단어, 문자 수를 카운트한다.

주요 옵션

옵션 설명
-l 라인 수
-w 단어 수
-c 바이트 수
-m 문자 수

예제

# 전체 통계
wc file.txt

# 라인 수만
wc -l file.txt

# 여러 파일 통계
wc -l *.log

# 파이프와 함께 사용
cat file.txt | grep "error" | wc -l

↑ 목차로 돌아가기


5. 프로세스 관리

실행 중인 프로세스 조회, 모니터링, 종료 및 시스템 서비스 제어를 수행한다.
시스템 리소스 관리와 장애 대응에 핵심적인 명령어들이다.

명령어 리스트

Command Function
ps 프로세스 상태 조회
top 실시간 프로세스 모니터링
htop 향상된 프로세스 모니터링
kill 프로세스 종료
pkill 이름으로 프로세스 종료
systemctl 시스템 서비스 관리
journalctl 시스템 로그 조회
nohup 터미널 종료 후에도 프로세스 유지

ps

현재 실행 중인 프로세스 정보를 조회한다.

주요 옵션

옵션 설명
aux 모든 프로세스 상세 출력
-ef 모든 프로세스 전체 포맷
-u USER 특정 사용자 프로세스
--forest 트리 형태로 출력

예제

# 모든 프로세스 출력
ps aux

# 전체 포맷 출력
ps -ef

# 특정 프로세스 검색
ps aux | grep nginx

# 프로세스 트리 출력
ps aux --forest

# 특정 사용자 프로세스
ps -u www-data

# CPU 사용률 상위 프로세스
ps aux --sort=-%cpu | head -10

# 메모리 사용률 상위 프로세스
ps aux --sort=-%mem | head -10

↑ 목차로 돌아가기


top

실시간으로 시스템 상태와 프로세스를 모니터링한다.

실행 중 단축키

기능
q 종료
k 프로세스 종료
M 메모리 사용률 정렬
P CPU 사용률 정렬
1 CPU 코어별 표시
c 전체 명령어 경로 표시

주요 옵션

옵션 설명
-d N 갱신 주기 N초
-u USER 특정 사용자 프로세스만
-p PID 특정 PID만 모니터링
-b 배치 모드 (파일 출력용)

예제

# 기본 실행
top

# 2초 간격 갱신
top -d 2

# 특정 사용자 프로세스만
top -u nginx

# 배치 모드로 파일 출력
top -b -n 1 > top_output.txt

↑ 목차로 돌아가기


htop

top의 향상된 버전. 컬러풀한 인터페이스와 마우스 지원.

실행 중 단축키

기능
F5 트리 뷰
F6 정렬 기준 선택
F9 프로세스 종료
F10 종료
/ 검색
\ 필터

예제

# 기본 실행
htop

# 특정 사용자 프로세스만
htop -u nginx

# 트리 뷰로 시작
htop -t

↑ 목차로 돌아가기


kill

프로세스에 시그널을 보내 종료한다.

주요 시그널

시그널 번호 설명
SIGTERM 15 정상 종료 요청 (기본값)
SIGKILL 9 강제 종료
SIGHUP 1 재시작/설정 리로드
SIGSTOP 19 프로세스 일시 정지

예제

# 정상 종료 요청
kill 1234

# 강제 종료
kill -9 1234
kill -SIGKILL 1234

# 여러 프로세스 종료
kill 1234 5678 9012

# 설정 리로드 (nginx 등)
kill -HUP 1234

↑ 목차로 돌아가기


pkill

프로세스 이름이나 조건으로 프로세스를 종료한다.

주요 옵션

옵션 설명
-f 전체 명령어 라인에서 검색
-u USER 특정 사용자 프로세스
-signal 전송할 시그널 지정

예제

# 이름으로 종료
pkill nginx

# 강제 종료
pkill -9 nginx

# 전체 명령어에서 검색
pkill -f "python app.py"

# 특정 사용자의 프로세스 종료
pkill -u www-data

↑ 목차로 돌아가기


systemctl

systemd 기반 서비스를 관리한다.

주요 명령

명령 설명
start 서비스 시작
stop 서비스 중지
restart 서비스 재시작
reload 설정 리로드
status 서비스 상태 확인
enable 부팅 시 자동 시작
disable 부팅 시 자동 시작 해제

예제

# 서비스 상태 확인
systemctl status nginx

# 서비스 시작
sudo systemctl start nginx

# 서비스 중지
sudo systemctl stop nginx

# 서비스 재시작
sudo systemctl restart nginx

# 설정 리로드 (재시작 없이)
sudo systemctl reload nginx

# 부팅 시 자동 시작 설정
sudo systemctl enable nginx

# 모든 서비스 목록
systemctl list-units --type=service

# 실패한 서비스 확인
systemctl --failed

↑ 목차로 돌아가기


journalctl

systemd 저널 로그를 조회한다.

주요 옵션

옵션 설명
-u UNIT 특정 서비스 로그
-f 실시간 로그 추적
-n N 최근 N줄 출력
--since 특정 시간 이후 로그
-p LEVEL 로그 레벨 필터
-b 현재 부팅 이후 로그

예제

# 전체 로그 조회
journalctl

# 특정 서비스 로그
journalctl -u nginx

# 실시간 로그 추적
journalctl -f -u nginx

# 최근 100줄
journalctl -n 100

# 오늘 로그만
journalctl --since today

# 에러 레벨 이상만
journalctl -p err

# 특정 시간 범위
journalctl --since "2024-01-01" --until "2024-01-02"

↑ 목차로 돌아가기


nohup

터미널 종료 후에도 프로세스가 계속 실행되도록 한다.

예제

# 백그라운드 실행
nohup ./script.sh &

# 출력 파일 지정
nohup ./script.sh > output.log 2>&1 &

# 출력 버리기
nohup ./script.sh > /dev/null 2>&1 &

↑ 목차로 돌아가기


6. 네트워크

네트워크 연결 상태 확인, 파일 다운로드, API 테스트 등 네트워크 관련 작업을 수행한다.
인프라 구성, 문제 진단, 외부 서비스 연동에 필수적인 명령어들이다.

명령어 리스트

Command Function
ping 네트워크 연결 테스트
curl URL 데이터 전송 및 API 테스트
wget 파일 다운로드
ss 소켓 통계 조회
netstat 네트워크 연결 상태 조회
ip IP 주소 및 라우팅 관리
dig DNS 조회
nslookup DNS 조회 (간단)
traceroute 네트워크 경로 추적
scp SSH를 통한 파일 복사
rsync 파일 동기화

ping

대상 호스트에 ICMP 패킷을 보내 네트워크 연결을 테스트한다.

주요 옵션

옵션 설명
-c N N번 패킷 전송 후 종료
-i N N초 간격으로 전송
-W N N초 타임아웃
-s SIZE 패킷 크기 지정

예제

# 기본 ping
ping google.com

# 4번만 전송
ping -c 4 google.com

# 1초 타임아웃
ping -c 4 -W 1 192.168.1.1

↑ 목차로 돌아가기


curl

URL을 통해 데이터를 전송하거나 받는다. API 테스트에 필수.

주요 옵션

옵션 설명
-X METHOD HTTP 메소드 지정
-H HEADER 헤더 추가
-d DATA POST 데이터
-o FILE 출력 파일 지정
-O 원격 파일명으로 저장
-L 리다이렉트 따라가기
-s 진행 상태 숨김
-v 상세 출력
-I 헤더만 출력
-k SSL 인증서 검증 무시

예제

# GET 요청
curl https://api.example.com/users

# POST 요청 (JSON)
curl -X POST https://api.example.com/users \
  -H "Content-Type: application/json" \
  -d '{"name": "John", "email": "john@example.com"}'

# 헤더 확인
curl -I https://example.com

# 파일 다운로드
curl -O https://example.com/file.tar.gz

# 인증 토큰 포함
curl -H "Authorization: Bearer TOKEN" https://api.example.com/data

# 상세 디버그
curl -v https://example.com

# 응답 코드만 출력
curl -s -o /dev/null -w "%{http_code}" https://example.com

↑ 목차로 돌아가기


wget

URL에서 파일을 다운로드한다.

주요 옵션

옵션 설명
-O FILE 출력 파일명 지정
-q 조용한 모드
-c 이어받기
-r 재귀적 다운로드
-P DIR 저장 디렉토리 지정
--limit-rate 다운로드 속도 제한

예제

# 기본 다운로드
wget https://example.com/file.tar.gz

# 파일명 지정
wget -O myfile.tar.gz https://example.com/file.tar.gz

# 이어받기
wget -c https://example.com/largefile.iso

# 백그라운드 다운로드
wget -b https://example.com/file.tar.gz

# 속도 제한
wget --limit-rate=1m https://example.com/file.tar.gz

↑ 목차로 돌아가기


ss

소켓 통계를 조회한다. netstat의 현대적 대체.

주요 옵션

옵션 설명
-t TCP 소켓
-u UDP 소켓
-l 리스닝 소켓
-n 숫자로 표시 (DNS 조회 안 함)
-p 프로세스 정보 표시
-a 모든 소켓

예제

# 리스닝 TCP 포트
ss -tlnp

# 모든 TCP 연결
ss -tan

# 특정 포트 확인
ss -tlnp | grep :80

# ESTABLISHED 연결
ss -t state established

# 프로세스별 연결 확인
ss -tp

↑ 목차로 돌아가기


netstat

네트워크 연결, 라우팅 테이블, 인터페이스 통계를 조회한다.

주요 옵션

옵션 설명
-t TCP 연결
-u UDP 연결
-l 리스닝 상태
-n 숫자로 표시
-p 프로세스 정보
-r 라우팅 테이블

예제

# 리스닝 포트 확인
netstat -tlnp

# 모든 연결 확인
netstat -an

# 라우팅 테이블
netstat -r

# 인터페이스 통계
netstat -i

↑ 목차로 돌아가기


ip

IP 주소, 라우팅, 네트워크 인터페이스를 관리한다.

주요 서브명령

명령 설명
ip addr IP 주소 조회/관리
ip link 네트워크 인터페이스 관리
ip route 라우팅 테이블 관리
ip neigh ARP 테이블 조회

예제

# IP 주소 확인
ip addr
ip a

# 특정 인터페이스
ip addr show eth0

# 라우팅 테이블
ip route
ip r

# 기본 게이트웨이 확인
ip route | grep default

# 인터페이스 활성화/비활성화
sudo ip link set eth0 up
sudo ip link set eth0 down

# IP 주소 추가
sudo ip addr add 192.168.1.100/24 dev eth0

↑ 목차로 돌아가기


dig

DNS 레코드를 상세하게 조회한다.

주요 옵션

옵션 설명
+short 간략 출력
-t TYPE 레코드 타입 지정
@SERVER DNS 서버 지정

예제

# A 레코드 조회
dig example.com

# 간략 출력
dig +short example.com

# MX 레코드
dig -t MX example.com

# NS 레코드
dig -t NS example.com

# 특정 DNS 서버로 조회
dig @8.8.8.8 example.com

# 역방향 조회
dig -x 8.8.8.8

↑ 목차로 돌아가기


nslookup

간단한 DNS 조회를 수행한다.

예제

# 기본 조회
nslookup example.com

# 특정 DNS 서버 사용
nslookup example.com 8.8.8.8

# 역방향 조회
nslookup 8.8.8.8

↑ 목차로 돌아가기


traceroute

대상까지의 네트워크 경로를 추적한다.

주요 옵션

옵션 설명
-n DNS 조회 안 함
-m N 최대 홉 수
-w N 타임아웃 초

예제

# 기본 추적
traceroute google.com

# DNS 조회 없이
traceroute -n google.com

# 최대 15홉
traceroute -m 15 google.com

↑ 목차로 돌아가기


scp

SSH를 통해 원격 서버와 파일을 복사한다.

주요 옵션

옵션 설명
-r 디렉토리 재귀 복사
-P PORT SSH 포트 지정
-i KEY SSH 키 파일 지정
-v 상세 출력

예제

# 로컬 → 원격
scp file.txt user@server:/path/to/dest/

# 원격 → 로컬
scp user@server:/path/to/file.txt ./

# 디렉토리 복사
scp -r mydir/ user@server:/path/to/dest/

# 포트 지정
scp -P 2222 file.txt user@server:/path/

# 키 파일 사용
scp -i ~/.ssh/mykey.pem file.txt user@server:/path/

↑ 목차로 돌아가기


rsync

파일을 효율적으로 동기화한다. 변경된 부분만 전송.

주요 옵션

옵션 설명
-a 아카이브 모드 (권한, 시간 보존)
-v 상세 출력
-z 압축 전송
--delete 소스에 없는 파일 삭제
--dry-run 테스트 실행
-e 원격 쉘 지정
--progress 진행 상태 표시

예제

# 로컬 동기화
rsync -av source/ dest/

# 원격 서버로 동기화
rsync -avz source/ user@server:/path/to/dest/

# 원격에서 로컬로
rsync -avz user@server:/path/to/source/ ./dest/

# 삭제 포함 완전 동기화
rsync -av --delete source/ dest/

# 테스트 실행
rsync -av --dry-run source/ dest/

# SSH 포트 지정
rsync -avz -e "ssh -p 2222" source/ user@server:/path/

# 진행 상태 표시
rsync -av --progress source/ dest/

↑ 목차로 돌아가기


7. 사용자 및 권한 관리

사용자 계정 관리, 파일/디렉토리 권한 설정, 접근 제어를 수행한다.
보안 정책 적용과 시스템 관리에 필수적인 명령어들이다.

명령어 리스트

Command Function
chmod 파일 권한 변경
chown 파일 소유자 변경
useradd 사용자 생성
usermod 사용자 수정
userdel 사용자 삭제
passwd 비밀번호 변경
sudo 관리자 권한 실행
su 사용자 전환
groups 그룹 확인

chmod

파일이나 디렉토리의 권한을 변경한다.

권한 표기법

기호 의미
r (4) 읽기
w (2) 쓰기
x (1) 실행
u 소유자
g 그룹
o 기타
a 전체

주요 옵션

옵션 설명
-R 재귀적 적용
-v 변경 과정 출력

예제

# 숫자 모드
chmod 755 script.sh    # rwxr-xr-x
chmod 644 file.txt     # rw-r--r--
chmod 600 secret.key   # rw-------

# 기호 모드
chmod +x script.sh     # 실행 권한 추가
chmod u+w file.txt     # 소유자 쓰기 권한 추가
chmod go-rwx file.txt  # 그룹/기타 모든 권한 제거

# 디렉토리 재귀 적용
chmod -R 755 /var/www/

# 디렉토리만 755, 파일만 644
find /var/www -type d -exec chmod 755 {} \;
find /var/www -type f -exec chmod 644 {} \;

↑ 목차로 돌아가기


chown

파일이나 디렉토리의 소유자와 그룹을 변경한다.

주요 옵션

옵션 설명
-R 재귀적 적용
-v 변경 과정 출력

예제

# 소유자 변경
sudo chown user file.txt

# 소유자와 그룹 변경
sudo chown user:group file.txt

# 그룹만 변경
sudo chown :group file.txt

# 재귀적 적용
sudo chown -R www-data:www-data /var/www/

↑ 목차로 돌아가기


useradd

새 사용자 계정을 생성한다.

주요 옵션

옵션 설명
-m 홈 디렉토리 생성
-s SHELL 기본 쉘 지정
-g GROUP 기본 그룹 지정
-G GROUPS 추가 그룹 지정
-d DIR 홈 디렉토리 경로 지정

예제

# 기본 사용자 생성
sudo useradd username

# 홈 디렉토리와 함께 생성
sudo useradd -m username

# 쉘과 그룹 지정
sudo useradd -m -s /bin/bash -G sudo,docker username

# 시스템 사용자 생성 (서비스용)
sudo useradd -r -s /usr/sbin/nologin serviceuser

↑ 목차로 돌아가기


usermod

기존 사용자 계정을 수정한다.

주요 옵션

옵션 설명
-aG GROUP 그룹에 추가
-s SHELL 쉘 변경
-L 계정 잠금
-U 계정 잠금 해제
-l NAME 사용자명 변경

예제

# 그룹에 추가
sudo usermod -aG docker username
sudo usermod -aG sudo username

# 쉘 변경
sudo usermod -s /bin/zsh username

# 계정 잠금
sudo usermod -L username

# 계정 잠금 해제
sudo usermod -U username

↑ 목차로 돌아가기


userdel

사용자 계정을 삭제한다.

주요 옵션

옵션 설명
-r 홈 디렉토리와 메일 스풀 함께 삭제
-f 강제 삭제

예제

# 사용자만 삭제
sudo userdel username

# 홈 디렉토리 포함 삭제
sudo userdel -r username

↑ 목차로 돌아가기


passwd

사용자 비밀번호를 설정하거나 변경한다.

주요 옵션

옵션 설명
-l 계정 잠금
-u 계정 잠금 해제
-d 비밀번호 삭제
-e 비밀번호 만료 (다음 로그인 시 변경 강제)

예제

# 자신의 비밀번호 변경
passwd

# 다른 사용자 비밀번호 변경 (root)
sudo passwd username

# 비밀번호 만료 설정
sudo passwd -e username

↑ 목차로 돌아가기


sudo

다른 사용자(주로 root) 권한으로 명령을 실행한다.

주요 옵션

옵션 설명
-u USER 특정 사용자로 실행
-i 로그인 쉘 시작
-s 쉘 시작
-l 허용된 명령 목록

예제

# root 권한으로 실행
sudo apt update

# root 쉘 시작
sudo -i

# 특정 사용자로 실행
sudo -u www-data whoami

# 허용된 명령 확인
sudo -l

↑ 목차로 돌아가기


su

다른 사용자로 전환한다.

주요 옵션

옵션 설명
- 로그인 쉘로 전환
-c CMD 명령 실행 후 복귀

예제

# root로 전환
su -

# 특정 사용자로 전환
su - username

# 명령 실행 후 복귀
su -c "whoami" username

↑ 목차로 돌아가기


groups

사용자가 속한 그룹을 확인한다.

예제

# 현재 사용자 그룹
groups

# 특정 사용자 그룹
groups username

↑ 목차로 돌아가기


8. 디스크 및 스토리지

디스크 용량, 파티션, 마운트 상태 등 스토리지 관련 정보를 확인하고 관리한다.
용량 모니터링, 스토리지 관리, 시스템 유지보수에 활용한다.

명령어 리스트

Command Function
df 디스크 사용량 확인
du 디렉토리 크기 확인
lsblk 블록 장치 목록
mount 파일 시스템 마운트
umount 파일 시스템 언마운트
fdisk 파티션 관리
blkid 블록 장치 UUID 확인

df

파일 시스템의 디스크 사용량을 확인한다.

주요 옵션

옵션 설명
-h 읽기 쉬운 단위 (GB, MB)
-T 파일 시스템 타입 표시
-i inode 사용량 표시

예제

# 디스크 사용량 확인
df -h

# 파일 시스템 타입 포함
df -hT

# inode 사용량
df -i

# 특정 경로
df -h /var

↑ 목차로 돌아가기


du

파일 및 디렉토리의 크기를 확인한다.

주요 옵션

옵션 설명
-h 읽기 쉬운 단위
-s 합계만 출력
-d N N 깊이까지만
--max-depth=N 최대 깊이
-a 파일 포함

예제

# 현재 디렉토리 크기
du -sh

# 하위 디렉토리별 크기
du -h --max-depth=1

# 큰 디렉토리 찾기
du -h --max-depth=1 | sort -hr | head -10

# 특정 디렉토리
du -sh /var/log/

# 용량 큰 파일/디렉토리 상위 10개
du -ah / 2>/dev/null | sort -hr | head -10

↑ 목차로 돌아가기


lsblk

블록 장치 정보를 트리 형태로 출력한다.

주요 옵션

옵션 설명
-f 파일 시스템 정보 포함
-a 빈 장치 포함
-o COLUMNS 출력 컬럼 지정

예제

# 기본 출력
lsblk

# 파일 시스템 정보 포함
lsblk -f

# 상세 정보
lsblk -o NAME,SIZE,FSTYPE,MOUNTPOINT,UUID

↑ 목차로 돌아가기


mount

파일 시스템을 마운트하거나 마운트 상태를 확인한다.

주요 옵션

옵션 설명
-t TYPE 파일 시스템 타입
-o OPTIONS 마운트 옵션
-a /etc/fstab의 모든 항목 마운트

예제

# 현재 마운트 상태
mount

# 장치 마운트
sudo mount /dev/sdb1 /mnt/data

# 타입 지정
sudo mount -t ext4 /dev/sdb1 /mnt/data

# 읽기 전용 마운트
sudo mount -o ro /dev/sdb1 /mnt/data

# ISO 파일 마운트
sudo mount -o loop image.iso /mnt/iso

# NFS 마운트
sudo mount -t nfs server:/share /mnt/nfs

↑ 목차로 돌아가기


umount

마운트된 파일 시스템을 언마운트한다.

주요 옵션

옵션 설명
-l Lazy 언마운트
-f 강제 언마운트

예제

# 언마운트
sudo umount /mnt/data

# 장치명으로 언마운트
sudo umount /dev/sdb1

# 강제 언마운트
sudo umount -f /mnt/stuck

# Lazy 언마운트 (사용 중이어도)
sudo umount -l /mnt/busy

↑ 목차로 돌아가기


fdisk

디스크 파티션을 관리한다.

주요 옵션

옵션 설명
-l 파티션 목록 출력

예제

# 모든 디스크 파티션 목록
sudo fdisk -l

# 특정 디스크 파티션 작업
sudo fdisk /dev/sdb
# 대화형 명령: n(새 파티션), d(삭제), p(출력), w(저장)

↑ 목차로 돌아가기


blkid

블록 장치의 UUID와 파일 시스템 정보를 확인한다.

예제

# 모든 장치 정보
sudo blkid

# 특정 장치
sudo blkid /dev/sda1

# UUID만 출력
sudo blkid -s UUID -o value /dev/sda1

↑ 목차로 돌아가기


9. 압축 및 아카이브

파일 압축, 해제, 아카이브 생성을 수행한다.
백업, 배포 패키지 생성, 로그 아카이빙 등에 활용한다.

명령어 리스트

Command Function
tar 아카이브 생성/해제
gzip gzip 압축/해제
gunzip gzip 압축 해제
zip zip 압축
unzip zip 압축 해제
zcat 압축 파일 내용 출력

tar

파일을 아카이브로 묶거나 압축한다.

주요 옵션

옵션 설명
-c 아카이브 생성
-x 아카이브 해제
-v 상세 출력
-f FILE 파일명 지정
-z gzip 압축
-j bzip2 압축
-J xz 압축
-t 내용 목록 확인
-C DIR 대상 디렉토리 지정

예제

# tar.gz 생성
tar -czvf archive.tar.gz directory/

# tar.gz 해제
tar -xzvf archive.tar.gz

# 특정 디렉토리에 해제
tar -xzvf archive.tar.gz -C /path/to/dest/

# 내용 확인 (해제 없이)
tar -tzvf archive.tar.gz

# tar.bz2 생성
tar -cjvf archive.tar.bz2 directory/

# 특정 파일만 아카이브
tar -czvf logs.tar.gz /var/log/*.log

# 특정 패턴 제외
tar -czvf backup.tar.gz --exclude='*.tmp' directory/

↑ 목차로 돌아가기


gzip

파일을 gzip으로 압축한다. 원본 파일 대체.

주요 옵션

옵션 설명
-d 압축 해제
-k 원본 파일 유지
-v 상세 출력
-1~-9 압축 레벨 (9가 최대)

예제

# 압축
gzip file.txt           # → file.txt.gz

# 원본 유지하며 압축
gzip -k file.txt

# 압축 해제
gzip -d file.txt.gz

# 최대 압축
gzip -9 largefile.txt

↑ 목차로 돌아가기


gunzip

gzip 압축을 해제한다.

예제

# 압축 해제
gunzip file.txt.gz

# 원본 유지
gunzip -k file.txt.gz

↑ 목차로 돌아가기


zip

파일을 zip 형식으로 압축한다.

주요 옵션

옵션 설명
-r 디렉토리 재귀 포함
-e 암호 설정
-9 최대 압축

예제

# 파일 압축
zip archive.zip file1.txt file2.txt

# 디렉토리 압축
zip -r archive.zip directory/

# 암호 설정
zip -e secure.zip file.txt

# 최대 압축
zip -9 -r archive.zip directory/

↑ 목차로 돌아가기


unzip

zip 파일을 해제한다.

주요 옵션

옵션 설명
-d DIR 대상 디렉토리 지정
-l 내용 목록 확인
-o 덮어쓰기 확인 없이

예제

# 압축 해제
unzip archive.zip

# 특정 디렉토리에 해제
unzip archive.zip -d /path/to/dest/

# 내용 확인
unzip -l archive.zip

↑ 목차로 돌아가기


zcat

압축 파일의 내용을 해제 없이 출력한다.

예제

# gzip 파일 내용 출력
zcat file.txt.gz

# 파이프와 함께 사용
zcat access.log.gz | grep "404"

# 여러 파일
zcat *.gz | grep "error"

↑ 목차로 돌아가기


참고 자료


최종 업데이트: 2024년

반응형

+ Recent posts