본문 바로가기
Infra

[Linux] 서버 운영자/개발자를 위한 리눅스 명령어 모음집

by 윾수 2025. 5. 15.

1. 프로세스 관련

✅ ps (process status)

  • 현재 실행 중인 프로세스를 화면에 출력, 주로 grep명령어와 섞어서 사용함
#아래옵션 주로 사용함
ps -ef           # 전체 프로세스 (BSD 스타일)
ps aux           # 전체 프로세스 (System V 스타일)
ps -ef | grep keyword  # 특정 프로세스 검색

✅ nohup

  • 세션 종료 후에도 프로세스가 계속 실행되도록함. (터미널 종료될 때 전달되는 Hang Up 시그널 무시)
  • 출력에 대한 리디렉션 처리가능
#기본 사용법 - 표준 출력/에러가 nohup.out 파일로 리디렉션됨.
nohup [명령어]

#백그라운드 실행
nohup [명령어] &

##주요 리디렉션 명령어
 > 파일  - 표준 출력을 파일로 저장 (덮어쓰기)
 >> 파일 - 표준 출력을 파일로 저장 (이어쓰기)
 2> 파일 - 표준 에러를 파일로 저장
 2>&1    - 표준 에러를 표준 출력과 동일하게 리디렉션
 1>파일1 2>파일2 - 표준 출력은 파일1로 표준 에러는 파일2로
 > /dev/null 2>&1 - 어떤 로그도 남기지 않음
#출력 파일 제어
nohup [명령어] > mylog.log 2>&1 &

#출력 파일 없이 실행
nohup [명령어] > /dev/null 2>&1 &

✅ jobs 

  • 현재 쉘에서 백그라운드로 실행 중인 작업 목록 출력 (세션 사용자 기준)
  • 확인된 PID는 kill 명령어와 조합해 프로세스를 중단할 수 있다.
jobs #백그라운드 실행중인 프로세스 표시
[1]  + running    nohup sh bg.sh

jobs -l #PID까지 표시
[1]  + 117333 running    nohup sh bg.sh

✅ kill

  • PID로 프로세스 종료 / 일시중지 / 재개의 기능을 할 수 있다.
  • JVM에서 종료 시그널을 받으면 쓰레드 덤프를 생성한다.
# 기본종료
kill [PID]

# 시그널 종료 - 종료+코어덤프 생성
# java프로세스. 즉, JVM은 시그널을 무시해서 종료되지 않고 쓰레드 덤프를 생성한다
kill -3 [PID]

# 강제종료
kill -9 [PID]

# 일시중지 / 재개
kill -19 [PID]
kill -18 [PID]

2. 시스템 리소스 확인

✅ top

  • 실시간 시스템 상태, cpu/mem 사용률, 프로세스별 자원 사용량을 모니터링 하는 도구
  • 실행 옵션 외에도 모니터링 화면에서 단축키를 이용해서 여러 동작 가능
  • AIX에서는 topas가 대체 하고있다
## 옵션정리
# -b - 배치모드 (스크립트/파일로 출력 리디렉션)
top -b > top.log

# -d [초] - 갱신 주기 설정
top -d 1

# -p [PID] - 특정 PID만 모니터링
top -p 1234

# -u [USER] - 특정 사용자 프로세스만 표시
top -u root
주요 단축키 설명
Shift + P CPU 사용률 내림차순 정렬
Shift + M Memory 사용률 내림차순 정렬
Shift + T 실행 시간 내림차순 정렬
k 프로세스 종료 (k입력후 PID 입력)
u 특정 사용자 프로세스만 표시
f 표시 컬럼 설정
c 명령줄 전체 인자 표시/숨기기
i idle 프로세스 표시/숨기기
q top 종료
space bar  즉시 화면 갱신
z 출력 색상 변경

👉 모니터링 화면 분석

