lsof가 tracefs에 대해 왜 불평합니까?


11

실행할 때마다 lsofTraceFS에 대한 경고가 표시됩니다.

$ lsof any-file
lsof: WARNING: can't stat() tracefs file system /sys/kernel/debug/tracing
      Output information may be incomplete.

$ mount | grep trace
tracefs on /sys/kernel/debug/tracing type tracefs (rw,relatime)

(이것은 Ubuntu 15.10에 있으며 완전히 업데이트되었습니다)

정상 작동 중에 TraceFS가 마운트되는 것이 정상입니까?
그렇다면 어떻게 lsof건너 뛰 라고 말할 수 있습니까?

답변:


12

귀하의 질문에 대한 답변은 파일 권한에 있습니다.

시험:

$ ls -l /sys/kernel/debug/tracing
ls: cannot access '/sys/kernel/debug/tracing': Permission denied
$ ls -l /sys/kernel
total 0
...
drwx------  31 root root    0 2016-06-15 11:06:47 debug
...

따라서 일반 사용자는 액세스 /sys/kernel/debug/tracing할 수 없으며 lsof액세스를 피할 수있는 방법이 없습니다 .

우리는 이것이 버그인지 아닌지에 대해 토론 할 수 있지만, 당신의 질문에 대한 대답은 이것으로 귀결됩니다.


"버그"는 무엇을 의미합니까? "lsof"는 "sudo"또는 "root"로 실행해야합니다.
Rinzwind 2016 년

1
lsof는 루트로 실행할 필요가 없습니다. 보안에 대해 논의 할 수 있지만 (man lsof 참조) 수퍼 유저 보조금으로 만 실행할 필요는 없습니다. / usr / sbin이 아닌 / usr / bin에 있습니다.
EnzoR 2016 년

"피할 수있는 방법은 없습니다"는 완벽하게 수용 가능한 답변입니다. 게다가 우분투 16.04부터 TraceFS가 더 이상 기본적으로 마운트되지 않는 것으로 보입니다. lsof일반 사용자로 실행할 때 경고 가 사라졌습니다.
Zilk

3
16.04에 있는데 사라지지 않았습니다. 여전히 문제입니다.
TenLeftFingers

@TenLeftFingers 최신 Kubuntu 16.04에서 작동합니다!
EnzoR

3

나는 같은 문제가 있었고이 대답 은 문제를 조금 더 잘 이해하는 데 도움 이 되었습니다.

성가신 경고를 제거하는 한 가지 방법은 debugfs를 마운트 해제하는 것입니다.

mount | grep debugfs 
none on /sys/kernel/debug type debugfs (rw,_netdev)

sudo umount $(mount | grep debugfs | awk '{print $3}')

지금 실행하면 lsof경고가 없습니다.


2
이것이 바로 내가 찾은 이유입니다. 오류가 나타나는지 별로 신경 쓰지 않습니다 . 나는 정말로 그것이 사라지기를 원합니다. 감사합니다 damko!
cjac

umount: /sys/kernel/debug: target is busy.
msangel

2

문제는 debugfs 디렉토리에 액세스 할 수있는 권한이 없다는 것입니다. tracefs 디렉토리는 사람들이 추적 디렉토리를 / sys / kernel / tracing에 직접 마운트하고 debugfs를 활성화 할 필요가 없도록하기 위해 만들어졌습니다. 그러나 이전 버전과의 호환성을 위해 debugfs 디렉토리를 마운트 할 때 tracefs의 "추적"디렉토리에 tracefs가 자동으로 마운트됩니다.

이제 lsof를 수행하면 / proc / filesystems 파일과 / proc / mounts를 봅니다. tracefs가 / sys / kernel / debug / tracing에 마운트되어 있음을 알 수 있습니다. 불행하게도, / sys / kernel / debug는 루트가 아닌 사용자가 그 내부를 볼 수 없도록하기 때문에 / sys / kernel / debug 내에서 "추적"디렉토리를 통계하려고 할 때 오류 메시지가 표시됩니다. debugfs 디렉토리를 마운트 해제하면 경고가 사라집니다.


0

경고는 stderr에 기록됩니다. 항상 이것을 / dev / null로 리디렉션 할 수 있습니다.

lsof <any-file> 2>/dev/null

건배,

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.