TIL

[에스넷시스템 부트캠프] TIL Day14 - diff, sort, file, 압축과 아카이빙, 프로세스

yulee_to 2025. 6. 9. 23:32
728x90

1. 유용한 명령어

1) diff

# diff file1 file2 

: 두 파일에 대한 간략한 차이점

 

출력 형식
3c3                   /* file1의 3번째 줄이 file2의 3번째 줄로 변경되었다는 표시 ( c = change ) */
< 33333           /* file1의 해당 줄 */
---
> 44444           /* file2의 해당 줄 */

a (add) : 추가
d (delete) : 삭제
c (change) : 변경

 

 

# diff -c file1 file2

: 두 파일에 대한 자세한 차이점

 

# diff -i file1 file2 

: 두 파일을 비교할 때 대소문자 구분 X

💡 데이터 마이그레이션 후 무결성 검사
스토리지 마이그레이션이나 데이터 이동 작업이 끝난 후에는, 이동된 파일들이 원본과 동일한지 확인하는 과정이 필요하다. 이럴 때 # diff --recursive 명령어를 사용하여 디렉토리 전체를 하위 폴더까지 포함하여 비교할 수 있다. 

💡 마이그레이션이란?
시스템, 스토리지, 데이터베이스 등의 데이터나 환경을 다른 위치로 이동하거나 변환하는 작업을 말한다.

 

2) sort

파일의 정렬, 하나 또는 그 이상의 파일의 텍스트 줄을 스크린 상에서 정렬하고자 할 때 사용한다.

sort 명령어는 기본적으로 공백 문자 (space, tab)를 필드 구분자로 인식한다.

 

# sort -k 3 filename 

: 정렬할 필드(3)을 지정

 

# sort -t : -n filename

: -t로 필드 구분자(:)를 지정하고 -n으로 숫자 기준으로 정렬

 

# cat filename | sort -n | uniq | wc -l

: 파일 내 중복되지 않은(uniq) 숫자 라인 수(wc -l)를 출력

 

3) file

file 명령어는 파일의 종류를 알 수 있는 명령어이다. 보통 인터넷 상에서 다운로드 받은 파일이 정확히 어떤 종류인지를 확인할 때 사용된다. 

 

2. 압축 -  gzip 

리눅스에서 gzip 은 파일을 압축하고, gunzip 또는 gzip -d는 압축을 해제하는 명령어이다. 
압축 후에는 .gz 확장자가 붙은 새로운 파일이 생성되고, 원본 파일은 자동으로 삭제된다. 

 

# gzip -n filename
: 명령어에 n 부분에 숫자를 지정해 압축률와 압축 속도를 조절할 수 있다. 

숫자가 낮을수록 압축 속도가 높고, 숫자가 높을수록 압축이 높다. 숫자는 1~9까지 지정 가능하다. 

 

3. 압축 + 아카이빙 - tar 

아카이빙은 여러 파일이나 디렉토리를 하나의 파일로 묶는 작업으로, 용량 변화는 없다.
tar 명령어를 사용해 아카이빙할 수 있으며, -z 옵션으로 gzip 압축을 함께 적용하고, -f 옵션으로 테이프 대신 파일로 출력되게 만든다.

과거에는 대용량 데이터를 저장하거나 백업할 때 자기 테이프(LTO, DLT 등) 를 사용했다. tar는 이러한 테이프에 여러 파일을 순차적으로 하나로 묶어 저장할 수 있게 도와주는 도구였다.

요즘은 실제 테이프 장치 없이 디스크나 클라우드 스토리지를 테이프처럼 에뮬레이션하는 VTL(Virtual Tape Library) 을 사용하기도 한다. 이는 기존 테이프 기반 백업 시스템을 유지하면서도 속도와 접근성을 향상시킬 수 있는 백업 솔루션이다.

LTO 테이프

 

# tar cvf file.tar filename

: 새로운 아카이브 파일을 생성(c)하는 과정을 출력(v)하고 그 결과를 파일로 저장(f)

 

# tar tvf file.tar

: file.tar 파일(f)의 아카이브 목록(t)을 자세히(v) 출력

tar는 파일의 inode 정보(소유자, 권한, 수정 시간 등 메타데이터) 도 함께 저장하므로, 압축 해제 시에도 기존 파일의 시간 정보가 유지된다.

 

# tar cvzf file.tar.gz file1 file2 file3

: 여러 파일을 하나의 아카이브 파일로 묶고(c), gzip으로 압축(z) 하여, 파일로 저장(f) 하고, 진행 과정을 출력(v)

 

# tar cvf - . ( cd /dir ; tar xvf - ) 