top - 14:46:40 up 1 day,  5:22,  2 users,  load average: 0.00, 0.00, 0.00
Tasks:  44 total,   1 running,  43 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.1 us,  0.2 sy,  0.0 ni, 99.7 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
MiB Mem :   7762.5 total,   6462.9 free,    949.5 used,    597.6 buff/cache
MiB Swap:   2048.0 total,   2048.0 free,      0.0 used.   6813.0 avail Mem

    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
136006 kys       20   0    9324   5264   3116 R   0.0   0.1   0:00.28 top
.
.
.
.
.

 

1️⃣ top - 14:46:40 up 1 day,  5:22,  2 users,  load average: 0.00, 0.00, 0.00

[14:46:40] : 현재시간

[up 1 day, 5:22] : 부팅 후 동작중인 시간

[2users] : 현재 로그인한 사용자 수

[load average] : 1분,5분,15분 동안의 평균 시스템 부하, 자원이 모자라 대기중인 프로세스 갯수로 1이하면 여유롭다는뜻

 

2️⃣ Tasks:  44 total,   1 running,  43 sleeping,   0 stopped,   0 zombie

[total] : 전체 프로세스 수

[running] : 현재 cpu를 사용중인(실행중인) 프로세스 수
[sleeping] : 대기(수면) 상태의 프로세스 수

[stopped] : 정지(일시 중지) 된 프로세스 수

[zombie] : 종료됐으나 부모 프로세스가 아직 수거하지 않은 프로세스 수

 

3️⃣ %Cpu(s):  0.1 us,  0.2 sy,  0.0 ni, 99.7 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st

[id] : CPU가 아무 작업도 하지 않고 대기 중인 시간 비율 / 99.7=매우 여유로움

[wa] : 입출력(I/O) 대기 시간 비율

 

4️⃣MiB Mem :   7762.5 total,   6462.9 free,    949.5 used,    597.6 buff/cache

[total] : 전체 물리 메모리 = free + used(buff/cache 포함)

[free] : 사용 가능한 메모리

[used] : 사용 중인 메모리

[buff/cache] : 커널 I/O 작업을 최적화를 위한 버퍼/캐시로 사용 중인 메모리, 동적 할당

                   별도로 표시 해주지만 실제로는 used에 이미 계산되어 있다.


5️⃣ MiB Swap:   2048.0 total,   2048.0 free,      0.0 used.   6813.0 avail Mem

[total] : 전체 스왑 공간

[free] : 남은 스왑 공간

[used] : 사용 중인 스왑 공간

[avail Mem] : 어플리케이션이 사용할 수 있는 메모리 추정치.
                    메모리 여유를 판단할 때, free 보다 avail Mem을 확인하는게 더 정확하다.


✅ free

  • 메모리 사용량 확인 (RAM + Swap)
  • top명령어의 메모리 내역과 동일하게 생각하면 되며, available=availMem이라고 생각하면 된다.
# 바이트 단위 출력
free -b

# 킬로바이트 단위 출력 [기본값]
free -k

# 메가바이트 단위 출력
free -m

# 기가바이트 단위 출력
free -g

# 테라바이트/페타바이트 단위 출력
free --tera
free --peta

# 수치에 따라 사용자 가독성을 고려해 출력
free -h
               total        used        free      shared  buff/cache   available
Mem:           7.6Gi       955Mi       6.3Gi       4.5Mi       599Mi       6.6Gi
Swap:          2.0Gi          0B       2.0Gi

✅ df (disk free)

  • 파일 시스템의 디스크 공간 사용량 확인 (전체용량 / 사용량 / 남은용량)
  • 주로 마운트된 스토리지 용량 확인할 때 유용하게 사용
# 기본 사용법 df [option] [path(dir/file)]

# 기본값 = kb단위 출력
df

# 사람이 읽기 쉬운 단위로 출력
df -h

# mb단위 출력
df -m

# 블록 크기 출력 [단위 : 바이트]
df -b 1 #바이트 단위 출력
df -b 4096 #4096블록 갯수 출력
df -b 1M #mb단위 출력

# 특정 경로에 해당하는 스토리지만 정보만 출력
df /home/kys

