728x90

전체 글 428

[리눅스] awk 열 추출 집계 조건 필터

부제: 공백·구분자로 나눈 열을 뽑고, 조건으로 거르고, 합계까지 내기awk '{print $1}' app.log # 1번째 필드 (공백 기준)awk -F, '{print $2}' users.csv # 콤마 구분, 2번째 필드awk '$3=="ERROR"{print $1,$2}' # 조건에 맞는 줄만$ awk '$3=="ERROR"{print $1, $2, $3}' app.log2026-07-08 10:00:03 ERROR2026-07-08 10:00:07 ERRORawk는 줄을 필드($1, $2…)로 나눠 다룬다. -F로 구분자를 바꾸고,조건{동작}으로 거르고, END{}로 집계한다. cut보다 조건·계산이 필요할 때 쓴다.이렇게도 쓴다로그 레벨별 건수를 집계한다(END 블록..

명령어/Linux 2026.07.09

[리눅스] sed 문자열 치환 파일 편집 줄 삭제

부제: 파일을 열지 않고 문자열을 바꾸거나 특정 줄만 뽑기sed 's/ERROR/ERR/' app.log # 줄마다 첫 매치만 치환sed 's/ERROR/ERR/g' app.log # 한 줄의 여러 개도 전부 (g)sed -n '2,5p' app.log # 2~5번째 줄만 출력$ sed -n '2,4p' app.log2026-07-08 10:00:02 WARN request id=2 path=/upload status=4132026-07-08 10:00:03 ERROR request id=3 path=/chat status=5002026-07-08 10:00:04 INFO request id=4 path=/chat status=200sed는 스트림 편집기다. s/찾을..

명령어/Linux 2026.07.09

[리눅스] tr 문자 치환 삭제 대소문자 변환

부제: 대소문자·줄바꿈·공백 같은 문자를 바꾸거나 지우기echo hello | tr 'a-z' 'A-Z' # 대문자로tr -d '\r' $ echo "hello world" | tr 'a-z' 'A-Z'HELLO WORLDtr은 문자 단위로 바꾸거나(set1→set2), 지우거나(-d), 연속 반복을하나로 줄인다(-s). 파일 인자가 아니라 표준입력을 받으므로 파이프·리다이렉션과 함께 쓴다.이렇게도 쓴다윈도우 줄바꿈(CRLF)을 유닉스(LF)로 바꾼다.tr -d '\r' unix.txt 콤마를 줄바꿈으로 바꿔 한 줄을 세로로 편다.echo 'a,b,c' | tr ',' '\n' 숫자만 남기고 나머지를 지운다(-c는 여집합).echo 'id=1234abc' | tr -cd '0-9' 소문자로 통일해 ..

명령어/Linux 2026.07.09

[리눅스] cut 열 필드 잘라내기 구분자

부제: CSV·로그에서 원하는 열(필드)만 뽑아내기cut -d, -f1 users.csv # 콤마 구분, 1번째 열cut -d, -f1,3 users.csv # 1,3번째 열cut -c1-10 app.log # 1~10번째 글자$ cut -d, -f1 users.csvnamekimsarileecut은 구분자(-d)로 나눈 필드(-f)나 글자 위치(-c)를 잘라낸다.로그·CSV에서 특정 열만 뽑아 볼 때 가장 간단하다.이렇게도 쓴다로그 앞부분의 날짜·시간만 자른다(글자 위치).cut -c1-19 app.log 계정 목록에서 사용자명만 뽑는다(: 구분).cut -d: -f1 /etc/passwd 헤더를 빼고 특정 열만 본다(tail 조합).tail -n +2 users.cs..

명령어/Linux 2026.07.09

[리눅스] uniq 중복 제거 개수 세기

부제: 정렬된 줄에서 중복을 없애거나, 몇 번 나왔는지 세기sort app.log | uniq # 중복 줄 제거sort app.log | uniq -c # 각 줄이 몇 번 나왔나$ grep -oE 'INFO|WARN|ERROR' app.log | sort | uniq -c 2 ERROR 3 INFO 2 WARNuniq는 연달아 같은 줄만 합친다. 그래서 앞에 sort로 같은 줄을 모아줘야제대로 동작한다. -c는 나온 횟수를 앞에 붙인다.이렇게도 쓴다로그 레벨별 건수를 센다(sort 조합).grep -oE 'INFO|WARN|ERROR' app.log | sort | uniq -c 가장 많이 나온 순으로 세운다(빈도 순위).sort access.log ..

명령어/Linux 2026.07.09

