logo

Linux에서 /Dev/Null이란 무엇입니까?

쉘 프로그래밍을 배워왔다면 이미 /dev/null과 같은 것을 접했을 것입니다. 이번 글에서는 그것이 무엇인지, 어떻게 사용되는지 알아보겠습니다. /dev가 무엇인지 이해하는 것부터 시작하겠습니다.

/dev란 무엇인가요?

Linux 파일 시스템에서는 모든 것이 파일 또는 디렉터리입니다. 장치도 파일로 액세스됩니다. 하드 드라이브 파티션, 펜 드라이브, 스피커 등 이들 모두에 액세스할 수 있는 파일이 있습니다. 이제 장치가 파일로 액세스되는 방법을 이해하려면 다음과 같이 생각하십시오. 파일로 무엇을 합니까? 우리는 그것으로부터 데이터를 읽고 거기에 데이터를 씁니다. 스피커와 같은 장치는 데이터를 입력하여 소리를 생성할 수 있고, 하드 디스크는 데이터를 읽고 쓰는 데 사용할 수 있으며, 프린터는 입력을 받아 파일을 인쇄하는 등의 작업을 수행합니다. 파일과 장치는 이런 방식으로 유사합니다.



/dev는 Linux 시스템의 모든 물리적 장치와 가상 장치를 저장하는 디렉터리입니다. 물리적 장치는 이해하기 쉽고 펜 드라이브, 스피커, 프린터 등과 같은 유형의 장치입니다. Linux 시스템에는 장치 역할을 하지만 물리적 장치를 나타내지 않는 가상 장치도 있습니다.

/dev/null이 무엇인가요?

이는 특별한 속성을 갖는 가상 장치입니다. /dev/null에 기록된 모든 데이터는 사라지거나 사라집니다. 이러한 특성 때문에 비트버킷(Bitbucket) 또는 블랙홀(Blackhole)이라고도 불린다. 데모를 보도록 하겠습니다.

출력을 /dev/null로 리디렉션

이 데모에서는 일부 데이터를 추가했지만 해당 데이터가 저장되지 않은 것을 볼 수 있습니다. /dev/null의 이러한 특정 특성에는 몇 가지 사용 사례가 있습니다. 그들을 보자.



/dev/null 사용법

기록된 모든 내용을 삭제하므로 파일을 /dev/null로 이동하여 삭제할 수 있습니다. 그러나 이는 널리 사용되는 사용 사례는 아닙니다. 주로 출력에서 ​​표준 출력과 표준 오류를 삭제하는 데 사용됩니다.

표준 출력과 표준 오류란 무엇입니까?

Linux 명령의 출력에는 표준 출력(stdout)과 표준 오류(stderr0)라는 두 가지 데이터 스트림이 포함되어 있습니다. 표준 출력은 명령에 오류가 없는 경우 일반 출력이고, 표준 오류는 명령에 의해 생성된 오류입니다. 출력에는 표준 출력과 표준 입력이 모두 포함될 수 있습니다. stdout 및 stderr의 예:

다음 쉘 스크립트를 실행해 보겠습니다.



중위순회
# /bin/sh ls apt update>

첫 번째 명령은 성공적으로 실행되었지만 두 번째 명령에서는 오류가 발생했습니다. stdout과 stderr은 두 개의 별도 데이터 스트림이므로 별도로 처리할 수 있습니다.

stderr 및 stdout에 액세스하는 방법은 무엇입니까?

Stdout과 stderr은 데이터 스트림이며 둘 다 Linux에서 파일로 처리됩니다. 이에 대해 작업을 수행하려면 파일 스트림을 고유하게 식별하는 파일 설명자를 사용합니다. stdout의 파일 설명자는 1이고 stderr의 파일 설명자는 2입니다.

개별적으로 액세스하려면 이전 예제에서 사용된 동일한 스크립트 파일에서 수행되는 다음 명령을 살펴보겠습니다.

./script.sh 1>stdout.txt>

여기서는 출력에 표준 오류가 포함되어 있지만 표준 출력이 표시되지 않았음을 알 수 있습니다. 이는 stdout 스트림이 stdout.txt 파일로 전송되었기 때문인데, stdout.txt 파일에 표준 출력이 포함되어 있음을 알 수 있습니다.

쉘 스크립트를 작성하는 동안 출력에서 ​​표준 오류를 삭제하고 싶을 수도 있습니다. 출력에서 억제하려는 스트림이 무엇이든 해당 데이터 스트림은 /dev/null에 기록될 수 있습니다. 위의 예처럼 해당 데이터를 다른 파일에 쓸 수 있지만 해당 데이터에 쓸모가 없다면 왜 메모리를 낭비하고 싶습니까? 완전히 삭제하는 것이 좋습니다. 다음 예를 보자

./script.sh 2>/dev/널>

그리고 마찬가지로 출력에서 ​​stderr을 제거했습니다. 전체 출력을 삭제하려면 다음 명령을 사용할 수 있습니다.

자바 프로그래밍 언어 튜토리얼
command>/dev/null 2>&1>

&> 명령은 왼쪽에 언급된 파일 설명자의 출력(위 명령에서 2의 출력)을 오른쪽에 언급된 파일 설명자의 스트림으로 리디렉션합니다. 따라서 stderr(2)의 출력은 stdout(1)으로 리디렉션되고, 이는 다시 /dev/null에 기록되어 파괴됩니다.

안전한 파일 삭제

'/dev/null'은 안전한 파일 삭제에서 유틸리티를 찾습니다. '/dev/null'을 파일로 리디렉션하면 해당 내용을 null 바이트로 효과적으로 덮어쓸 수 있으므로 의미 있는 데이터를 복구하기가 어려워집니다.

예를 들어:

cat /dev/null>민감한 파일>

이 명령은 'sensitive_file'의 내용을 null 바이트로 대체하여 안전한 삭제를 보장합니다.

로그 파일 정리

로그 파일은 시간이 지남에 따라 상당한 데이터를 축적할 수 있습니다. 실행 중인 서비스를 중단하지 않고 로그 파일을 지우려면 해당 콘텐츠를 '/dev/null'로 리디렉션할 수 있습니다.

CSS 이미지 크기 변경

예를 들어:

cat /dev/null>/var/log/syslog>

이 명령은 내용을 '/dev/null'로 리디렉션하여 'syslog' 파일을 비우고 파일 자체를 삭제하지 않고 로그를 효과적으로 정리합니다.

팁과 요령:

  • 표준 출력을 '/dev/null'로 리디렉션: 'command> /dev/null'
  • 표준 오류를 '/dev/null'로 리디렉션: 'command 2> /dev/null'
  • 출력과 오류를 모두 '/dev/null'로 리디렉션: 'command>/dev/null 2>&1'

결론

이 기사에서 우리는 Linux의 '/dev/null'이 데이터가 기록될 때 사라지는 가상 블랙홀에 대해 논의했습니다. 일반적으로 출력과 오류를 삭제하여 명령 실행을 더 깔끔하게 만드는 데 사용됩니다. 안전한 파일 삭제 및 로그 파일 정리에도 사용할 수 있습니다. 해당 기능을 이해하면 Linux에서 효율적인 명령줄 작업이 가능합니다.