DevOps 엔지니어가 자주 사용하는 Linux 명령어 세트
목차
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년
'블라베 IT world > 취향 IT Topic' 카테고리의 다른 글
| Essential Linux Commands for DevOps Engineers: CI/CD Pipeline Management, Container Orchestration, Network Debugging, and Real-time Monitoring & Log Analysis. (0) | 2026.01.12 |
|---|---|
| Linux Commands Frequently Used by DevOps Engineers (0) | 2026.01.11 |
| 집중력 향상에 관한 연구 요약 (2) | 2025.06.12 |
| 보안 3요소 CIA (기밀성, 무결성, 가용성) (0) | 2023.11.01 |
| 멀웨어 감지되어 구글 로그아웃되는 문제, 5단계 해결방법 (1) | 2022.03.21 |