리눅스 터미널 명령어 정리 (2편) — 권한, 프로세스, 네트워크, 검색 & 파이프

2026. 5. 23. 13:57·블로그, 컴퓨터/Cheatsheets

리눅스 터미널 명령어 정리 썸네일

1편에서는 파일 탐색, 관리, 내용 확인을 다뤘습니다. 2편에서는 나머지 네 가지 카테고리를 정리합니다. 권한과 소유자, 프로세스 관리, 네트워크, 그리고 검색 & 파이프입니다.

파이프 부분은 특히 리눅스 터미널의 진가가 드러나는 곳이라 마지막에 좀 더 길게 썼습니다.


권한 & 소유자

리눅스에서 파일마다 "누가 어떤 행동을 할 수 있는지"가 지정되어 있습니다. ls -l로 목록을 보면 맨 앞에 -rwxr-xr-x 같은 문자열이 붙어 있는데, 이게 권한 정보입니다.

구조는 이렇습니다.

-  rwx  r-x  r-x
↑   ↑    ↑    ↑
타입 소유자 그룹 기타

r(읽기)=4, w(쓰기)=2, x(실행)=1이고, 이 세 값을 더한 숫자로 권한을 표현합니다. 7=rwx, 6=rw-, 5=r-x, 4=r-- 이렇게 됩니다.

chmod

파일 권한을 변경합니다.

chmod 755 script.sh     # 소유자 rwx, 그룹/기타 r-x
chmod 644 config.yaml   # 소유자 rw-, 그룹/기타 r--
chmod +x script.sh      # 실행 권한만 추가 (기호 방식)
chmod -R 755 directory/ # 디렉토리 내 전체에 재귀 적용

스크립트 파일에 실행 권한 줄 때 chmod +x나 chmod 755가 가장 자주 씁니다.

chown

파일 소유자와 그룹을 변경합니다.

chown user file.txt             # 소유자만 변경
chown user:group file.txt       # 소유자와 그룹 같이 변경
chown -R user:group directory/  # 재귀 적용

서버에서 nginx나 www-data 같은 서비스 계정으로 파일 소유를 맞춰야 할 때 씁니다.

sudo

관리자(root) 권한으로 명령어를 실행합니다.

sudo apt update
sudo systemctl restart nginx
sudo vim /etc/hosts

sudo -i나 sudo su로 아예 root 쉘로 전환할 수도 있는데, 개인 서버라도 필요한 명령어만 sudo로 실행하는 게 안전합니다.

whoami / id

현재 로그인된 사용자를 확인합니다. whoami는 이름만, id는 UID, GID, 소속 그룹까지 상세하게 보여줍니다.

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

프로세스 관리

ps

현재 실행 중인 프로세스 목록을 출력합니다. aux 옵션 조합이 가장 많이 쓰입니다.

ps aux              # 모든 프로세스 전체 목록
ps aux | grep nginx # 특정 프로세스 찾기

a=다른 사용자 프로세스 포함, u=사용자 기준 상세 출력, x=터미널 없는 프로세스 포함.

top / htop

실시간으로 프로세스 현황과 CPU·메모리 사용량을 모니터링합니다. top은 기본 내장이고, htop은 설치가 필요하지만 훨씬 보기 편합니다.

top
htop

htop에서는 마우스도 쓸 수 있고, 프로세스를 선택해서 바로 kill도 됩니다. 설치 가능한 환경이면 htop을 씁니다.

kill / pkill

프로세스를 종료합니다. kill은 PID(프로세스 ID)로, pkill은 이름으로 종료합니다.

kill 1234           # PID로 종료 (정상 종료 신호)
kill -9 1234        # PID로 강제 종료
pkill -f "python app.py"    # 이름으로 종료
killall nginx       # 같은 이름의 프로세스 전체 종료

kill만 쓰면 프로세스가 정상 종료할 기회를 줍니다. 안 죽을 때 -9를 씁니다. -9는 프로세스가 무시할 수 없는 강제 신호입니다.