# 출력 예시
df -h /home/kys
Filesystem      Size  Used Avail Use% Mounted on
/dev/sde        251G   13G  226G   6% /

✅ du (disk usage)

  • 디렉토리/파일별 디스크 사용량 확인
  • 빈 디렉토리더라도 파일 시스템에서는 "파일"로 취급되어 최소 1블록을 할당 받아 4kb를 차지함
  • 블록의 단위는 파일시스템 포멧방식에 따라 달라질수 있지만, 현재 리눅스 대부분은 4kb임
# 기본 사용법: du [option] [path]
# option: a와 k가 기본값 ,path: 생략시 현재 경로가 기본값

# -a: 모든 파일과 디렉토리의 사용량 출력 [기본값]
du -a

# -s: 지정한 디렉토리(혹은 파일)의 총 사용량만 요약해서 출력
du -s

# -h: 사용자가 보기편한 단위로 출력
du -h

# -k: kb단위로 출력
du -k

# -m 1mb단위로 출력
du -m

# 자주쓰는 명령어
du -sh .
[출력값]
1.3G    .

✅ ulimit

  • 프로세스별 리소스 제한 확인 및 설정 (파일 개수, 메모리, 스택 등)
  • 주로 최대 동시접근 파일 갯수 설정을 유용하게 사용함
# 모든 제한 조회
ulimit -a
[예시 출력]
-t: cpu time (seconds)              unlimited
-f: file size (blocks)              unlimited
-d: data seg size (kbytes)          unlimited
-s: stack size (kbytes)             8192
-c: core file size (blocks)         0
-m: resident set size (kbytes)      unlimited
-u: processes                       31023
-n: file descriptors                1024
-l: locked-in-memory size (kbytes)  65536
-v: address space (kbytes)          unlimited
-x: file locks                      unlimited
-i: pending signals                 31023
-q: bytes in POSIX msg queues       819200
-e: max nice                        0
-r: max rt priority                 0
-N 15: rt cpu time (microseconds)   unlimited

# 동시 접근 파일 제한 최대로 설정
ulimit -n 65536

# 다시 갯수 확인
ulimit -n
[출력]
65536

✅ 참고.java 리소스 확인

[Programing] - 메모리 덤프(dump) 분석 [ jps, jmap, jhat ]


3. 통신 확인

✅ telnet

  • 네트워크 통신 확인시 해당 ip의 port에 접속 가능 유무를 파악하는데 사용
  • 접속이 되지 않는다면 방화벽이나 해당 포트를 점유하고 있는 프로세스 확인 필요
  • OS에 따라서 별도의 설치가 필요할 수 있음
# telnet 명령어 이용 127.0.0.1:2222 연결 시도
telnet 127.0.0.1 2222

# [예시 출력]
# 시도중
Trying 127.0.0.1...
#정상 접근 완료
Connected to 127.0.0.1.
Escape character is '^]'.
SSH-2.0-OpenSSH_9.6p1 Ubuntu-3ubuntu13.11

✅ netstat / ss

  • 서버의 네트워크 포트 상태, 연결 현황, 리스닝 중인 포트 확인
  • 최신 배포판에서는 ss명령어로 대체되어 별도 패키지 설치 필요없이 기본 내장됨
  • netstat 명령어는 net-tools 라는 패키지 별도 설치 필요함
  • 여러가지 상태의 종류가 있지만 자주쓰는것만 정리
## netstat -tuln : 열려있는 포트 확인 (TCP/UDP)
# t: TCP 프로토콜 소켓 표시
# u: UDP 프로토콜 소켓 표시
# l: Listen 상태만 표시
# n: 호스트, 포트, 사용자이름을 숫자로 표시

netstat -tuln
[예시출력]
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 127.0.0.54:53           0.0.0.0:*               LISTEN
tcp        0      0 127.0.0.1:6010          0.0.0.0:*               LISTEN
tcp        0      0 127.0.0.53:53           0.0.0.0:*               LISTEN
tcp6       0      0 :::80                   :::*                    LISTEN
tcp6       0      0 :::2222                 :::*                    LISTEN
.
.
.

