Home Linux 명령어
Post
Cancel

Linux 명령어

명령어 기본 규칙

  • 명령어 뒤에는 반드시 띄어 쓰기를 함

  • 명령어 --option target 순서를 지킴
    • -
      • 간소화, 단축 옵션 (예: -h)
    • --
      • 풀옵션 (예: --help)
  • 명령어 옵션은 조합이 가능함
    • 옵션 순서가 적용될 시 마지막 옵션 적용
      • ex) 청기들어 청기내려 청기들어 청기내려 → 마지막 청기내려 적용
    • 정반대되는 옵션
      • 옵션에 대한 순서 영향 보고 판단
  • 경로가 중간에 누락되면 안 됨
    • 하나의 경로는 절대 띄어쓰지 않음
    • 경로 띄어쓸 경우 2개로 인식

      1
      2
      3
      4
      5
      
      pwd # 현재 위치 /home/test
      mkdir /home/test/a/b # a 디렉토리가 없어 에러 발생
      mkdir /home/test/a   # a 디렉토리가 생성
      mkdir /home/test/a/b # 정상적으로 생성 가능
      ls -lR # 하위 디렉토리 목록까지 확인하는 명령어
      



기본 명령어

pwd

  • prompt work directory 약자

  • 경로 확인 명령어

  • prompt(명령어 입력받을 수 있는 상태)가 대기하고 있는 directory 확인

  • prompt 창 상태

    • ID@네트워크 명 현재 위치 dir 권한 형태

    • [root@localhost 바탕 화면]#
      • root
        • ID, localhost에 가입되어 있는 root 계정
      • @localhost
        • 호스트네임 (Hostname, 장치 이름)
      • 바탕 화면
        • 현재 위치 dir, pwd
      • #
        • 관리자 권한
    • [mxxikr@localhost 바탕 화면]$
      • mxxikr
        • ID, localhost에 가입되어있는 mxxikr 계정
      • @localhost
        • 호스트네임 (Hostname, 장치 이름)
      • 바탕 화면
        • 현재 위치 dir(pwd) = /home/mxxikr/바탕화면
      • $
        • 사용자 권한

ls

  • list 약자

  • 디렉토리 목록 확인 명령어

  • -q
  • -l(--long)
    • 자세한 내용 출력
    • 권한, 포함된 파일 수, 소유자, 그룹, 파일 크기, 파일 이름, 수정 일자
  • -a(--all)
    • 숨김 파일(.) 포함에서 모든 내용 출력
  • -dl
    • 디렉토리 정보만 표시
  • -S(--size)
    • 파일 크기 순으로 정렬하여 출력
  • -r(--reverse)
    • 거꾸로 출력 (기본값은 알파벳 순서 출력)
  • -R(--recursive)
    • 하위 디렉토리까지 출력
  • -h(--human)
    • K, M, G단위 사용하여 사람이 보기 좋게 파일 크기 표시

mkdir

  • make directory 약자

  • directory 생성

  • -p

    • parents 약자
    • 누락된 상위 디렉토리까지 한번에 생성

touch

  • 파일 생성

rm

1
rm -rf 
  • remove 약자

  • 파일 삭제 명령어

  • -r (recursive)
    • 디렉토리를 하위 내용부터 삭제
  • -f (force)
    • 확인 메세지 없이 강제 삭제
  • -i (interactive)
    • 삭제 할 때 매번 삭제 여부 사용자에게 물어봄
  • -v (verbose)
    • 삭제하는 동안 삭제되는 내용 보여줌

rmdir

  • remove directory 약자

  • 디렉토리 삭제 명령어

  • -p

    • 필요한 경우 경로 상의 상위 디렉토리도 삭제

mv

1
mv  /movetest/a  /movetest/b  /mvtest  # /movetest/a를 /movetest/b로 이름 변경하여 /mvtest에 이동
  • move 약자

  • 파일/디렉토리 이동 명령어

  • 파일/디렉토리 이름 변경 명령어

  • 경로에 따른 mv 명령 결과

    • 원본과 target이 이름이 같을 경우 하위 dir로 위치 (이름 생략 가능)
    • 원본과 target의 이름이 다를 경우 복사 이동과 동시에 이름 변경
    • 여러 경로 존재 시 가장 마지막 경로가 target