& / nohup / jobs / fg / bg

백그라운드 실행과 관련된 것들입니다.

python app.py &             # 백그라운드로 실행
nohup python app.py &       # 터미널 닫아도 계속 실행
nohup ./server > server.log 2>&1 &  # 출력을 파일로 저장

jobs는 현재 쉘에서 실행 중인 백그라운드 작업 목록, fg %1은 1번 작업을 포그라운드로 전환, bg %1은 정지된 작업을 백그라운드에서 재개합니다.

jobs        # 백그라운드 작업 목록
fg %1       # 1번 작업 포그라운드로 전환
bg %1       # 정지된 작업 백그라운드 재개

네트워크

ping

호스트에 ICMP 패킷을 보내서 연결 상태와 응답 속도를 확인합니다.

ping google.com
ping google.com -c 4    # 4번만 보내고 종료

Linux에서는 횟수 제한 없이 계속 돌기 때문에 -c로 횟수를 지정하거나 Ctrl+C로 중단합니다.

curl

HTTP 요청을 보내는 명령줄 도구입니다. API 테스트, 파일 다운로드, 헤더 확인 등 다양하게 씁니다.

curl https://api.example.com/data           # GET 요청
curl -I https://example.com                 # 헤더만 확인 (-I = HEAD 요청)
curl -X POST -H "Content-Type: application/json" \
     -d '{"key":"value"}' https://api.example.com   # POST 요청
curl -O https://example.com/file.tar.gz     # 파일 다운로드 (원본 파일명 유지)
curl -o output.tar.gz https://...           # 파일 다운로드 (저장 이름 지정)

wget

파일 다운로드에 특화된 도구입니다. curl -O와 비슷하지만 연속 다운로드나 미러링 같은 것은 wget이 더 편합니다.

wget https://example.com/file.tar.gz
wget -c https://...     # 중단된 다운로드 이어받기

ss

소켓 상태와 열린 포트를 확인합니다. 예전엔 netstat을 많이 썼는데 요즘은 ss를 씁니다.

ss -tulpn               # 열린 포트 전체 목록
ss -tulpn | grep 3000   # 특정 포트 확인
  • -t TCP, -u UDP, -l 리스닝 중인 것만, -p 프로세스 이름, -n 숫자 표시

ip

네트워크 인터페이스 정보를 확인합니다. 예전의 ifconfig를 대체합니다.

ip addr         # IP 주소 확인
ip addr show    # 같은 것, 더 명시적
ip route        # 라우팅 테이블

ssh

원격 서버에 접속합니다.

ssh user@192.168.1.100
ssh -p 2222 user@host       # 포트 지정
ssh -i ~/.ssh/key.pem user@host  # 키 파일 지정

scp

SSH를 통해 파일을 복사합니다.

scp file.txt user@host:~/               # 로컬 → 원격
scp user@host:~/file.txt ./             # 원격 → 로컬
scp -r directory/ user@host:~/backup/   # 디렉토리 복사

검색 & 파이프

파이프(|)는 앞 명령어의 출력을 다음 명령어의 입력으로 넘기는 것입니다. 리눅스 명령어들이 각자 작은 역할만 하도록 설계된 이유가 여기 있는데, 파이프로 연결하면 조합해서 복잡한 작업을 할 수 있습니다.

grep

텍스트에서 패턴을 검색합니다. 파이프와 함께 쓰는 빈도가 가장 높은 명령어 중 하나입니다.

grep "error" app.log                    # 파일에서 검색
grep -i "error" app.log                 # 대소문자 구분 없이
grep -n "error" app.log                 # 줄 번호 포함
grep -r "TODO" ./src                    # 하위 디렉토리 재귀 검색
grep -rn "TODO" ./src                   # 줄 번호 포함 재귀 검색
grep -v "DEBUG" app.log                 # 해당 패턴 제외하고 출력
grep -E "error|warning" app.log         # 정규식 패턴 (OR 조건)