## netstat -nap : 연결 상태 + PID/프로세스 정보 모두 표시
# n: 호스트, 포트, 사용자이름을 숫자로 표시
# a: 모든 소켓(서버용 + 클라이언트용, LISTENING+ESTABLISHED) 등 표시
# p: 해당 소켓을 소유한 프로세스 이름과 PID 표시

netstat -nap
[예시출력]
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 127.0.0.54:53           0.0.0.0:*               LISTEN      -
tcp        0      0 127.0.0.1:6010          0.0.0.0:*               LISTEN      3756/./wslconnect
tcp        0      0 127.0.0.53:53           0.0.0.0:*               LISTEN      -
tcp        0      0 127.0.0.1:22003         127.0.0.1:48820         ESTABLISHED 3756/./wslconnect
tcp        0      0 127.0.0.1:48820         127.0.0.1:22003         ESTABLISHED -
tcp6       0      0 :::80                   :::*                    LISTEN      -
tcp6       0      0 :::2222                 :::*                    LISTEN      -
.
.
.
상태 (State) 설명
LISTEN 외부 연결 요청을 기다리는 상태 (서버 소켓이 열려 있음)
ESTABLISHED 연결이 정상적으로 성립되어 데이터 송수신이 가능한 상태

✅ ping

  • ICMP 기반으로 호스트 접근 가능 여부 확인
  • 네트워크 호스트와의 연결 상태, 지연 시간, 패킷 손실률 등을 테스트 하는데 사용
  • 다양한 옵션을 통해 세밀한 제어 가능
## 옵션이 너무 다양해서 간단한것만 정리

# 네이버 DNS에 핑 날리기
ping naver.com

# localhost로 4번만 보내기
ping -c 4 localhost
[출력]
PING localhost (127.0.0.1) 56(84) bytes of data.
64 bytes from localhost (127.0.0.1): icmp_seq=1 ttl=64 time=0.018 ms
64 bytes from localhost (127.0.0.1): icmp_seq=2 ttl=64 time=0.029 ms
64 bytes from localhost (127.0.0.1): icmp_seq=3 ttl=64 time=0.040 ms
64 bytes from localhost (127.0.0.1): icmp_seq=4 ttl=64 time=0.040 ms

--- localhost ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3373ms
rtt min/avg/max/mdev = 0.018/0.031/0.040/0.009 ms

✅ traceroute

  • 네트워크 상에서 목적지까지 패킷이 거치는 경로(라우터/게이트웨이)를 단계별로 추적해 분석
  • 네트워크 병목 분석시 어느구간에서 지연되는지 분석 가능
  • ❗ traceroute 라는 별도의 패키지를 설치해야 사용할 수 있다.
## 기본 사용법
traceroute [옵션] 대상호스트(IP/domain)

## 8.8.8.8이라는 google DNS 네트워크 경로 분석
traceroute 8.8.8.8
[출력값]
traceroute to 8.8.8.8 (8.8.8.8), 30 hops max, 60 byte packets
 1  kys.mshome.net (172.26.192.1)  0.205 ms  0.177 ms  0.171 ms
 2  61.109.169.1 (61.109.169.1)  1.656 ms  1.649 ms  1.997 ms
 3  172.16.31.1 (172.16.31.1)  0.378 ms  0.374 ms  0.369 ms
 4  203.239.40.113 (203.239.40.113)  1.650 ms  2.909 ms  1.406 ms
 5  203.231.89.97 (203.231.89.97)  0.437 ms  0.434 ms  0.429 ms
 6  211.239.202.25 (211.239.202.25)  0.864 ms 211.239.201.25 (211.239.201.25)  3.246 ms  3.219 ms
 7  211.239.202.169 (211.239.202.169)  36.802 ms 211.239.202.9 (211.239.202.9)  44.119 ms  44.111 ms
 8  61.109.130.122 (61.109.130.122)  38.727 ms  38.721 ms  38.715 ms
 9  142.251.239.209 (142.251.239.209)  56.853 ms 142.250.238.193 (142.250.238.193)  57.306 ms 142.251.239.209 (142.251.239.209)  58.295 ms
