728x90

전체 글 428

[리눅스] touch 빈 파일 생성 수정 시간

부제: 빈 파일을 만들거나, 파일의 시간 도장을 바꾸기touch newfile # 없으면 생성, 있으면 수정시간 갱신touch a.txt b.txt # 여러 개 한 번에touch -t 202601011200 file # 수정시간 지정$ touch report.txt && ls -l report.txt-rw-r--r-- 1 root root 0 Jul 9 10:00 report.txttouch는 빈 파일을 만들거나, 이미 있으면 수정 시간을 현재로 갱신한다.파일 자리를 미리 잡아 둘 때, 그리고 시간 기준으로 도는 작업을 테스트할 때 쓴다.이렇게도 쓴다여러 빈 파일을 한 번에 만든다(중괄호 확장 조합).touch file{1..5}.txt 다른 파일과 같은 시간으로..

명령어/Linux 2026.07.09

[리눅스] ln 심볼릭 링크 하드 링크 바로가기

부제: 파일에 다른 이름(바로가기)을 붙이기ln -s /path/to/target link # 심볼릭 링크 (바로가기)ln target hardlink # 하드 링크$ ln -s src/a.txt link.txt$ ls -l link.txtlrwxrwxrwx 1 root root 9 Jul 9 10:00 link.txt -> src/a.txtln -s는 심볼릭 링크로, 다른 경로를 가리키는 바로가기다(원본이 사라지면 깨진다).-s 없는 하드 링크는 같은 실체를 가리키는 또 하나의 이름이라 원본을 지워도 내용이 남는다.헷갈리면 심볼릭(-s)을 쓴다.이렇게도 쓴다이미 있는 링크를 새 대상으로 갈아끼운다(-sfn, 배포에서 current → 릴리즈).ln -sfn releases/v..

명령어/Linux 2026.07.09

[리눅스] chown 파일 소유자 그룹 변경

부제: 파일의 주인(사용자·그룹)을 바꾸기chown user file # 소유자 변경chown user:group file # 소유자 + 그룹chown -R user:group dir/ # 하위까지 통째로 (-R)$ ls -l app.log-rw-r--r-- 1 root root 9 Jul 9 10:00 app.log$ sudo chown www-data:www-data app.log$ ls -l app.log-rw-r--r-- 1 www-data www-data 9 Jul 9 10:00 app.logchown은 파일의 소유자와 그룹을 바꾼다. 소유권 변경은 보통 관리자 권한이 필요해 sudo를 붙인다.웹 서버가 못 읽던 파일을 서비스 계정 소유로 넘길 때 자주 쓴다...

명령어/Linux 2026.07.09

[리눅스] gzip 압축 해제 zcat 로그

부제: 파일 하나를 압축하고, 풀지 않고 내용만 보기gzip app.log # app.log → app.log.gz (원본 사라짐)gunzip app.log.gz # 다시 app.log 로zcat app.log.gz # 풀지 않고 내용만 보기$ gzip -k app.log && zcat app.log.gzlog linegzip은 파일 하나를 압축한다(여러 개 묶기는 tar).기본은 원본을 지우고 .gz만 남기니, 원본을 남기려면 -k를 붙인다.압축된 로그는 zcat·zgrep으로 풀지 않고 바로 볼 수 있다.이렇게도 쓴다원본을 남기고 압축한다(-k).gzip -k app.log 최대로 압축한다(-9, 느리지만 작게).gzip -9 big.log 압축된 로그에서 풀지 않고 바로 검색..

명령어/Linux 2026.07.09

[리눅스] tar 압축 묶기 풀기 tar.gz

부제: 여러 파일·디렉터리를 하나로 묶고 압축하기tar -czf backup.tar.gz proj/ # 묶고 gzip 압축 (c z f)tar -xzf backup.tar.gz # 풀기 (x)tar -tzf backup.tar.gz # 안에 뭐가 있나 목록 (t)$ tar -tzf proj.tar.gz | head -3proj/proj/readme.mdproj/big.bintar는 여러 파일을 하나로 묶는다(archive).-c 묶기, -x 풀기, -t 목록, -z gzip 압축, -f 파일명.순서대로 czf·xzf·tzf로 외워 두면 편하다.이렇게도 쓴다특정 폴더로 풀어낸다(-C).tar -xzf backup.tar.gz -C /opt/app 특정 파일·폴더를 빼고..

명령어/Linux 2026.07.09

[리눅스] xargs 표준입력 인자 변환 실행

