본문 바로가기
C.W.K.
Stream
Lesson 04 of 10 · published

/dev/null: 블랙홀

~8 min · dev-null, silence

Level 0창 구경꾼
0 XP0/95 lessons0/14 achievements
0/100 XP to next level100 XP to go0% complete

비트를 버리는 통

/dev/null은 쓰기 데이터는 모두 버리고, 읽기 요청에는 즉시 EOF를 돌려주는 특수 기기야. Unix에서 필요 없는 출력을 숨길 때 쓰는 표준 목적지지.

자주 쓰는 패턴

  • cmd 2>/dev/null: 표준 오류만 버려.
  • cmd >/dev/null 2>&1: 표준 출력과 표준 오류를 모두 버려.
  • cmd </dev/null: 빈 표준 입력을 공급해. 입력을 기다리면 안 되는 백그라운드 작업에서 유용해.
  • : > file 또는 cat /dev/null > file: 파일 크기를 0바이트로 줄여.

반대 성격의 기기: /dev/zero

/dev/zero는 읽을 때마다 널 바이트를 계속 내보내. dd if=/dev/zero of=blob bs=1M count=10은 0으로 채운 10MB 파일을 만들어서 파일 시스템 시험, 스왑 파일, 시험 데이터에 쓸 수 있어. 관련 기기로 암호학적 난수를 제공하는 /dev/random과 빠르게 난수를 제공하는 /dev/urandom이 있어.

입력과 출력을 뒤바꾸지 마

cmd > /dev/null은 출력을 숨기고, cmd < /dev/null은 빈 입력을 줘. 방향을 바꾸어 쓰면 스크립트가 빈 입력을 받고도 조용해서 원인을 찾기 어려워져.

출력을 버려도 실패 상태는 남아

command >/dev/null은 화면에 보일 바이트만 버릴 뿐 명령의 종료 상태를 성공으로 바꾸지 않아. 조용히 실행하더라도 if command ...처럼 실패를 따로 처리해. 보이지 않는 출력과 중요하지 않은 작업은 같은 뜻이 아니야.

진단 정보는 필요한 만큼만 버려

>/dev/null 2>&1은 예약 작업을 조용하게 만들지만 복구에 필요한 단서도 함께 지워. 이름을 붙일 수 있는 예상 잡음만 좁게 버리고, 운영 작업의 출력은 크기를 제한한 로그나 모니터링 대상으로 보내.

/dev/null은 빈 파일이 아니야

빈 일반 파일에는 디렉터리 항목, 권한, 시각 정보, 저장 공간이 있어. 반면 /dev/null은 쓰기를 버리고 읽기에 즉시 EOF를 내는 기기 끝점이야. 두 대상을 같은 상태 저장소처럼 바꾸어 쓰면 안 돼.

Code

세 가지 묵음 처리·bash
# 표준 오류만 저장
find / -name foo 2>/dev/null
# 두 스트림을 모두 저장
noisy_cmd >/dev/null 2>&1
# bash 4 이상의 단축 문법
noisy_cmd &>/dev/null

External links

Exercise

find / -name passwd 2>/dev/null로 권한 오류를 숨겼을 때 일치 결과만 남는지 확인해. 시험 파일은 dd if=/dev/zero of=/tmp/10mb bs=1M count=10으로 만든 뒤 크기를 읽고, 정확한 경로를 다시 확인한 다음 : > /tmp/10mb로 내용을 비워.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.