cp

  • copy 약자

  • 파일 복사

  • -r
    • 파일 포함한 dir 복사
  • -p
    • 보존 복사 (속성 값, 시간 그대로 복사)
  • -f
    • 복사 대상 파일이 이미 그 위치에 존재 한다면 파일 삭제 후 강제 복사
  • -i
    • 복사 대상 파일이 이미 그 위치에 존재 한다면 덮어쓸 것인가를 사용자에게 확인(y/n)
  • 경로에 따른 cp 명령 결과
    • 원본과 target이 이름이 같을 경우 하위 dir로 위치 (이름 생략 가능)
    • 원본과 target의 이름이 다를 경우 복사 이동과 동시에 이름 변경
    • 여러 경로 존재 시 가장 마지막 경로가 target

경로 이동 및 확인 (., .., ~, cd)

  • .
    1
    2
    3
    4
    
    pwd # /root/
    cd .
    pwd # /root/ 
    # 계속 현재위치에 머물러 있음
    
    • 현재위치
  • ..
    1
    2
    3
    4
    
    pwd # /root/
    cd ..
    pwd # / 
    # 상위 디렉토리로 경로 이동
    
    • 상위 디렉토리
  • ~
    1
    2
    3
    4
    
    # mxxikr@localhost 바탕화면
    pwd # /home/mxxikr/바탕화면
    cd ~
    pwd # /home/mxxikr
    
    • 로그인 계정의 home dir
  • cd
    1
    2
    3
    4
    
    pwd # /root/
    cd /home/mxxikr
    pwd # /home/mxxikr
    # /root/에서 /home/mxxikr로 디렉토리 이동
    
    • change directory
    • 디렉토리 변경, 이동
    • ex) /home/mxxikr/c/d 위치에서 디렉토리 이동

      1
      2
      3
      4
      5
      6
      7
      
      cd ./  # /home/mxxikr/c/d
      cd ..  # /home/mxxikr/c
      cd ../../..  # /
      cd home # /home
      cd ./home   # /home
      cd test/a/b  # /home/test/a/b
      cd ../../../mxxikr/c/d  # /home/mxxikr/c/d
      

      image

stat

  • 파일 속성 내용, 접근 내용 확인 명령어

  • mac(modify/access/change) time 확인

    • access(파일에 대한 접근), modify, change(변조) 확인 가능

cat

1
cat /etc/passwd
  • 파일 내용 출력 명령어

  • 문서 전체 보기

1
2
cat test.txt | head -n 3 # test.txt 문서 상단부터 3줄만 출력
head -3 /etc/passwd | cat -n  # 줄 앞에 번호를 붙이고 /etc/passwd 문서 상단부터 3줄만 출력
  • 파일 내용 앞부분만 출력하는 명령어

  • 문서 상단부터 기본 10줄 출력

  • -n

    • 출력하는 줄 수 입력 (default 10줄)

tail

1
2
cat test.txt | tail -n 5 # test.txt 문서 하단부터 5줄만 출력
tail -15 /etc/passwd | cat -n  # 줄 앞에 번호를 붙이고 /etc/passwd 문서 하단부터 15줄만 출력
  • 파일 내용 하단부터 출력 명령어

  • 문서 하단부터 기본 10줄 출력

  • -F
    • 파일 변경 감시해 내용 추가 될 때마다 변경 점 실시간 출력
  • -n
    • 출력하는 줄 수 입력 (default 10줄)

more

1
more -3 /etc/passwd  #  /etc/passwd 3줄씩 끊어 보기
  • 파일 내용을 잘라서 출력

  • 문서 끊어 보기 (= less 명령)

  • [Enter]
    • 한줄씩 출력
  • [Spacebar]
    • 단위 출력

grep

1
cat test.txt | grep "test" # test.txt에서 test 문자열 포함한 줄 출력
  • 문자열 검색 명령어

  • 문자가 포함된 열 추출

  • -r
    • 디렉토리 내의 모든 디렉토리, 파일까지 검색하도록 지정
  • -i
    • 대문자, 소문자 차이 무시
  • -v
    • 검색할 문자열이 포함되지 않은 줄만 출력
  • -n
    • 라인 수 출력

find

1
2
find [PATH] -name [FILE_NAME] -type [FILE/DIRECTORY] -perm [PERMISSION] 
find / -name [FILE_NAME] -exec rm {} \; # 일치하는 파일 찾아 삭제
  • {}
    • find 명령 진행
    • 실행
  • ;
    • 마침표
