/ dev / null로 전송되는 내용을 모니터링합니까?


19

단지 재미를 위해 :
무엇을 쓰고 있는지 모니터 / 캡처 / 덤프하는 방법이 /dev/null있습니까?

데비안 또는 FreeBSD에서는 중요하다면 다른 OS 특정 솔루션도 환영합니다.


3
가능하지만 답변과 의견에 따르면 / very /는 좋지 않습니다.
Shadur

2
@Shadur : 나쁜 해결책이있을 수 있지만 아이디어가 흥미롭지 않거나 나쁜 아이디어는 아닙니다.
jlliagre

1
실제로, 많은 캡처 된 콘텐츠의 분석이 어떻게 나타날지 고려하고 있었기 때문에이 질문을 찾았 /dev/null습니다. 연구를 직접하고 싶지는 않지만 결과를 읽고 싶습니다. (“쓰레기를 통해 보는 것”에는 본질적으로 윤리적 문제가있을 가능성이 크지 만 개념은 흥미 롭습니다.)
beporter

답변:


12

/dev/null명명 된 파이프를 만드는 것이 가장 쉬운 방법 일 것입니다. 일부 프로그램은 (경고한다 sshd, 예를 들어) 비정상적으로 행동하거나 (또는 그들이 읽을 수는 특수 파일이 아닌 것을 발견 할 때 실행 실패 /dev/null가 반환 기대 EOF).

# Remove special file, create FIFO and read from it
rm /dev/null && mkfifo -m622 /dev/null && tail -f /dev/null
# Remove FIFO, recreate special file
rm /dev/null && mknod -m666 /dev/null c 1 3

이것은 모든 Linux 배포판과 모든 주요 BSD에서 작동합니다.


1
한 가지주의해야 할 점은 tail실패하면 파이프 버퍼가 가득 차서 많은 프로그램이 실패 할 수 있다는 것입니다.
Arcege

4
읽은 프로그램 /dev/null은 그렇지 않을 것입니다.
질 'SO-정지 존재 악마'

@Gilles-사실 내 메모입니다.
Chris Down

3
@Ali 예. No magicUNIX 철학의 기본 원칙입니다.
phihag 2012

4
Ahem /dev/null 마법이며, mknod /dev/null c 1 3그것을 불러내는 마법의 공식입니다. (그리고 당신은 그것을 위해 초능력이 필요합니다…)
Stéphane Gimenez

6

한 번은 / dev / null이 특별한 dev 파일 일 필요 가없는 어려운 방법을 발견했습니다 . 오래 전 직장에서 Ultrix 시스템의 / dev / null이 삭제되었으므로 다음에 프로그램이 / dev / null로 리디렉션 될 때 해당 프로그램의 출력으로 가득 찬 일반 파일이되었습니다. (나는 그것이 그런 파일이나 디렉토리가 아니라고 생각한다. 그것은 우리가 무슨 일이 일어나고 있는지 알아 내려고 할 때, 우리를 지옥에서 혼란스럽게 만든 것을 알고 cat /dev/null들었다 no such file or directory.)

그래서 내 제안은 명명 된 파이프로 교체 한 다음 파이프를 읽고 모니터링하는 프로그램을 파이프에 연결하는 것입니다.


4
또한 많은 프로그램 /dev/null은 읽기 ( cat /dev/null > foo) 에서 항상 0 바이트를 반환 합니다. 있는 것은 /dev/null이 기대를 깰 것, 내용 일반 파일 수.
Arcege

1
예, 그것이 우리가 그것을 발견 한 방법입니다. 프로그램은 입력이없고 예상치 못한 결과를 얻었으며 / dev /도 채워졌습니다.
Paul Tomblin

1

나는 / dev / null이 파일 디스크립터에 대한 심볼릭 링크가 될 수 있지만 작업을 읽거나 쓰도록 결정하는 코드 메커니즘을 추가 한 다음 읽은 경우 실제로는 / dev / actualnull에서 별도로 읽어야한다고 생각합니다. mknod를 작성하고 작성중인 경우 호출 프로그램을 기록하고 / dev / null을 사용하여 작성하는 프로그램을 분석하기 위해 로그 / 카운트를 시도하십시오. 그러나 성능면에서 많은 비용이 듭니다. 어쨌든 대부분의 쉘 프로그램이나 코드가 리디렉션을 사용하기 때문에 실용적이지 않은 것 같습니다. inotify를 사용하여 / dev / null 사용법을 모니터링 할 수 있습니까? 또는 1 : 3 장치를 처리하는 커널 코드를 다시 작성하고 다시 컴파일하고 다시 실험 할 수 있습니다.


2
여전히 몇 가지 문제가 있습니다. 커널에서가 아니라 다른 파일에서 읽을 수있게 /dev/null하고 데몬에서 제어하여 투명하게 수행하려고 시도했지만 sshd여전히 불평하고 시작하지 않았습니다.
Chris Down

데몬에서 제어하는 ​​/ dev / null의 hmm..interesting 나는 대부분의 프로그램이 / dev / null을 다른 파일로 사용하기를 원한다고 생각한다. / dev / null의 중요성과 의미는 시스템에 남겨둔다.
Nikhil Mulley

글쎄, sshd(적어도 데비안 스퀴즈 용으로 패키지 된) sshd: cannot create /dev/null가장 일반적인 구현이 아닌 경우 불평 합니다.
Chris Down
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.