lsof -p PID 및 lsof | grep PID


12

lsof 명령의 출력을 이해하지 못합니다.

내가 쓸 때

lsof -p PID

4 줄을 받고 쓸 때

lsof | grep PID

나는 수백 줄을 얻는다.

동일한 결과를 반환해서는 안됩니까?

답변 주셔서 감사합니다. 출력은 다음과 같습니다. 하위 프로세스 또는이 작업의 의미 인 것 같습니까?

lsof -p 29076
COMMAND   PID  USER   FD      TYPE DEVICE SIZE/OFF NODE NAME
java    29076  pr    cwd   unknown                      /proc/29076/cwd (readlink: Permission denied)
java    29076  pr    rtd   unknown                      /proc/29076/root (readlink: Permission denied)
java    29076  pr    txt   unknown                      /proc/29076/exe (readlink: Permission denied)
java    29076  pr   NOFD                                /proc/29076/fd (opendir: Permission denied)

lsof |grep 29076|head -20
java      29076        pr  cwd   unknown                          /proc/29076/cwd (readlink: Permission denied)
java      29076        pr  rtd   unknown                          /proc/29076/root (readlink: Permission denied)
java      29076        pr  txt   unknown                          /proc/29076/exe (readlink: Permission denied)
java      29076        pr NOFD                                    /proc/29076/fd (opendir: Permission denied)
java      29076   300  pr  cwd   unknown                          /proc/29076/task/300/cwd (readlink: Permission denied)
java      29076   300  pr  rtd   unknown                          /proc/29076/task/300/root (readlink: Permission denied)
java      29076   300  pr  txt   unknown                          /proc/29076/task/300/exe (readlink: Permission denied)
java      29076   300  pr NOFD                                    /proc/29076/task/300/fd (opendir: Permission denied)
java      29076   329  pr  cwd   unknown                          /proc/29076/task/329/cwd (readlink: Permission denied)
java      29076   329  pr  rtd   unknown                          /proc/29076/task/329/root (readlink: Permission denied)
java      29076   329  pr  txt   unknown                          /proc/29076/task/329/exe (readlink: Permission denied)
java      29076   329  pr NOFD                                    /proc/29076/task/329/fd (opendir: Permission denied)
java      29076   330  pr  cwd   unknown                          /proc/29076/task/330/cwd (readlink: Permission denied)
java      29076   330  pr  rtd   unknown                          /proc/29076/task/330/root (readlink: Permission denied)
java      29076   330  pr  txt   unknown                          /proc/29076/task/330/exe (readlink: Permission denied)
java      29076   330  pr NOFD                                    /proc/29076/task/330/fd (opendir: Permission denied)
java      29076   331  pr  cwd   unknown                          /proc/29076/task/331/cwd (readlink: Permission denied)
java      29076   331  pr  rtd   unknown                          /proc/29076/task/331/root (readlink: Permission denied)
java      29076   331  pr  txt   unknown                          /proc/29076/task/331/exe (readlink: Permission denied)
java      29076   331  pr NOFD                                    /proc/29076/task/331/fd (opendir: Permission denied)

답변:


7

실제 출력을 보지 않으면 정확히 무슨 일이 일어나고 있는지 말하기 어렵지만 lsof -p PID명령이 지정된 PID에 의해 열린 파일을 인쇄하는 동안 lsof | grep PID'PID'가있는 행을 인쇄 한다는 사실에 기인합니다. 라인 어딘가에 있습니다. 예를 들어 PID = 123을 검색하는 경우 grep옵션은 PID의 1231, 1232, 1233 등의 행과 전체 경로의 123 폴더에있는 파일도 인쇄합니다.

편집 : 특정 예에서 차이점은 lsof스레드가 연 파일을 무시 한다는 것 입니다. grep예제 에서 출력을 보면 세 번째 열은 'TID'또는 스레드 ID입니다. TID가없는 줄은 -p옵션 을 사용할 때보고 있던 것과 일치합니다 . TID가있는 줄 (즉, 다른 스레드에서 연 줄)이 추가 항목입니다.


실제로 TID는 맨 페이지에서 "작업 ID 번호"라고하며 반드시 스레드 ID는 아닙니다.
— Miljen Mikic

2

lsof-열린 파일을 나열하고 lsof에 대한 매뉴얼 페이지를 읽으십시오. #man lsof

lsof -p PID PID의 프로세스 ID와 관련된 열린 파일을 나열합니다.

옵션이 없으면 lsof는 모든 활성 프로세스에 속하는 모든 열린 파일을 나열합니다. 할 때 lsof | grep PID모든 활성 프로세스에 속하는 모든 열린 파일을 나열하고 PID 번호를 grep합니다. PID 번호는 PID 자체와 일치 할 수 있습니다. PID는 다른 PID의 일부로 나타나며 PID의 하위 프로세스 일 수도 있습니다. 곧.

따라서 사용하려면 lsof | grep PID전체 단어 일치와 같이 PID를 정확하게 일치시켜야 lsof | grep -w PID하지만 PID에 다른 자식 프로세스가 있으면 더 많은 행이 생성됩니다.


0

나는 내 시스템에서 이것을 시도했고 두 명령 모두 동일한 목록을 생성합니다. 프로세스 상태가 안정적인지 확인하기 위해 두 명령을 연속적으로 여러 번 시도하는 것이 좋습니다. 매뉴얼 페이지와 출력에 따르면 이것이 내가 가질 수있는 유일한 설명입니다.


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