1
2
3
4
find /home -name mxxikr  # /home에 있는 파일 중 파일명이 mxxikr인 파일 검색       
find /home -name mxxikr -o -name mxxikr2 # /home에 있는 파일 중 파일명이 mxxikr, mxxikr2인 파일 검색      
find / -perm /4000  # setuid (관리자 권한 확인)
find /find -name 'te*' -exec rm {} \;  # /find에서 파일명이 te로 시작하는 모든 파일 찾아서 삭제
  • 하위 폴더에 존재하는 파일 찾아주는 명령어

  • -name
    • 대소문자 구분하여 파일명 검색
  • -iname
    • 대소문자 구분하지않고 파일명 검색
  • -o
    • 여러 개 검색할 때 삽입
  • -type
    • 파일 타입 검색
  • -perm
    • 권한 검색
  • -exec
    • 함수, 실행 결과
  • -atime / -ctime / -mtime
    • +n
      • n일 이상
    • -n
      • n일 이내
  • -newer target
    • 타겟 파일 생성 후에 수정된 모든 디렉토리 및 파일 검색

ifconfig, ip addr

  • ip 확인

free -m

  • 메모리 상태 확인



시간 관련 명령어

hwclock

  • 하드웨어 시간 확인/재설정
    • hwclock -s
      • CMOS의 시간을 가져와 현재 운영 체제 시간 재설정
    • hwclock -r
      • 하드웨어 시간 확인

date

  • 리눅스 시스템에서 인식하고 있는 현재 시간 확인/재설정

rdate (Legacy)

  • 시간 동기화
    • 지정한 원격 타임 서버의 시간과 현재 시스템의 운영 체제의 시간 동기화
    • rdate -p [NTP 주소]
      • NTP 서버 시간 확인
    • rdate -s [NTP 주소]
      • NTP 서버와 시간 동기화

참고: rdate는 구형 도구로 CentOS 7/Ubuntu 18.04 이후부터는 권장되지 않습니다. 최신 시스템에서는 chrony, timedatectl 또는 ntpdate를 사용하는 것이 좋습니다.

시간 변경 옵션

1
2
touch -d 07:22 1 # 07:22인 1파일 생성
touch -t 200012121212.10 2 # 2000년 12월 12일 12시 12분 10초인 2파일 생성
  • -d [시]:[분]
    • 당일 시간 변경
  • -t [yyyy][mm][dd][hh][mm][.ss]
    • 년도 날짜 시간 변경



Shell Globbing 및 기타

Shell Globbing (와일드카드 패턴)

참고: Shell Globbing은 정규 표현식(Regular Expression)과 다릅니다.

  • Glob (ls, rm, cp 등): *는 “모든 문자열”, ?는 “임의의 한 문자”
  • Regex (grep, sed, awk 등): .이 “임의의 한 문자”, *는 “앞 문자의 0개 이상 반복”
  • *
    1
    2
    3
    
    rm -rf  *  # 전체 파일 삭제
    rm -rf  1*  # 1로 시작하는 파일 전체 삭제
    rm -rf  *1  # 1로 끝나는 파일 전체 삭제
    
    • 모든 문자열 매칭
  • ?
    1
    
    rm -rf  ?  # 한자리 문자 파일 전체 삭제
    
    • 임의의 한 문자 매칭

파이프 및 리다이렉션

  • | (Pipe)
    1
    
    ls -l /etc | grep sys  # sys 문자열을 포함한 /etc 리스트 출력 
    
    • 오른쪽 명령을 받아 왼쪽 명령 실행
    • 프로세스 혹은 실행된 프로그램의 결과를 다른 프로그램으로 넘겨줄 때 사용
  • < (Read)
    • cat < c : 읽기
  • > (Write)
    • ls -l /home /ac > test3 : 쓰기, 파일 생성, 덮어쓰기
  • >> (Append)
    • cat b a >> c : 추가, 파일 생성, 원본 아래 내용 추가

Redirection 상세

  • 프로그램의 결과 혹은 출력을 파일이나 다른 스트림으로 전달하거나 남길 때 사용