10  142.250.225.255 (142.250.225.255)  54.735 ms 142.251.245.19 (142.251.245.19)  54.990 ms  63.986 ms
11  dns.google (8.8.8.8)  63.912 ms  63.901 ms  63.895 ms

4. 네이티브 라이브러리 및 환경 설정

✅ 환경변수 설정


✅ ldd

  • 실행파일이나 공유 라이브러리가 의존하는 .so파일 목록 확인
ls -l
total 17M
-rw-r--r-- 1 kys kys 17M Nov 12  2024 libstdc++.so.6

# libstdc++.so.6 라이브러리가 참조하는 라이브러리 확인
ldd libstdc++.so.6
        linux-vdso.so.1 (0x00007ffcb7b8b000)
        libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fd0b88d4000)
        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fd0b81ee000)
        /lib64/ld-linux-x86-64.so.2 (0x00007fd0b89c6000)
        libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fd0b88a6000)

✅ ln

  • 링크 파일을 생성하는데 사용되는 명령어
  • 서버내에서 라이브러리 버전관리시 유용하게 사용함
    (원본파일_버전관리) a.so.1.2.3, (심볼릭 링크 파일) a.so -> a.so.1.2.3
# 다양한 옵션이 있지만 제일 많이 쓰는 옵션만 정리
# f: 강제 덮어쓰기
# s: 심볼릭 링크(소프트 링크)생성

#  a.so.1.2.3 파일을 참조 하는 심볼릭 링크 생성
ln -fs a.so.1.2.3 a.so

#[링크 확인]
ls -l a.so
#[출력]
lrwxrwxrwx 1 kys kys 30 Dec 16 17:49 a.so -> a.so.1.2.3

5. 파일 및 권한 그리고 실행 관리

✅ alias

  • 명령어 단축어 등록
  • 자주쓰는 옵션 묶어서 개인화된 명령어 만들 때 유용함
  • 공용 명령어지만 해당 챕터에 포함시킨 이유는 내가 주로 아래와 같이 사용한다
    • 특정 경로 이동, 쉘 스크립트 실행, 로그 파일 콘솔 출력 등....
## 사용법

# 단축어 등록
alias ll='ls -la'
# 단축어 제거
unalias ll
# 전체 단축어 목록 출력
alias

#####
#실무예시
#####
alias adminlog='tail -f /logs/web/adminLog/admin.log'
alias tomcatStart='sh /sw/tomcat/bin/startup.sh'
alias tomcatShutdown='sh /sw/tomcat/bin/shutdown.sh'

✅ chmod

  • 파일/디렉토리 권한 설정
  • 옵션에 대한 내용은 아래 내용 참조
##########
# 사용법  #
##########

# 파일권한은 소유자:그룹:기타로 구분된다.
# 각 r:읽기, w:쓰기, x:실행 으로 구분되며 하나로 합치면 아래와 같다
# rwxr-xr-x = 소유자(rwx), 그룹(r-x), 기타(r-x)
# 소유자는 파일 수정이 가능하지만 그룹 및 기타는 읽기와 실행만 가능하다
# 가능/불가능 여부를 이진수로 표현해 권한 구분별로 끊어서 십진수로 표현 가능하다
# 소유자 : rwx = 111(2진수) = 7(10진수)
# 그룹   : r-x = 101(2진수) = 5(10진수)
# 기타   : r-x = 101(2진수) = 5(10진수)

[사용법]
chmod 755 fileName

✅ chown

  • 파일 소유자 및 그룹 변경
  • R 옵션으로 하위 모든 디렉토리/파일 동시 변경 가능
## 사용법
# chown 사용자[:그룹] 디렉토리or파일

# 단일 변경
chown user file.txt
chown user:group file.txt

# 하위 모두 변경
chown user:group webApp

 