find

파일이나 디렉토리를 조건으로 검색합니다. 이름, 확장자, 수정 시각, 용량 등 다양한 조건을 쓸 수 있습니다.

find . -name "*.log"                    # 확장자로 찾기
find . -name "config.yaml"              # 파일명으로 찾기
find . -type d -name "node_modules"     # 타입이 디렉토리인 것
find . -mtime -7                        # 최근 7일 내 수정된 파일
find . -size +100M                      # 100MB 이상인 파일
find . -name "*.tmp" -delete            # 찾아서 바로 삭제

awk

텍스트를 컬럼 단위로 처리합니다. CSV나 공백 구분 데이터에서 특정 열만 뽑아낼 때 씁니다.

awk '{print $1}' file.txt           # 첫 번째 컬럼만 출력
awk '{print $1, $3}' file.txt       # 1, 3번째 컬럼
awk -F',' '{print $2}' data.csv     # 구분자를 쉼표로 지정
awk 'NR>1 {print $0}' file.txt      # 첫 줄(헤더) 제외하고 출력

sed

스트림 편집기로, 주로 텍스트 치환에 씁니다.

sed 's/old/new/g' file.txt          # old를 new로 전체 치환 (출력만)
sed -i 's/old/new/g' file.txt       # 파일 직접 수정
sed '/pattern/d' file.txt           # 패턴 포함된 줄 삭제
sed -n '10,20p' file.txt            # 10~20번째 줄만 출력

sort / uniq

sort는 정렬, uniq는 연속된 중복 제거입니다. 보통 같이 씁니다.

sort file.txt                       # 사전순 정렬
sort -n file.txt                    # 숫자 기준 정렬
sort -r file.txt                    # 역순
sort | uniq                         # 정렬 후 중복 제거
sort | uniq -c                      # 중복 개수 포함
sort | uniq -c | sort -rn           # 빈도 높은 순으로 정렬

리다이렉션

파이프가 명령어 간 연결이라면, 리다이렉션은 파일과 연결입니다.

ls > list.txt           # 출력을 파일로 저장 (덮어쓰기)
ls >> list.txt          # 출력을 파일에 이어쓰기
grep "error" log 2>&1   # 표준 에러도 표준 출력으로 합치기
command > /dev/null     # 출력을 버림 (조용히 실행)

xargs

파이프 결과를 다음 명령어의 인수로 넘깁니다. 파이프는 stdin으로 넘기는 것이고, xargs는 명령줄 인수로 넘기는 것입니다.

find . -name "*.tmp" | xargs rm                     # tmp 파일 전체 삭제
find . -name "*.log" | xargs grep "ERROR"           # 찾은 파일들에서 검색
echo "file1 file2 file3" | xargs -n 1 touch        # 공백 구분으로 하나씩 처리

파이프 조합 예시

각각의 명령어가 작동하는 건 아는데 조합이 어렵다면, 실제로 자주 쓰는 패턴을 몇 가지 보는 게 도움이 됩니다.

# 접근 로그에서 IP별 접속 횟수 상위 5개
cat access.log | awk '{print $1}' | sort | uniq -c | sort -rn | head -5

# 현재 디렉토리에서 가장 큰 파일 10개
du -sh * | sort -rh | head -10

# 특정 포트 쓰는 프로세스 찾기
ss -tulpn | grep 8080

# Python 파일에서 import 목록 추출 (중복 제거)
grep -rh "^import\|^from" ./src | sort | uniq

# 로그 파일에서 에러만 실시간으로 보기
tail -f app.log | grep --line-buffered "ERROR\|CRITICAL"

정리 표