1
2
3
4
5
6
7
8
9
10
11
12
13
< # 입력 redirection
> # 출력 redirection
>> # 추가 출력 redirection
0 # 입력, 입력부분, input
1 # success (정상출력), output(기본값)
2> # error redirection (오류출력), output
&>  # 표준 출력과 표준 에러를 동시에 redirection

cat a b d > c # 정상 내용만 입력
cat a b d 1> c # 정상 내용만 입력
cat a b d 2> c # 오류 내용만 입력
cat a b d > c 1>&2 # 정상 내용 오류 처리
cat a b d > c 2>&1 # 오류 내용 정상 처리

논리 연산자

  • && (AND)
    • a && b: a 성공 시 b 실행
  • || (OR)
    • a || b: a 실패 시 b 실행

alias

1
2
3
alias c='clear' # alias 설정
alias # alias 확인
unalias c # alias 삭제
  • 별칭 모음
  • 로그 아웃하면 내용 삭제되므로 영구적 사용은 shell에 부여해야 함



시스템 리소스 및 성능 모니터링

  • 서버가 느려지거나 응답이 없을 때 병목 지점을 파악하기 위해 사용

    htop

1
2
3
htop
htop -u [user]
htop -p [PID]
  • 실시간 모니터링
  • 주요 옵션
    • htop -u [user]
      • 특정 사용자 프로세스만 확인
    • htop -p [PID]
      • 특정 PID만 모니터링
    • F5
      • 트리 뷰로 부모-자식 관계 확인
  • Load Average가 CPU 코어 수보다 높으면 과부하 상태임

vmstat

1
vmstat 1 10
  • 가상 메모리 통계
  • 핵심 컬럼
    • si/so
      • 스와핑 발생 여부 (0이 아니면 메모리 부족)
    • wa
      • IO Wait (높으면 디스크 병목)

iostat

1
iostat -xz 1
  • 디스크 I/O
  • 핵심 지표
    • %util
      • 디스크 사용률 (100% 가깝게 유지되면 포화)
    • await
      • 평균 대기 시간



네트워크 트러블슈팅

ss

1
ss -tulnp
  • 소켓 통계
  • netstat 대신 권장됨
  • 리스닝 중인 포트와 프로세스 확인

tcpdump

1
sudo tcpdump -i eth0 port 80 -nn -A
  • 패킷 캡처
  • -A 옵션으로 패킷 내용을 텍스트로 확인 가능 (HTTP 헤더 등)

curl

1
2
curl -v [URL]
curl -w [FORMAT] [URL]
  • API 테스트
  • -v 옵션으로 핸드쉐이크 과정 디버깅
  • -w 옵션으로 DNS, 연결 시간 등을 분해하여 측정 가능

lsof

1
2
lsof -i :8080
lsof /path/to/file
  • 파일/소켓 추적
  • 특정 포트 점유 프로세스 확인
  • 특정 파일을 잡고 있는 프로세스 확인



텍스트 처리 및 로그 분석

awk

1
awk '$9 == 500 {print $1}' access.log | sort | uniq -c | sort -rn
  • 응답 코드 500인 요청의 IP 카운트

sed

1
sed -i 's/old/new/g' file
  • 파일 내용 치환 및 편집



시스템 관리

ps & kill

1
2
ps aux --sort=-%mem
pkill -f [name]
  • 메모리 점유율 순 정렬
  • 이름으로 프로세스 일괄 종료

systemctl

  • 서비스 상태 확인, 시작, 종료, 활성화 관리

디스크 관리

du / df

1
2
df -h
du -sh *
  • 전체 디스크 용량 확인
  • 현재 디렉토리 내 폴더별 용량 확인

find

1
find /var/log/app -name "*.log" -mtime +30 -delete
  • 오래된 로그 삭제



디버깅

dmesg

1
2
dmesg
dmesg -T
  • 커널 메시지 확인 (OOM Killer, 하드웨어 에러 등)
  • 사람이 읽을 수 있는 시간으로 표시

strace

1
2
strace -p [PID]
strace ./program
  • 시스템 콜 추적
  • 프로세스가 파일 접근 실패 등을 이유로 죽을 때 원인 분석에 유용

트러블슈팅 가이드

  • CPU 과부하
    • tophtopvmstat
  • 접속 불가
    • pingcurl -vtelnetss -tnlp
  • 프로세스 종료
    • dmesg | grep oom 및 시스템 로그 확인

image



Reference

Contents