표준 구문과 BSD 구문의 차이점은 무엇입니까?


21

"BSD 구문"과 표준 구문을 받아들이는 많은 명령을 보았습니다. ps한 가지 예를 보려면 다음 명령을 사용 하십시오 .

To see every process on the system using standard syntax:
      ps -e
      ps -ef
      ps -eF
      ps -ely

To see every process on the system using BSD syntax:
      ps ax
      ps axu

이 두 경로의 차이점은 무엇입니까? 일반적으로 BSD 구문에서 어떤 요소를 기억해야합니까? 이 구문은 BSD에있는 명령에만 해당됩니까?


시간을 통해 구현 된 시스템을 통한 시스템 간의 역사적 차이를 조사하는 ps것은 인간이 알지 못하는 심연의 가장자리에서는 것입니다.

답변:


18

MS Office와 LibreOffice의 차이점은 무엇입니까? Firefox와 Chrome 사이?
그들은 거의 똑같은 일을하지만 목표가 약간 다른 사람들이 있습니다.

아마도 더 좋은 질문은 BSD, Linux, OSX 및 Unix 배포판그렇게 많은 명령을 공유 합니까? 이것은 POSIX 준수로 귀결됩니다 . POSIX는 기본적으로 유닉스 계열 운영 체제의 표준 세트입니다. 핵심 API, 명령 및 해당 명령의 작동 방식을 규정합니다.

의 경우 ps(A POSIX-규정 명령) 특정 인수가 요구된다. 여기에는 이러한 BSD가 포함됩니다. 모든 POSIX 파생 명령에는 자체 매뉴얼 페이지가 있지만 별도의 설치가 필요합니다. 의 경우 ps:

sudo apt-get install manpages-posix
man 1posix ps

그렇다면 왜 BSD가 우리를 사용하지 않는가 ps(또는 그 반대)?

  • 우리의 ps패키지 ( procps: 참조 dpkg -S $(which ps)) 다른 procps패키지 의 포크 입니다 . 둘 다 GPL 라이센스가 있습니다. 이것은 BSD의 라이센스와 호환되지 않으므로 여기에 포함시킬 수 없습니다. ( 우리 는 BSD를 포함시킬 수는 있지만 반드시 그럴 필요는 없습니다).
  • ps상당히 커널에 따라 다릅니다. 나는 기술적으로 호환되지 않는다고 생각 합니다.

다른 응용 프로그램은 어떻습니까?

POSIX 준수에 대한 대부분의 명령은 Ubuntu coreutils패키지 에서 제공 됩니다. 이 패키지는 GNU / Linux에서 GNU를 나타내며 GPL 라이센스도 있습니다. BSD는 POSIX를 준수하지만 반드시 GNU 대응 버전과 완전히 같을 필요는없는 자체 BSD 호환 라이센스 버전을 제공합니다.

psGNU가 아닌 유일한 POSIX 명령은 아닙니다 . 그것들이 많이 있습니다.

내가 이끌 때 왜 그래야합니까? 그들은 매우 오랜 시간 동안 다른 사람들에 의해 있습니다. 이것이 바로 짧은 대답입니다.


20

이 날짜의 다소 고통스러운 역사를 다시 유닉스 (위키 백과는이 단순화 된 다이어그램 이다, 멀리 에서 완성). 특히, AT & T가 개발 한 System V 와 버클리 캘리포니아 대학교에서 BSD가 개발되었다. 이것은 우분투 (2004)는 물론 리눅스 (1991)보다 오래 전인 1980 년대 초반의 일이었다. 이 두 가지 전류가 서로 다른 결정을 내리는 경우가 많으며, 오늘날에도 "System V"및 "BSD"변형 또는 기능에 대한 참조가 가끔 있습니다.

ps명령은 Unix의 첫 번째 릴리스 중 하나에서 시작되었습니다 (버전 1에는 없었습니다. 온라인에서 찾을 수있는 가장 빠른 맨 페이지 는 1974 년 버전 5 (p.94)입니다). 당시에는 ps몇 가지 옵션 만있었습니다. 예를 들어 ps a사용자 대신 모든 프로세스를 표시하고 ps x터미널이 연결되지 않은 프로세스를 표시합니다. 옵션은 다음과 -같이 시작하지 않습니다 . 당시 -옵션에 대한 사용 규칙 은 오늘날처럼 체계적이지 않았으며 파일 이름을 일반 인수로 사용하는 명령에 주로 사용되었습니다.

