리눅스 유치원 파트2 시스템 명령어 완전정복 미리보기 -리눅스 역할
안녕하세요
리눅스 유치원 파트2 시스템 명령어 완전정복 소개를 드리도록 하겠습니다
저는 리얼리눅스 강사 송태웅입니다.
제 소개를 간단하게 드려보면현업에서 한 10년 정도 개발 활동을 했었고요
임베디드 시스템이나 서버 운영 관련되서 진행하고 있고현재에도 에트리 연구소와 함께 리눅스 관련된 연구들을 함께 진행을 하고 있습니다 뿐만 아니라 다양한 교육들도 진행을 하고 있는데 실제로 리눅스 커널 오픈 소스에서 한 4년 정도
오픈소스개발 활동을 하면서 추적, 분석 뭐 이런 것들을 많이 진행하다 보니까 이런 것들을 교육에 접목을 시켜서 삼성전자 LG전자 현대모비스 다양한 곳에 직장인 리눅스 커널 교육도 많이 활동을 진행을 하고 있습니다
그밖에도 다양한 강연 활동들을 진행을 했었고요
지금 진행을 하는 거는 엄청 어려운 레벨은 아니고요 기본기에 해당되는 내용들을 리눅스 유치원이라고 하는 라이브 수업으로 파트2로 한번 진행을 해보려고 합니다
파트2에서는 집중하려고 하는것이 시스템에 대한 부분이에요 어떤 프로세스, 메모리, 파일, 네트워크 가장 중요한 4가지의 서브 시스템이죠 이런 거를 명확하게 이해하고 내가 명령어로 분석하고 추적하고 이해할 수 있고 증명할 수 있게끔 하는 것이 가장 큰 목표라고 보시면 좋을 것 같습니다
대상은 입문자 대상이긴 맞아요 하지만 만약에 리눅스를 단 한 번도 쓴 적이 없다라고 한다면 파트 1을 먼저 수강하시는 것을 추천드리고요 그리고 파트1과 파트2를 동시에 수강하셔도 좋고 만약에 파트1을 하고 나서 다음 달에 진행되는 2월, 3월에 라이브를 파트2로 이어서 들으셔도 상관은 없습니다
일단은 이제 대상은 어느 정도 기초 명령어 정도는 다를 수는 있지만 시스템을 너무 모르고 이렇게 검정색 터미널 쉘을 통해서 어느 정도 명령어는 붙여넣겠지만 프로세스가 어떻게 되고 메모리가 어떻게 되고 모르니까 문제 해결 능력도 굉장히 부족하고 그냥 모르는 상태로 항상 다 알아야 됩니다
이런 분들의 내공을 키우는게 굉장히 큰 목표입니다.
무엇보다도 우리가 취준생 분들 또 이미 취업했지만 현직자분들 입장에서도 기술 면접을 볼 때 리눅스 관련된 기술 면접에 기본 내공이라든지 혹은 실제로 취업을 하신 분들은 리눅스 관련되서 다룰 때 기본적인 소양이 있어야지 또 문제 해결 속도라든지 문제 해결 수행능력이 굉장히 좋아질 수 있기 때문에 그런 분들을 위한 내용이라고 보시면 좋을 것 같습니다.
한 달 동안 진행이 되고요 4주 동안 하면서 일주일에 두 번 수업하고요 저녁 7시 반부터 9시까지 진행이 됩니다
만약에 수업을 놓치시면 영상 녹화된 거를 제공해 드리고요 그리고 6개월동안 내용들을 다 보실 수가 있습니다
그래서 반복해서 수강을 하실 수도 있다라는 점 말씀을 드립니다
커리큘럼 내용들을 한번 살펴보도록 할게요
1주차부터 4주차까지 해서 시스템 구조 그리고 프로세스 메모리 파일 그리고 네트워크 이렇게 해서 주요 4가지 서브 시스템 기준으로 보고 무엇보다 굉장히 중요한 것은 이론 중심적으로 가기보다는 실습 중심적으로 그리고 그냥 무지성으로 명령어 입력하고 그냥 이렇다 외우는게 아니라 왜? 그런지 명확하게 이해하고 또 남한테 설명할 수 있는 수준으로 실력을 끌어올리고 그리고 설명하면서도 이 명령어로 증명할 수 있고 코드로 증명할 수 있는 수준까지 끌어오는게 가장 큰 목표입니다 그래서 기술 면접 같은 데서도 자신있게 설명할 수 있는 수준까지 올라가는게 굉장히 중요한 목표라고 보시면 좋을 것 같아요
리눅스 역할이라고 하는게 무엇인지를 한번 살펴보도록 할게요
리눅스 라는게 리눅스 커널을 뜻하게 되고요커널이 OS를 뜻하게 됩니다
리눅스가 왜 필요할까 배경이 굉장히 중요한데요 카카오톡, 크롬 브라우저,vi 에디터 다양한 어떤 유저 프로그램들이 있는데 이 프로그램들이 결국에 하드웨어 기반으로 동작이 됩니다
노트북, 데스크탑, 서버, 모바일 이런 것들이 있는데 하드웨어 저항은 CPU, 메모리, 디스크, 네트워크 말씀은 드렸던 4가지의 서브시스템들이 하드웨어 CPU 메모리 디스크 네트워크를 기준으로 해서 구동된다고 보시면 됩니다.
4가지 하드웨어 자원을 가장 다루는 것이 리눅스라고 보시면 좋을 것 같아요 만약에 이런것을 다루는 것들을 리눅스라는 걸 통해서 하지 않는다면 각각의 프로그램들이 디스크를 다루고 각각의 프로그램들이 네트워크를 다루기 때문에 굉장히 코드가 중복되고 복잡해질 수가 있죠 왜냐하면 디스크도 모델도 많고 버전도 많기 때문에 그런 것들을 유저 프로그램 개발자들이 다 커버한다는게 굉장히 어렵고요
따라서 리눅스라고 하는 C언어 프로그램을 개발해서 이런 하드웨어 자원들을 통합적으로 관리해 주기 때문에 유저 개발자 유저 어플리케이션들이 편안하게 돌 수 있는 환경을 제공해 준다라고 보시면 좋을 것 같아요 그래서 리눅스는 4가지 하드웨어 자원들을 어쨌든 관리하는게 굉장히 중요한 하드웨어 자원관리 역할 첫 번째고요 두 번째는 어플리케이션 관리하는것이 큰 목표겠죠 이런 부분들의 depth부터 시작을 해서 조금 더 깊게 조금 더 깊게 들어가 볼 거예요
그러니까 어떻게 CPU 프로세스를 다루는 지 메모리를 다루는 것은 가상 메모리를 쓴다는데 그걸 어떻게 하고 있고 그걸 어떻게 확인할 수 있고 분석할 수 있고 그리고 디스크 파일 IO는라는 기본적으로 어떻게 동작이 되고 어떻게 분석하고 추적할 수 있는지 또 문제 해결할 때 어떤 포인트로 접근할 수 있는지 이런 것들을 하나씩 하나씩 탑다운 방식으로 상식적이고 기초적인 개념부터 시작해서 하나씩 하나씩 분석해서 들어갈 예정입니다
top 명령어를 한번 살펴보도록 할게요 top 명령어는 시스템을 이해하는데 있어서 아주 기본적이고 중요한 명령어입니다
하지만 안에 있는 요소들을 다 이해하고 분석한다는게 좀 어려운데요 실제로 top를 한번 입력해 보도록 할게요
뭔가 수치들이 많이 나오고 있습니다 여기 안에 있는 요소들을 만약에 정확하게 다 설명할 수 있다면 리눅스에 대한 실력이 기본기가 굉장히 단단하다고 볼 수가 있거든요 이 중에서 메모리 요소를 한번 보도록 할게요
메모리에 있는 요소들을 한번 살펴볼 때 제가 설명드리지 않아도 여러분들이 이해할 수 있는 부분이 있습니다
그게 뭐냐면 total, free, used 그러니까 총 공간 우리가 지금 사용할 수 있는 메모리 공간이 16G, 8G 이런 것들을 뜻하고요 used 사용 중인 공간이죠 free는 사용하지 않고 있는 공간입니다
여기서 이제 이해하기 좀 어려운 것이 buff/cache, available, swap 한번 설명을 좀 드려보도록 할게요
일단은 버퍼켓 같은 경우에는 디스크 데이터 디스크 블록 파일에 있는 내용을 미리 읽어와서 메모리에다가 둔 그 메모리 내용입니다 사실상 buff/cache used에 해당되는 거예요 사용 중인 거는 맞아요
그런데 다만 스택(stack)이라든지 힙(heap) 처럼 혹은 배열이라든지 이런 것처럼 순수하게 메모리를 쓰는 영역을 뜻하는게 아니라 디스크에 있는 내용을 미리 읽어다가 파일 내용을 미리 읽어다가 메모리에 올려놨을 때 buff 혹은 cache라고 말하게 됩니다
이 두 개가 합쳐져야지 결국에 총 used라고 볼 수 있겠고요 실제로 우리가 명령어로 어느 정도 증명해 볼 수가 있어요
이게 무슨 말이냐면 free라는 명령으로 입력했을 때 지금이 tatal 수치 있죠 이거를 더해서 만들어 낼 수가 있거든요
예를 들어서 used, free를 더했어요 그렇다고 total이 안 나옵니다 그런데 이 used, 이것도(buff/cache) used 인데
이 used 가 그냥 used 가 아니라 파일을 미리읽어와서 메모리를 자치하는 공간(buff/cache) 이 used 는 뭐에요 ? 이 used(Anonymous Pages) 는 순수하게 배열이나 전역변수 아니면 malloc, new 와같이 메모리 할당했을때 실제로 공간 차지하는 그런 것들이 used에 해당되는 것이죠 그래서 이 두 개를 합해야지 실제로 사용하는 총 공간은 나와요
이렇게 세 가지를 더했을 때 used + free + buff/cache 를 더했을 때 total이 나온다는 사실도 알 수가 있는 거죠
이런 식으로 우리가 이론으로만 외울게 아니라 명령어로 증명할 수가 있어야 되요
그 다음에 이제 두 가지가 남았는데요 available, swap입니다
available은 사용할 수 있는 공간을 뜻하기 보다는 이것은 추정치입니다.
계산을 해서 나온 추정치 어떤 추정치냐 만약에 프로세스가 새로 시작된다면 어느 정도 사용이 가능해?
최대치로 어느 정도 사용이 가능한 거야? 라는 것을 추정해서 계산을 한 거죠 대략적으로는 어떻게 되냐면 일단 free를 포함하게 되요 기본적으로 free라든지 그 다음에 buff/cache 중에서도 당장 쓰고 있지 않는 내용들을 기준으로 봤을 때는 결국에는 디스크에서 미리 읽어 온 것이기 때문에 이 부분을 제외할 수 있는 것들을 제외하고 남은 부분을 더한 거죠 그래서 buff/cache 일부분과 그리고 free 더한것이 대충available 된다고 보실 수 있습니다
간혹 available이 free보다 낮은 경우들이 좀 있어요 이거는 좀 특이케이스이긴 한데요 기본적으로는 available은 무조건 free를 포함하고 그 다음에 일부분에 buff/cache 더하는 것이기 때문에 사실 free보다 낮아질 수는 없습니다
available 같은 경우 보통의 경우라면요 그런데 free보다 낮아지는 경우들이 간혹 있어요
이거는 이제 시스템 예약 메모리 때문에 그런 경우들이 대부분이고 실제로 그런 케이스들에 대해서 우리가 분석한 것을
리얼리눅스 블로그에도 글을 좀 작성을 해놨어요 그래서 여러분들이 우리가 이용할 수 있는 것 중에 리얼리눅스 블로그가 있거든요
블로그 눌러 보시면 다양한 어떤 주제들을 좀 올려놨습니다 블로그는 수강을 하시든 안 하시든 다 볼 수 있는 내용들이고 여기 보이는 메모리 available이 free보다 왜 낮을까? 이런 내용들도 좀 올려놨습니다.
이것은 조금 어렵습니다 그래도 한번 읽어 보셔도 좋을 것 같고요 만약에 질문 있으면 또 따로 카카오톡이라든지
웹사이트를 통해서 질문 주셔도 좋을 것 같습니다 https://reallinux.co.kr/blog/210
마지막으로 이제 swap인데요 swap 이제 페이지 회수라고 해서 페이지 메모리 공간이 별로 없을 때 여유 공간이 별로 없을 때 메모리에 있는 일부분에 대한 메모리 내용들을 자주 액세스 하지 않고 있는 내용들을 디스크로 옮겼을 때 swap이라고 포함을 표현을 하게 되요 그래서 swap은 실제로 메모리 공간이라기 보다는 디스크의 일부분 공간이라고 볼 수 있겠고 명령어로 만약에 살펴본다면 우리가 지금 사용하고 있는 디스크에 일부분 그러니까 파티션을 세 가지로 나눴을 때 파티션 세 번째에 대한 부분 2G 정도가 swap 할당이 되어 있고요 이건 디스크 영역입니다
하지만 메모리에 있는 내용들이 여유 공간이 없을 때 이제 옮길 수 있는 공간이기 때문에 어떻게 보면 메모리 공간처럼
조금은 확장해서 쓸 수 있는 영역이라고 볼 수는 있겠죠
그래서 자세한 내용들은 우리가 수업할 때 조금 더 집중해서 한번 다뤄보면 좀 좋을 것 같고요
기본적인 내용들만 해서 한번 포인트를 봤습니다
본 내용의 대한 리눅스 강의 리눅스 유치원 파트2를 수강하시려면 홈페이지 내 라이브 온라인을 참고 해주세요
https://reallinux.co.kr/course/?live=true