읽다프로세스 주변의 괄호는 무엇을 의미하나요?내가 아는 한 실행 파일 이름이 인쇄됩니다.
리눅스메모매뉴얼 페이지:
프로세스 매개변수를 사용할 수 없는 경우도 있습니다. 이 경우 ps는 실행 파일 이름을 괄호 안에 인쇄합니다.
그러나 ps -Awwo pid,comm,args
나는 다음을 얻습니다.
PID COMMAND COMMAND
1 init init [2]
무슨 뜻이에요? "실행 파일 이름" init
은 또는 이어야 합니까 [2]
?
실행 파일은 물론인 것 같습니다 init
. 그게 무엇인가요 [2]
? 왜 인쇄되어 있습니까?
(또한 실행 파일 이름을 알고 있는데 왜 전체 경로를 표시할 수 없는지 정말 이해가 되지 않습니다.)
답변1
관련된 모든 사람이 기본 규칙을 따르는 경우 출력 열과 comm
열의 첫 번째 단어 모두 실행 프로그램의 이름을 표시합니다. 그러나 다양한 이유로 차이가 발생할 수 있습니다.args
ps
프로그램이 시작되면 args
해당 열에 표시된 명령 이름이 선택되어 argv[0]
프로그램을 실행하는 상위 프로그램에 의해 인수( )로 전달됩니다. 규칙에 따라 부모는 실행 파일의 기본 이름(즉, 디렉터리 부분이 없는 실행 파일의 경로)을 선택하지만 이는 필수는 아닙니다. 프로그램이 실행되면 문자열을 덮어쓸 수 있습니다.
Init(적어도 기존 Linux SysVinit)는 이를 재정의하여 argv[0]
현재 상태를 나타냅니다.런레벨.
Linux에서 이 comm
열은 처음에 실행 파일 기본 이름의 처음 16자로 커널에 의해 채워집니다. 프로세스에 따라 내용이 변경될 수 있음prctl
시스템 호출.
실행 파일의 이름이 바뀌거나 삭제되면 comm
열이나 args
열 모두 이를 반영하지 않습니다.
ps
작업 설명에 없는 실행 파일의 경로를 표시하지 않습니다. lsof
난 너에게 말할 수있어 lsof -a -p 1 -d txt
.
Linux에서는 다음 파일에서 이 정보를 볼 수 있습니다./proc/PID/
- (괄호 안의 두 번째 필드) 및
comm
(필드)의 프로세스 이름(필드)입니다./proc/1/stat
/proc/1/status
Name
- 전달된 실행 파일의 경로입니다
/proc/1/exe
. - (로 시작하는
argv[0]
) 의 매개변수/proc/1/cmdline
(널 바이트로 구분된 매개변수)