[리눅스] sort 정렬 숫자 열 기준 용량

부제: 줄을 정렬하고, 숫자·특정 열·용량 기준으로 세우기sort names.txt # 사전순sort -n nums.txt # 숫자순 (10이 2 뒤로)sort -rn nums.txt # 숫자 역순$ printf '10\n2\n1\n21\n' | sort -n121021sort는 줄을 정렬한다. 그냥 정렬하면 10이 2보다 앞에 오는 사전순이라,숫자는 -n을 붙여야 한다. -r은 역순, -k는 정렬 기준 열을 고른다.이렇게도 쓴다용량을 사람이 읽는 단위 그대로 정렬한다(du 조합, -h).du -sh ./* | sort -h 가장 많이 요청된 경로 순으로 센다(uniq 조합).grep -oE 'path=[^ ]+' app.log | sort | uniq -c | sort -rn C..

명령어/Linux 2026.07.09

[리눅스] wc 줄 단어 글자 개수 세기

부제: 줄·단어·바이트를 세고, 다른 명령과 엮어 개수를 확인하기wc -l app.log # 줄 수만wc app.log # 줄 단어 바이트$ wc -l app.log7 app.log$ wc app.log 7 49 431 app.logwc는 줄(-l)·단어(-w)·바이트(-c)를 센다.단독으로도 쓰지만, 파이프 끝에 붙여 "몇 개인지"를 셀 때 진가가 나온다.이렇게도 쓴다현재 디렉터리의 파일 개수를 센다.ls | wc -l 조건에 맞는 파일 개수를 센다(find 조합).find . -name "*.log" | wc -l 에러 로그가 몇 건인지 센다(grep 조합).grep ERROR app.log | wc -l 실행 중인 프로세스 수를 센다(헤더 1줄은 감안).ps aux | w..

명령어/Linux 2026.07.09

[리눅스] head 파일 앞부분 첫 줄 확인

부제: 큰 파일의 앞부분만 빠르게 들여다보기head -n 20 app.log # 앞 20줄head -c 100 app.log # 앞 100바이트$ head -n 2 app.log2026-07-08 10:00:01 INFO request id=1 path=/chat status=2002026-07-08 10:00:02 WARN request id=2 path=/upload status=413head는 파일 앞부분을 본다. 로그·CSV처럼 큰 파일을 통째로 열지 않고형식이나 첫 줄만 확인할 때 쓴다. tail과 정확히 반대다.이렇게도 쓴다CSV의 헤더 한 줄만 확인한다.head -n 1 users.csv 마지막 5줄을 빼고 앞부분만 본다(음수).head -n -5 app.log 최근 수정..

명령어/Linux 2026.07.09

[리눅스] tail 로그 실시간 확인 마지막 줄

부제: 파일의 끝을 보고, 새로 쌓이는 줄을 실시간으로 따라가기tail -n 20 app.log # 마지막 20줄tail -f app.log # 새로 붙는 줄을 실시간으로$ tail -n 3 app.log2026-07-08 10:00:05 WARN request id=5 path=/auth status=4012026-07-08 10:00:06 INFO request id=6 path=/chat status=2002026-07-08 10:00:07 ERROR request id=7 path=/upload status=500tail은 파일의 끝을 본다. 로그는 최근 내용이 뒤에 쌓이니 tail이 기본이다.-f는 파일에 새로 붙는 줄을 계속 따라가서, 서버 로그를 실시간으로 지켜볼 ..

명령어/Linux 2026.07.09

[백업] restic DB 백업 용량 최소화 복원 자동검증

부제: 6GB 백업을 월 0.9GB로 줄이고 매일 복원까지 확인한 이야기DB를 백업하려고 보니 덩치가 컸다.그런데 뜯어보니 대부분은 굳이 백업할 필요가 없는 데이터였다. 그 이야기다.문제이 서비스는 LangGraph로 대화 상태를 checkpoint에 저장한다.agent가 추론 턴을 한 번 돌 때마다 그 시점의 전체 상태를 스냅샷으로 남긴다. 과거 step으로 되돌아가는 time-travel을 위해서다.그러다 보니 한 스레드에서 대화가 100번 오가면 step 버전이 100개 쌓인다.checkpoint 테이블만 약 6GB였는데, 그중 98%가 이 step 이력이었다.재해 복구 관점에서 진짜 필요한 건 각 스레드의 최신 상태 하나뿐이다. 나머지 옛 step은 되감기 같은 고급 기능에나 쓰인다.결정 — 최신..

Infra 2026.07.08
728x90