✅ find

  • 특정 조건에 맞는 파일 검색
  • -exec나 xargs와 같은 명령어와 조합하면 찾은 파일에 대해 바로 조치 가능
find / -name "*.log"             # 전체 경로에서 .log 파일 찾기
find . -type f -size +100M       # 현재 디렉터리에서 100MB 넘는 파일 찾기
find . -mtime -1                 # 1일 이내 수정된 파일

find . -name "*.tmp" -exec rm -f {} \; #검색된 파일 삭제
find /path/. ! -newermt "2024-07-10 00:00:00" -type f | xargs rm -rf  # 특정 시간 이전 파일 삭제

✅ tail

  • tail 명령어는 파일의 마지막 부분(기본값 10줄)을 출력하는 명령어이다.
  • 옵션에 따라서 내용이 추가되면 추적해서 출력해주는 옵션이 있어서 실시간 로그를 확인할 때 유용하게 사용한다.
  • 비슷하게 파일을 읽는 명령어로는 아래와 같은 명령어가 있다
    • head, less, more, cat, tac, nl
# 기본 사용 (마지막 10줄 출력)
tail web.log

# 숫자 입력한 만큼 끝부분 출력
tail -1000 web.log

# 실시간 파일 추적 출력
tail -f web.log

# 실시간 파일 추적 출력(파일이 교체되어도 자동으로 추적)
# logback-RollingAppender가 파일 이름을 변경해도 같은 파일 추적
tail -F web.log

# 자주 쓰는 명령어
tail -100f web.log

6. 텍스트 및 로그 처리

✅ grep

  • 화면 출력 예상 값 중에서 특정 문자열이나 패턴을 만족하는 행만 출력한다
  • 주로 |(파이프라인)과 함께 사용한다
# 기본사용법 (대소문자 가림)
cat /proc/cpuinfo | grep processor #코어수 체크 명령어 참고~
ps -ef | grep java

# 대소문자 무시
cat web.log | grep -i exception
ps -ef | grep -i java

# 디렉토리 전체 검색
grep -r main ./src

# 부정 (만족하지 않는 값만 출력)
cat web.log | grep -v exception

# 패턴에 대해 색상으로 하이라이트 표시
ps -ef | grep --color=auto java

✅ awk

  • 텍스트 가공 및 필드 추출, 띄어쓰기를 구분으로 컬럼으로 구분
  • 로그 형식별로 특정 컬럼만 뽑아낼 때 매우 유용함
awk '{print $1}' access.log        # 첫 번째 필드 출력
awk -F ':' '{print $2}' file.txt   # 구분자(:) 기준 두 번째 필드


[예제]
 kys@kys  ~/module/crypto  ll
total 36K
drwxr-xr-x 2 kys kys 4.0K Nov 12  2024 doc
drwxr-xr-x 2 kys kys 4.0K Nov 12  2024 gcc
-rwxr-xr-x 1 kys kys 1.6K Nov 12  2024 install_crypt.sh
drwxr-xr-x 3 kys kys 4.0K Nov 12  2024 java
drwxr-xr-x 2 kys kys 4.0K Feb 25 10:10 key
drwxr-xr-x 2 kys kys 4.0K May 16 10:51 lib
drwxr-xr-x 2 kys kys 4.0K Apr  1 12:18 license
drwxr-xr-x 2 kys kys 4.0K Mar 19 15:02 sample
-rwxr-xr-x 1 kys kys  272 Nov 12  2024 test.sh

[실습]
ll |awk '{print $9}'

doc
gcc
install_crypt.sh
java
key
lib
license
sample
test.sh

✅ xargs

  • 파이프로 넘긴 결과를 인자로 변환해서 명령어 실행
  • 다른 명령어와 조합해서 사용하는 만큼 활용도가 높다
find -f . name "*.log" | xargs rm -f

echo "file1 file2" | xargs -n -1 rm

✅ -exec

  • find 결과에 대해 명령어 직접 실행
  • xargs로 대체 가능한 경우도 있으나, 경로에 공백이 포함된 경우 -exec가 더 안전하다
