낮은 수준의 명령과 높은 수준의 명령은 무엇을 의미하나요? [폐쇄]

낮은 수준의 명령과 높은 수준의 명령은 무엇을 의미하나요? [폐쇄]

useradd와 사이의 차이점은 낮은 수준의 명령 이지만 높은 수준의 명령 이라는 것입니다 . 마찬가지로 와 의 차이점 adduser은 낮은 수준의 명령이지만 높은 수준의 명령이라는 것입니다. 마찬가지로 다른 명령도 많이 있습니다( : high level, : low-level) 동일한 작업을 수행하지만, 하나는 낮은 수준의 명령이고 다른 하나는 높은 수준의 명령이라는 차이가 있습니다. 낮은 수준과 높은 수준은 정확히 무엇을 의미하나요? 추상적인?useraddaddusernetstatssssnetstataptapt-get

답변1

이것은 추상적인 수량과 관련된 모호한 개념입니다.

낮은 수준의 명령은 원시 데이터, 커널 인터페이스 등에 가장 가깝습니다. 좋은 점은 그것을 사용할 때 많은 통제력이 있다는 것입니다. 이는 문제가 발생하거나 이상한 작업을 수행해야 할 때 유용할 수 있습니다. 낮은 수준 명령의 출력은 일반적으로 스크립트를 사용하여 구문 분석하기가 더 쉽습니다(대부분의 경우 이것이 목적입니다). 단점은 자신이 무엇을 하고 있는지 알아야 한다는 것입니다. 이 도구에는 지식이 거의 포함되어 있지 않습니다. 모든 것이 머리 속에 있어야 합니다(또는 눈앞에 있는 메모...).

높은 수준의 명령은 많은 세부 정보를 추상화하여 지식을 도구에 적용합니다. 이렇게 하면 일반적으로 사용하기가 더 쉬워집니다. 단점은 때때로 당신이 이상한 것을 원하기 때문에 그들이 당신이 원하는 것을 할 수 없다는 것입니다. 아니면 뭔가 잘못되었을 때 파악하기 어려울 수 있습니다.작동하지 않습니다.

이것은 이분법이 아니라 연속체이다. 아마도 커널에서 원시 데이터를 덤프하는 가장 낮은 수준의 도구가 있지만 거의 항상 더 많은 추상화를 추가할 수 있습니다.

예를 들어 ps(Linux의 경우) /proc출력은 ps l $$간단하고 유능한 시스템 관리자가 쉽게 이해할 수 있습니다. 하지만 이것을 시도해 보세요 cat /proc/$$/stat:

$ cat /proc/$$/stat
11026 (bash) S 11024 11026 11026 34843 12425 4194304 3972 3748 0 2 12 2 3 1 20 0 1 0 69581565 25628672 2101 18446744073709551615 4194304 5242068 140731668323552 0 0 0 65536 3670020 1266777851 0 0 0 17 2 0 0 3 0 0 7341384 7388228 9216000 140731668326960 140731668326965 140731668326965 140731668328430 0

이 디렉토리에는 다른 많은 파일이 있으며 그 중 일부는 더 나은(그러나 여전히 낮은 수준의) 형식을 가지고 있습니다. 그러나 ps그 안에 많은 지식이 있다는 것은 분명합니다 . 이러한 필드(일부)가 무엇을 의미하는지, 어떻게 멋지게 표시하는지 등을 알고 있습니다. 이는 ps동일한 소스에서 데이터를 가져오는 것보다 더 높은 수준의 추상화이지만 여전히 더 높은 수준의 추상화. 하지만 때로는 가야 할 때도 있습니다. 거기에는 없는 많은 정보(등)이 있습니다.cat/proc/pid/top/proc/pid/ps

하지만 조금 모호합니다. 사람들마다 특정 명령이 연속체의 어디에 속하는지에 대해 서로 다른 의견을 가질 것입니다.

관련 정보