카테고리 명령어 주요 옵션 용도
권한 chmod 755 +x -R 권한 변경
권한 chown user:group -R 소유자 변경
권한 sudo — 관리자 권한 실행
권한 whoami / id — 사용자 확인
프로세스 ps aux | grep 프로세스 목록/검색
프로세스 htop — 실시간 모니터
프로세스 kill -9 PID로 종료
프로세스 pkill -f 이름으로 종료
프로세스 nohup ... & — 백그라운드 유지 실행
네트워크 ping -c 연결 확인
네트워크 curl -I -X -d HTTP 요청/다운로드
네트워크 wget -c 파일 다운로드
네트워크 ss -tulpn 열린 포트 확인
네트워크 ip addr — IP 주소 확인
네트워크 ssh -p -i 원격 접속
네트워크 scp -r SSH 파일 복사
검색 grep -rn -i -v 텍스트 패턴 검색
검색 find -name -mtime 파일 검색
검색 awk -F 컬럼 기반 처리
검색 sed s/old/new/g -i 텍스트 치환
검색 sort / uniq -rn -c 정렬 / 중복 제거
파이프 | > >> — 연결 / 저장 / 이어쓰기
파이프 xargs -n 결과를 인수로 전달
반응형
저작자표시 비영리 변경금지 (새창열림)

'블로그, 컴퓨터 > Cheatsheets' 카테고리의 다른 글

Neovim 설정 정리 (2편) — lazy.nvim, LSP, 주요 플러그인  (0) 2026.05.25
Neovim 설정 정리 (1편) — init.lua 구조와 Lua 기초  (0) 2026.05.25
Vim 명령어 정리 (2편) — 검색/치환, Visual 모드, 분할 화면, 설정  (0) 2026.05.24
Vim 명령어 정리 (1편) — 모드, 이동, 편집, 저장  (0) 2026.05.24
리눅스 터미널 명령어 정리 (1편) — 파일 탐색, 관리, 내용 확인  (0) 2026.05.23
'블로그, 컴퓨터/Cheatsheets' 카테고리의 다른 글
  • Neovim 설정 정리 (1편) — init.lua 구조와 Lua 기초
  • Vim 명령어 정리 (2편) — 검색/치환, Visual 모드, 분할 화면, 설정
  • Vim 명령어 정리 (1편) — 모드, 이동, 편집, 저장
  • 리눅스 터미널 명령어 정리 (1편) — 파일 탐색, 관리, 내용 확인
생각사람
생각사람
지극히 사적인 연구실
  • 생각사람
    생각사람의 별장
    생각사람
  • 전체
    오늘
    어제
    • 분류 전체보기 (207)
      • 금융 (57)
        • 주식 공부 (11)
        • 파생상품 입문 (17)
        • 파생상품 기초 (15)
        • 파생상품 실전 (14)
      • 블로그, 컴퓨터 (83)
        • 프로그래밍 (16)
        • DevOps (8)
        • AI, RL, ML, ... (5)
        • 애드센스, SEO (23)
        • 임베디드 (3)
        • 컴퓨터 관련 (7)
        • Cheatsheets (21)
      • 다른 공부들 (67)
        • 읽고 쓰기 (18)
        • 수학 (15)
        • 물리 (9)
        • 사진 공부 (25)
  • 인기 글

  • 최근 글

  • 최근 댓글

  • 태그

    AI
    선형대수학
    스트래들
    공업수학
    소니 a6000
    github
    옵션
    깃
    양자역학
    스트랭글
    코딩
    선물 옵션
    프로그래밍
    c
    슈뢰딩거 방정식
    version control
    웹크롤러
    옵션 투자
    깃허브
    CheatSheet
    독후감
    벡터
    GIT
    cmake
    오펜하이머
    c++
    파생상품
    구글 애드센스
    Kreyszig
    행렬
  • hELLO· Designed By정상우.v4.10.6
생각사람
리눅스 터미널 명령어 정리 (2편) — 권한, 프로세스, 네트워크, 검색 & 파이프
상단으로

티스토리툴바