: 현재 디렉토리(.)의 모든 파일을 표준 출력으로 묶어 파이프로 전달하고, /dir로 이동하여 그대로 압축 해제함.

이 방식을 사용하면 마이그레이션시 속성, 권한, 수정시간, 파일의 변경 없이 수행할 수 있다. 

❗구버전 tar 사용시 주의 사항
구버전 tar은 파일을 아카이빙할 때 절대 경로(/)를 그대로 저장해 압축 해제 시 시스템 디렉토리를 덮어쓸 위험이 있다. 최신 GNU tar는 이를 자동으로 방지하며, --absolute-names 옵션을 써야만 절대 경로가 유지된다.

4. 프로세스

1) 프로세스란?

  • 프로세스는 프로그램이 메모리에 적재되어 실제로 실행 중인 상태를 의미
  • 자식 프로세스는 부모 프로세스의 복제본이며, 일부 자원을 공유
  • 부모 프로세스가 종료되면 자식 프로세스도 존재 불가
  • 프로세스 관련 정보는 /proc 디렉토리에서 확인 가능

 

2) PID, PPID

  • PID (Process ID) : 프로세스에 할당되는 고유 식별 번호
  • PPID (Parent Process ID) : 해당 프로세스의 부모 프로세스 식별 번호

 

 

3) 프로세스 상태

  • Running (실행 중)
  • Waiting (대기 중)
  • Stopped (중단됨)
  • Zombie (좀비) : 자식 프로세스가 종료되었지만 부모 프로세스가 아직 그 종료 상태를 회수하지 않은 상태

 

 

4) 포그라운드, 백그라운드

  • 포그라운드 : 터미널을 점유하며 실행되는 프로세스
  • 백그라운드 : 터미널을 점유하지 않고 실행

 

# CMD & 

: CMD를 백그라운드로 실행

 

# bg 

: 실행 중인 포그라운드 프로세스를 Ctrl+Z로 일시 중지 후, 백그라운드 전환

 

# fg 

: 백그라운드 프로세스를 포그라운드로 다시 전환

 

5) 프로세스 확인 명령어

# jobs         

: 현재 쉘의 백그라운드 작업 목록 확인

 

# ps -ef 

: 전체 프로세스 상세 정보 출력 (UID, PID, PPID 등)

 

# ps aux

: BSD 스타일의 전체 프로세스 보기

 

5) 프로세스 종료(kill)

kill 명령어는 시그널(signal) 을 보내 프로세스를 제어한다.

번호 이름 설명
1 SIGHUP 프로세스 재시작
2 SIGINT 인터럽트 (Ctrl+C)
9 SIGKILL 강제 종료 (무조건 종료)
15 SIGTERM 정상 종료 요청 (기본값)

 

 

6) 세션 관리 도구 

  • screen:
    실행 시간이 오래 걸리는 작업을 할 때 사용하는 터미널 세션 관리 도구.
    쉘을 세션처럼 분리하여 백그라운드에서 실행 가능하게 하며, 연결이 끊겨도 작업이 계속 진행된다.
    메모리를 절약하면서도 안정적으로 작업을 이어갈 수 있다.
  • tmux:
    최근에는 screen보다 더 자주 쓰이는 세션 관리자로, 여러 터미널 창을 한 세션 안에서 분할하고 관리할 수 있다.
    복잡한 서버 작업이나 원격 환경에서 특히 유용하다.

tmux 사용

7) 데몬(Daemon)

  • 데몬은 백그라운드에서 동작하는 프로세스로, 사용자의 직접적인 입력 없이 지속적으로 특정 작업을 수행한다.
  • 커널에 의해 백그라운드 모드로 실행되므로 CPU를 계속 점유하진 않지만, 메모리는 상시 점유하고 있기 때문에 데몬이 많을수록 시스템 자원 사용량이 커진다.
  • 예: 웹 서버(httpd), 로그 감시(syslogd), 스케줄러(crond) 등

 

 

✍️ 하루 회고

오늘은 첫 주에 배운 리눅스 명령어의 연장선에 있는 내용이었다.
기존에 알고 있던 프로세스 관련 명령어들을 다시 복습하면서, 이해를 더 확실히 다질 수 있었다.

 

또한, gzip과 tar을 함께 사용하여 압축과 아카이빙을 동시에 수행하는 방식이 인상 깊었다.
리눅스 환경에서 이렇게 조합하면, 우리가 윈도우에서 흔히 보던 .zip 파일처럼 하나의 묶인 압축 파일을 만드는 방식을 구현할 수 있다는 점이 흥미로웠다.

728x90