/proc/X/stat에 UID 정보가 없는 이유는 무엇입니까?

/proc/X/stat에 UID 정보가 없는 이유는 무엇입니까?

학계에서 이것은 어리석은 질문입니다. UID나는 필요한 경우 정보를 어디서 얻을 수 있는지 알고 있습니다. proc(5) 매뉴얼 페이지에 따르면:

       /proc/[number]/stat
              Status information about the process.  This is used by ps(1).  It is defined in /usr/src/linux/fs/proc/array.c.

       /proc/[number]/statm
              Provides information about memory status in pages.  The columns are:

       /proc/[number]/status
              Provides much of the information in /proc/[number]/stat and /proc/[number]/statm in a format that’s easier for humans to parse.

stat프로세스 등에 대한 정보가 포함되어 있지 않다는 점이 흥미롭지만 포함되어 있습니다 UID. 사람들이 "사람이 읽을 수 있는" 파일을 대신 사용해야 한다는 것은 약간 이상합니다. 일시적인 이유를 아시는 분 계신가요?EUIDstatus

답변1

데이터로 작업할 때 대부분의 경우 핵심은 특정 작업 집합과 관련된 데이터만 유지하는 것입니다. 노출된 데이터의 대부분은 /proc단일 목적, 즉 가시성이 필요한 도구 등을 위한 것입니다.

이러한 의견을 바탕으로 저는 세 가지를 가정합니다 /proc/[number]/stat.

  1. 여기에 표시된 데이터는 의 기능 및 데이터 개체와 관련됩니다 /usr/src/linux/fs/proc/array.c.
  2. 이 데이터도 관련이 있습니다 ps.
  3. 여기 데이터를 보면 여기에는 사용자별 데이터가 없다는 것을 알 수 있습니다. 그것은 모두 프로세스 지향적입니다.

노트:#2의 경우. 와 관련된 프로세스 데이터입니다 ps. 사용자 소유 프로세스는 커널의 다른 위치에서 다른 데이터 구조로 유지됩니다.

반면에 /proc/[number]/status주석은 데이터의 의도, 즉 인간이 데이터를 읽는 목적을 거의 알려줄 수 있습니다. 따라서 도구 관점에서 볼 때 커널의 이 노드는 사용자가 사용할 수 있도록 다른 소스의 데이터를 한 곳으로 수집하는 것 외에는 다른 목적이 없을 가능성이 높습니다.

추가 증거

더 많은 증거가 필요하면 내가 얼마 전에 답변한 질문을 확인하세요./proc/meminfo MemTotal =?. 이 질문 은 그것을 다루고 /proc/meminfo있으며 여기에 비슷한 질문이 있습니다. 일부 데이터는 커널 시작 중에 로그 출력 아래에 노출됩니다 dmesg. 그러나 이 데이터는 메모리와 관련이 있고 관련성이 있다고 생각되지만 /proc/meminfo다음과 같은 경우에는 유용하지 않기 때문에 존재하지 않습니다.

  1. 사용될 도구의 대상 고객/proc/meminfo
  2. 사용 중인 데이터의 내부 커널 기능, 방법 및 데이터 구조와는 아무런 관련이 없습니다 /proc/meminfo.

인용하다

관련 정보