우분투 실전 명령어 | tee와 리다이렉션으로 로그 캡처
언제 쓰는가
명령 실행 결과를 화면으로 보면서 동시에 파일로 남겨야 할 때 가장 자주 씁니다.
배포 점검, 장애 대응, 설치 로그 수집처럼 나중에 증적이 필요한 작업에서 특히 유용합니다.
리다이렉션만 쓰면 화면 확인이 불편하고, tee를 같이 쓰면 실시간 확인과 기록을 한 번에 처리할 수 있습니다.
바로 쓰는 명령어
# 출력과 에러를 함께 로그 파일로 저장하면서 화면에도 표시
sudo apt update 2>&1 | tee /var/log/apt-update-$(date +%F).log
# 기존 로그를 덮어쓰지 않고 이어서 저장
sudo apt upgrade -y 2>&1 | tee -a /var/log/apt-update-$(date +%F).log
# 표준 출력만 파일로 보내기
ls -al /etc | tee /tmp/etc-list.txt
# 표준 에러만 별도 파일로 저장
find /root -maxdepth 1 -type f 1>/tmp/root-files.txt 2>/tmp/root-errors.txt
핵심 옵션/패턴
tee file: 화면 출력과 파일 저장을 동시에 수행합니다.tee -a file: 기존 파일 끝에 이어서 기록합니다. 장시간 작업 로그에 자주 씁니다.2>&1 | tee file: 표준 에러까지 한 파일에 모아 저장합니다.>/dev/null 2>&1: 출력이 필요 없는 배치 작업에서 불필요한 로그를 버릴 때 사용합니다.- 패턴 팁: 점검 로그는 날짜를 파일명에 붙여서
작업명-YYYY-MM-DD.log형태로 남기면 추적이 쉽습니다.
명령 출력 예시
$ sudo apt update 2>&1 | tee /tmp/apt-update.log
Hit:1 http://archive.ubuntu.com/ubuntu noble InRelease
Get:2 http://archive.ubuntu.com/ubuntu noble-updates InRelease [126 kB]
Fetched 126 kB in 1s (143 kB/s)
Reading package lists... Done
$ tail -n 3 /tmp/apt-update.log
Get:2 http://archive.ubuntu.com/ubuntu noble-updates InRelease [126 kB]
Fetched 126 kB in 1s (143 kB/s)
Reading package lists... Done
자주 하는 실수
tee만 쓰고 에러 스트림을 합치지 않아 실패 원인이 로그에 안 남는 경우가 많습니다. 설치나 배포 작업은2>&1을 함께 쓰는 편이 안전합니다.tee기본 동작이 덮어쓰기라는 점을 놓쳐 기존 로그를 지우는 실수가 자주 나옵니다. 누적 로그는tee -a를 써야 합니다.- 권한이 필요한 경로에 일반 사용자로
tee를 실행해서 저장 실패가 발생할 수 있습니다. 필요한 경우sudo tee패턴으로 처리해야 합니다.
검증 방법
# 로그 파일 생성 여부와 크기 확인
ls -lh /var/log/apt-update-$(date +%F).log
# 에러 문구가 기록됐는지 확인
grep -Ei "error|failed|warning" /var/log/apt-update-$(date +%F).log | head
# 마지막 20줄로 작업 종료 상태 확인
tail -n 20 /var/log/apt-update-$(date +%F).log
운영 팁
운영 서버 점검은 한 번에 너무 많은 명령을 넣기보다 단계별로 로그 파일을 나누는 게 좋습니다.
예를 들어 업데이트, 서비스 재시작, 헬스체크를 각각 다른 로그로 남기면 실패 지점을 바로 찾을 수 있습니다.
팀 작업이면 로그 파일명을 공통 규칙으로 맞춰 두면 인수인계 때 훨씬 빠르게 맥락을 공유할 수 있습니다.
출처
- Ubuntu Manpages
- GNU Coreutils Manual
- The Linux Command Line