시간이 지남에 따라 다양한 유닉스 계열이 ps더 많은 옵션으로 확장 되었습니다. BSD 변형없이 선두로, 원래의 구문을 유지하기로 결정 -하고, a그리고 x오늘날 여전히 존재한다. System V 변형은 -옵션 에 대한 구문 규약을 채택하고 다른 문자를 사용했습니다 (예 : ps -e모든 프로세스 표시). Oracle (이전의 Sun) Solaris 는 System V 변형의 예입니다 (Solaris는 BSD로 작성된 응용 프로그램 ps을 위해 기본값이 아닌 디렉토리에 별도의 실행 파일을 제공합니다 PATH).

리눅스가 등장했을 때, 그것을 사용하는 사람들은 종종 하나의 유닉스 변형 또는 다른 유닉스 변형에 대한 사전 경험을 가지고 있었을 것입니다. 리눅스는 때때로 기술적 인 고려 사항이나 기능을 구현 한 사람의 경험과 취향에 따라 System V 방식, 때로는 BSD 방식, 때로는 자체 방식을 수행했습니다. 리눅스의 ps명령은 ps ae모든 프로세스를 표시하고 목록에 환경 변수를 포함시키는 것과 같은 BSD와 같은 옵션으로 시작되었습니다 . 시간이 지남에 따라 (1990 년대 후반, 나는 정확히 psV를 기억하지 못합니다), Linux의 저자는 System V에 익숙한 사람들을위한 옵션을 추가했습니다. 따라서 오늘날 Linux에서 모든 프로세스를 나열 ps ax하거나 ps -e나열 할 수 있으며 환경 변수도 있습니다 PS_PERSONALITY만들기 위해 ( )ps 오래된 스크립트와 습관을 가진 사람들을 위해 다양한 Unix old Unix 변형과 비슷하게 작동합니다.

여러 유닉스 변종을 사용한 사람들은 유닉스 변종을 다른 것으로 바꿀 때 프로그램과 습관을 수정해야한다는 것을 좋아하지 않았습니다. 따라서 기능의 하위 집합을 표준화하려는 노력이있었습니다. 이로 인해 POSIX 표준 ( IEEE 표준 )이 만들어졌으며 Ubuntu 는 그 표준을 따르고 있습니다. ps1992 년에 그 사령부를 포함한 첫 번째 판이 나왔습니다. 이 제품은 온라인으로 구할 수 없지만 1997 년판 입니다. 를 들어 ps명령, 같은 많은 다른 경우, POSIX는 일을하는 시스템 V 방식을 채택했다.

ps명령의 표준 구문은 시스템 V와 POSIX 모두와 호환입니다. 또한이 구문은 -기본적으로 옵션을 도입 하는 데 사용되므로 표준이라고 할 수 있습니다 . 일부 옵션은 두 구문 중 하나에 만 존재합니다. 다행스럽게도 같은 호출에서 혼합 될 수 있습니다.

일반적으로 "BSD"와 "System V"는 기술적 의미가 없습니다. "BSD"는 1980 년대에 BSD가 만든 선택과 그에 따라 "System V"는 AT & T와 그 파트너 (특히 Sun)가 선택한 선택입니다. "POSIX"는 IEEE 표준화위원회가 선택한 선택입니다.


2

당신이 말하는 '표준'구문은 실제로 1980 년대에 개발 된 GNU 운영 체제입니다. GNU 기반의 유틸리티와 철학은 Linux 커널과 결합되어 대부분의 최신 Linux 배포판 (Ubuntu 포함)을 개발했습니다.

BSD 운영 체제는 GNU와 무관하게 1970 년대 후반에 개발되었으며 나중에 FreeBSD 또는 OpenBSD와 같은 최신 버전으로 분기되었습니다.

GNU와 BSD는 모두 Unix에서 영감을 얻었으며 철학, 구문 등이 약간 다릅니다.


0

우분투의 coreutils는 GNU가 유지 관리하는 응용 프로그램의 모음입니다. BSD에는 자체 버전이 있습니다 (GNU는 BSD 라이센스와 호환되지 않습니다).

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