find . -name "*.tmp" -exec rm -f {} \;
find /var -type f -size +100M -exec du -h {} \;

7. 파일 압축 및 해제

✅ zip / unzip

  • zip 형식 압축 및 해제
  • -r 옵션으로 하위 모든 경로 압축 가능
  • ❗ 별도의 패키지 설치가 필요하다
## 대상 파일을 명시해서 archive.zip 으로 압축
zip archive.zip file1.txt file2.txt ...

## 현재경로의 모든 파일 압축
zip -r archive.zip ./

## 현재경로의 모든 파일 압축 + 특정 파일 제외
zip -r archive.zip ./ -x "*.log"

## 압축해제
unzip archive.zip

## 특정 디렉토리 하위에 깔끔하게 압축 해제
unzip archive.zip -d extracted_folder/

✅ tar (및 gzip과 조합)

  • tar, tar.gz, tgz 확장자 압축/해제
## 현재경로 하위 모든 파일 archive.tar로 압축
tar -zcvf archive.tar ./

## 제외 파일 고려해서 압축
tar --exclude="*.log" -zcvf archive.tar ./

## 현재 경로에 압축 해제
tar -cvf archive.tar

## 특정 경로에 깔끔하게 압축해제
mkdir extracted && tar -cvf archive.tar -C excrated/

✅ jar

  • java 용 zip 기반, .jar 확장자 사용.
  • ❗ jdk가 설치되어 있다면 사용 가능하다.
  • MANIFEST.MF 파일이 자동으로 포함되니 주의해서 사용할 것.
# 현재 모든 파일 app.jar로 압축
jar -cvf app.jar ./

# 기본 해제, 현재 경로에 모두 해제됨
jar -xvf app.jar

# 특정 경로에 압축 해제
mkdir extracted && cd extracted && jar xvf ../app.jar

 


8. 스케줄링

✅ crontab

  • 리눅스에서 특정 작업을 원하는 시간, 주기마다 자동으로 실행할 수 있게 예약하는 스케줄러 도구.
  • 백업, 로그정리, 자동화 스크립트, 배치 등 반복 작업을 자동화할 수 있다.
  • 출력에 대한 별도의 로그를 생성하지 않으므로, 작업등록시에 로그 작업을 추가 해주는것이 좋다.
# 명령어 사용법
crontab -e          # 현재 사용자 크론 편집
crontab -l          # 현재 사용자 크론 목록 확인
crontab -r          # 현재 사용자 크론 제거
crontab -u username -e # 특정 사용자의 크론탭 편집 (관리자만 가능)

# 크론탭 실행/중지
sudo service cron status
sudo service cron start
sudo service cron stop
sudo service cron restart

# 크론탭 크론식
* * * * *  [실행할 명령어]
- - - - -
| | | | |
| | | | +----- 요일 (0-6, 일~토)
| | | +------- 월 (1-12)
| | +--------- 일 (1-31)
| +----------- 시 (0-23)
+------------- 분 (0-59)

# 매분마다 test.sh 실행
* * * * * /home/script/test.sh >> /tmp/test.log

# 매일 새벽 2시에 백업 스크립트 실행 >> /tmp/test.log
0 2 * * * /home/user/backup.sh >> /tmp/backup.log

# 매주 일요일 오전 7시 30분에 명령 실행
30 7 * * 0 echo 'Hello' >> /tmp/test.log

# 매 10분마다 실행
*/10 * * * * /home/script/test.sh >> /tmp/test.log

# 매일 1시, 15시에 실행
0 1,15 * * * /home/script/test.sh >> /tmp/test.log

# 매일 1시 0~30분까지 매분 실행
0-30 1 * * * /home/script/test.sh >> /tmp/test.log

✍ 정리

 

리눅스 명령어는 너무 많고, 옵션도 너무 많아서 다 정리할 순 없지만
유용하게 사용하고 있는 명령어들을 위주로 정리해봤다
이정도만 알아도 CLI에서 버벅거리진 않을것 같다.
앞으로도 지속적으로 추가해야겠다.