부제: 파이프로 들어온 목록을 다음 명령의 인자로 넘기기find . -name "*.log" | xargs rm # 찾은 파일을 rm 인자로ls *.txt | xargs -n1 gzip # 하나씩 처리$ echo a b | xargs -n1 echo item:item: aitem: b어떤 명령은 표준입력이 아니라 인자로 값을 받는다(rm·cp 등).xargs는 파이프로 들어온 목록을 그 인자로 바꿔 준다.-n1은 하나씩, -I{}는 자리표시자, -0은 공백·개행이 든 파일명을 안전하게 다룬다.이렇게도 쓴다파일명에 공백·개행이 있어도 안전하게 넘긴다(find -print0 조합).find . -name "*.log" -print0 | xargs -0 rm 자리표시자로 각 항목을 원..

명령어/Linux 2026.07.09

[리눅스] find 파일 찾기 이름 크기 수정시간

부제: 조건으로 파일을 찾고, 찾은 것에 바로 명령을 실행하기find . -name "*.log" # 이름으로find . -type f -mtime +30 # 30일 넘게 안 바뀐 파일find . -size +100M # 100MB 넘는 파일$ find proj -name "*.log"proj/logs/app.logfind는 디렉터리를 훑어 조건에 맞는 파일을 찾는다.이름(-name)·종류(-type)·크기(-size)·수정 시간(-mtime)을 조건으로 걸고,찾은 것에 바로 명령을 실행할 수도 있다.이렇게도 쓴다찾은 파일마다 명령을 실행한다(-exec, {}가 파일명 자리).find . -name "*.txt" -exec wc -l {} \; 30일 넘게 안 바뀐 로그를..

명령어/Linux 2026.07.09

[관측성] 실패 거부 경로 로깅 중앙 예외 핸들러 Fluent Bit

부제: 성공만 로깅되던 서버에서 실패를 조사할 수 있게 만들기성공 경로는 촘촘히 로깅되는데, 실패·거부 경로에서는 서버가 조용했다.HEIF 이미지가 왜 안 올라갔는지, 채팅이 어디서 타임아웃 났는지, 403이 왜 났는지 —조사할 때마다 로그가 없어서 원인 특정에 막혔다.문제를 두 축으로 나눴다. 무엇을 로깅할지, 그리고 그걸 어디로 모아 얼마나 보존할지.성공만 남던 서버실패를 성공만큼 남기기로 했다.다만 원칙을 세웠다.판정에 쓴 입력값과 함께 남기되, 본문 내용은 넣지 않고(개인정보 0),4xx는 경고, 5xx는 에러 수준으로 남긴다.여기서 갈림길이 있었다.실패가 나는 자리마다 로그를 한 줄씩 심을 수도 있었다.그런데 그러면 자리마다 남기는 방식이 제각각이 되고, 새 에러 코드가 생기면 로그를 또 빠뜨린..

Infra 2026.07.09

[백엔드] 다국어 챗봇 타임존 단일 소스 LLM 컨텍스트 오염

부제: 사용자 시간대를 어디에 두고, 프롬프트엔 왜 안 넣었나다국어 챗봇이 제대로 답하려면 사용자별로 두 값이 있어야 한다.하나는 응답 언어(language), 하나는 현지 시각(timezone)이다.언어가 틀리면 엉뚱한 말로 답하고, 시간대가 어긋나면 "지금 몇 시"·"오늘"이 틀린다.문제는 이 두 값이 어디에 저장되고 어떻게 프롬프트에 들어가느냐였다.두 가지 결함정리하다 보니 시간대에서 결함이 두 개 보였다.첫째, 소스가 흩어져 있었다.채팅·프롬프트는 device.timezone을 읽고, 유휴 요약 잡은 settings.timezone을 읽었다.한쪽에만 값이 저장된 유저는 서브시스템마다 시간대가 달랐다.둘째, 시간대 문자열이 대화에 새어 들어갔다.프롬프트를 만들 때 device 정보를 통째로 블록에..

AI 2026.07.09

[리눅스] tee 화면 출력 파일 저장 동시에

부제: 파이프 중간에서 화면과 파일로 출력을 동시에 흘리기./deploy.sh | tee deploy.log # 화면 + 파일 동시에./job.sh | tee -a run.log # 파일에 이어쓰기 (-a)$ echo "line" | tee out.txtline$ cat out.txtlinetee는 표준입력을 화면(표준출력)과 파일에 동시에 보낸다.진행 상황을 보면서 로그도 남기고 싶을 때, 그리고 sudo로 권한 있는 파일에쓸 때(리다이렉션 >는 sudo 권한이 안 먹는다) 쓴다.이렇게도 쓴다배포 로그를 화면으로 보면서 파일에도 남긴다(에러까지, 2>&1)../deploy.sh 2>&1 | tee deploy.log 권한이 필요한 파일에 값을 쓴다(리다이렉션 대신 tee).echo ..

명령어/Linux 2026.07.09
728x90