이와 같은 명령에는 ps
많은 인수가 필요합니다. 특히 사용자에게 Unix와 BSD 스타일 플래그 중에서 선택할 수 있는 옵션을 제공하기 때문입니다. 내 말이 무슨 뜻인지 이해하시기 바랍니다.
그렇다면 이러한 옵션을 사용할 수 있는 경우 모든 Linux 시스템에서 최대 호환성을 위해 어떤 옵션을 선택해야 합니까? (예: 최대 호환성은 우선순위 중 하나입니다)
나는 Unix의 특징이 매우 분명하다는 것을 알고 있지만 어떤 이유로 BSD 명령에는 더 읽기 쉬운 정보(예: 열 헤더, CPU 열 등)가 포함되어 있습니다. 물론, 제가 틀렸다면 정정해 주시기 바랍니다만, 저는 그렇게 생각합니다.
답변1
거의 모든 Linux는 원래 핵심 Unix 명령의 GNU 버전을 사용합니다 ps
. 예를 들어 지적한 대로 BSD 및 AT&T 스타일 옵션을 지원합니다.
귀하가 명시한 목표는 단지 Linux 간의 호환성이기 때문에 대답은 "상관없다"라는 의미입니다.
임베디드 및 기타 매우 작은 Linux 변형은 자주 사용됩니다.바쁜 상자GNU 도구가 아니라 귀하의 경우 ps
BusyBox 버전이 너무 제거되어 AT&Tish라고 부를 수 없기 때문에 답변에 실제로 영향을 미치지 않습니다....도 아니다BSDish.
시간이 지나면서 다른 Unixy 시스템에서는 ps
호환성 차이가 줄어들었습니다. Mac OS X — 어디에BSD Unix에서 간접적으로 파생됨일반적으로 동작은 AT&Tish 및 BSDish 플래그를 허용하는 BSD Unix와 가장 유사합니다 ps
.
Solaris/OpenIndiana도 이러한 동작을 보이지만 BSD 및 AT&T와의 혼합 역사를 고려하면 이는 놀라운 일이 아닙니다.
FreeBSD, OpenBSD 및 NetBSD는 여전히 BSD 스타일만 고수합니다.
Unix 시스템이 오래될수록 한 가지 스타일의 플래그만 허용할 가능성이 높아집니다. 지금처럼 상자에서 차이점을 가릴 수 있습니다. 아직 GNU 도구를 설치하지 않았다면 설치하세요.
즉, 함정은 여전히 존재합니다. ps
예를 들어 Unixy 시스템은 사용 가능한 열, 운영 체제가 루트가 아닌 사용자에게 표시하려는 데이터의 양 등이 다르기 때문에 일반적으로 이식성이 필요한 스크립트에서 출력을 구문 분석해서는 안 됩니다.
(그런데 이것은 "BSD 대 Unix"가 아니라 "BSD 대 AT&T"라는 점에 유의하십시오. BSD Unix는 여전히 UNIX®입니다.BSD Unix는 직접적인 역사를 가지고 있습니다.원래 AT&T 지점이 있습니다. 이러한 공유는 양방향으로도 진행되었습니다. AT&T와 그 후임자들은 역사의 다양한 지점에서 BSD 혁신을 국내로 가져왔습니다. 시간이 지나면서 이러한 통합은 부분적으로 다음과 같은 이유로 이루어졌습니다.그룹 열기그리고 그 전임자들. )
답변2
의심스러운 경우 SysV 구문을 사용하세요. 이는 이미 많은 사람들의 공감대이자 사실상의 표준이기도 하다. BSD 관련 내용은 선사 시대로 거슬러 올라가거나 다른 지점의 일부입니다(SysV는 모든 다른 라인을 한 지붕 아래로 가져와 유닉스 전쟁을 끝내려는 노력이었습니다).