
ps
과 에 나열된 프로세스의 차이점은 무엇입니까 ps -A
?
답변1
이 없으면 -A
ps는 현재 세션에 속한 프로세스만 인쇄합니다. "절대적으로 모든 것"이라고 생각하십시오. 관련 메모에서 -a
동일한 작업을 수행하지만 세션 소유자(사용자 이름)로 제한합니다.
답변2
GNU ps
명령은 심각한 다중인격 장애를 앓고 있습니다. 따라서 매뉴얼 페이지가 혼란스러운 것은 당연합니다. 아마도 BSD 매뉴얼을 살펴보는 것이 도움이 될 것입니다. 결국 이 질문은~이다태그됨유닉스.
BSD의 작동은 ps
다음 두 가지 사항을 염두에 두면 매우 간단합니다.
- 두 가지 기본 필터를 사용하여 표시할 프로세스를 선택합니다. 그 필터는~에기본적으로 명령줄 옵션으로 이를 설정합니다.끄다. 따라서 장식되지 않은 일반은
ps
두 가지를 모두 통해 필터링됩니다. - BSD 구문은 먼 길을 거슬러 올라갑니다. 현대 BSD에서는
getopt
접두사에 마이너스 기호가 붙은 옵션 규칙을 사용하고 있지만 여기에 관련된 옵션과 동작은 30년 전과 거의 동일합니다.
그 행동은 이렇습니다.
-a
(역사적으로a
) 옵션끄다모든 "선택기" 필터링.- 다양한 기타 명령줄 옵션은 선택기를 지정합니다.
-U
UID로 선택,-t
터미널 이름 제어로 선택,-p
프로세스 ID로 선택 등. 이들 모두는 에 의해 우회됩니다-a
. - 선택자가 명시적으로 제공되지 않으면기본 선택기을 호출한 사용자와 동일한 유효 UID로 실행 중인 프로세스만 표시하는 것입니다
ps
. 이 기본 선택기는 이 옵션이 꺼지는 기록 필터입니다.
- 다양한 기타 명령줄 옵션은 선택기를 지정합니다.
-x
(역사적으로x
) 옵션끄다ps
제어 터미널이 있는 프로세스만 표시 하도록 제한합니다 .
역사적으로 BSD에는 선택권이 ps
없었습니다 A
. 그러나 최신 BSD는 (나중에) 단일 UNIX 사양과의 호환성을 위해 -A
로도 사용할 수 있는 옵션을 구현합니다. 이는 두 가지를 모두 사용하는 것과 동일하며 두 가지 제한 사항을 모두 끄고 모든 프로세스가 포함된 제한 사항을 필터링되지 않은 상태로 둡니다.A
-A
-a
-x
OpenBSD와 NetBSD는 -A
옵션을 문서화하고 있으며 NetBSD의 경우 명시적으로 -a -x
. FreeBSD는 그렇지 않지만 소스 코드의 주석에는 의도적으로 문서화되지 않은 SUSv5 호환성 옵션으로 존재한다고 명시되어 있습니다.