!["ps" 명령에 대한 Unix 플래그 형식과 BSD 플래그 형식의 의미에 대해 혼란스럽습니다.](https://linux55.com/image/109710/%22ps%22%20%EB%AA%85%EB%A0%B9%EC%97%90%20%EB%8C%80%ED%95%9C%20Unix%20%ED%94%8C%EB%9E%98%EA%B7%B8%20%ED%98%95%EC%8B%9D%EA%B3%BC%20BSD%20%ED%94%8C%EB%9E%98%EA%B7%B8%20%ED%98%95%EC%8B%9D%EC%9D%98%20%EC%9D%98%EB%AF%B8%EC%97%90%20%EB%8C%80%ED%95%B4%20%ED%98%BC%EB%9E%80%EC%8A%A4%EB%9F%BD%EC%8A%B5%EB%8B%88%EB%8B%A4..png)
ps
명령이 두 가지 형식의 플래그를 사용할 수 있다는 것을 읽었습니다 .
- Unix 형식의 경우 플래그 앞에 대시를 붙여야 합니다.
- BSD 형식에서는 플래그 앞에 대시를 붙여서는 안 됩니다.
이제 두 형식 모두에 동일한 플래그를 사용할 수 있습니까? 예를 들어 다음 명령은 동일한 것을 의미합니까?
ps -x
ps x
아니면 Unix 형식에는 자체 플래그 세트가 있고 BSD 형식에는 완전히 다른 플래그 세트가 있습니까?
답변1
이것맨페이지귀하의 질문에 대답하십시오 :
다양한 유형의 옵션을 자유롭게 혼합할 수 있지만 충돌이 발생할 수 있습니다. 많은 표준 및
ps
구현 과의 호환성으로 인해ps
동일한 기능을 수행하는 몇 가지 동의어 옵션이 있습니다.
ps -aux
와는 다르기 때문에 주의하시기 바랍니다ps aux
. POSIX 및 UNIX 표준에서는ps -aux
"x"라는 사용자가 소유한 모든 프로세스와-a
이 옵션이 선택하는 모든 프로세스가 인쇄되도록 요구합니다 . "x"라는 사용자가 존재하지 않으면 이 ps는 명령을 해석ps aux
하고 경고를 인쇄할 수 있습니다. 이 동작은 오래된 스크립트와 습관을 바꾸는 데 도움을 주기 위한 것입니다. 깨지기 쉽고 변경될 수 있으므로 의존해서는 안 됩니다.
표시는 다르지만 결합할 수 있습니다. 보통은 하나를 선택하게 되는데,예를 들어ps aux
또는 혼합하는 대신 모든 프로세스의 세부 정보를 확인하세요 ps -ef
.
유일한 x
플래그는 BSD 플래그이므로 ps x
동일한 ps -x
결과를 생성하지만 두 변형에 정의된 플래그에는 작동하지 않습니다.
이것은 모두 특정procps
그리고procps-ng
. 이는 첫 번째 단계에서 모든 인수가 완전히 구문 분석되지 않은 경우 호출되는 "두 번째 기회" 구문 분석 단계의 결과입니다. 이는 맨페이지에 문서화되어 있지 않지만 다음과 같습니다 ps x
.ps -x
HACKING
소스 코드의 파일:
성격이 BSD 구문 분석을 강제하지 않는 한, parser.c는 명령줄을 혼합된 BSD+SysV+Gnu 혼란으로 구문 분석하려고 시도합니다. 실패하면 BSD 해결이 시도됩니다. BSD 구문 분석에 실패한 경우뒤쪽에SysV 구문 분석이 시도되었으며 오류 메시지는 원래 SysV 구문 분석에서 나온 것입니다.