리눅스 필수 시스템 명령어 알아보기
안녕하세요.
이번에는 리눅스 필수 시스템 명령어에 대해서 한번 알아보도록 하겠습니다.
자, 우리가 리눅스를 처음에 사용하게 된다면요 갑자기 썼을 때 어떻게 시스템에 대해서 이해를 할 수 있을까?
너무 어려운 내용들을 다루기 보다는 그냥 제가 어떤지를 조금 살펴보면서 기초로 뭐를 확인 할까, 시스템을 보면서 뭘 확인 할까 이런 생각을 좀 해봤어요.
저도 어쨌든 현업에서 한 10년 정도 이상 그 다양한 서버들을 다루고 활동을 하면서 자연스럽게 이제 좀 채득된 것들이 좀 있거든요.
그래서 그런 내용들을 한 번 담아 봤습니다.
직접 명령어를 한 번 입력 하면서 우리가 좀 써보는 게 좋을 것 같아서 이번에 저희가 리얼리눅스안에 새로운 기능이 좀 탑재가 됐거든요.
그래서 나중에 한 번 따로 소개를 좀 드려야 될 것 같은데 그 실습 환경 한 번 써 보도록 하겠습니다.
리얼리눅스 웹 사이트 고요.( reallinux.co.kr)
자, 여기서요.
로그인을 일단 해주셔야 되고요.
로그인을 이제 구글 계정으로 로그인 한 번 해보도록 하겠습니다.
그리고 이제 마이 페이지 쪽으로 들어가시게 되면은 실습 환경이 있어요.
이 실습 환경을 한 번 써서 한번 해보도록 하겠습니다.
그동안은 VirtualBox라든지 여러 가지를 사용을 했었는데 이번에는 자체적으로 실습 환경을 따로 구축을 해서 진행을 해봤어요
보시게 되면 우분트(Ubuntu), 로키(Rocky Linux)라던지 그리고 또 이제 도커나 쿠버네티스도 있는데 이제 로키 9.3을 기반으로 해서 설치가 이미 되어 있습니다. 그래서 이거는 나중에 저희가 기회가 되면은 영상을 통해서 한 번 소개를 좀 드려보면 좋을 것 같고요.
오늘은 우분트(Ubuntu)22.04, 또 로키(Rocky Linux)9.3 정도 사용해 볼 수 있을 것 같은데 하나를 기준으로 일단 한 번 실습을 좀 진행해 보도록 하겠습니다.
자, 일단은 생성을 하고요.
실행을 누르시게 되면은 조금 로딩 하는 데 시간이 필요해요.
근데 실제로 소수의 인원에게 좀 테스트를 해봤을 때는 기본적으로 우리가 AWS, 프리티어 쓰는 것보다는 훨씬 빠르다 라는 피드 백을 많이 받고는 있거든요.
그래서 여러분들도 한 번 회원 가입하시면 무료로 사용하실 수 있으니까 실습환경 한 번 써 보셔도 좋을 것 같습니다.
터미널 실행 하시게 되면은 이렇게 터미널 화면이 뜨게 돼요.
그래서 그대로 쓰실 수가 있겠고요.
이걸로 한 번 실습을 좀 진행을 해 보도록 할게요.
자, 첫 번째부터 가보도록 하겠습니다.
일단은 배포한 버전을 확인하는 겁니다. 시스템을 쓰는 리눅스를 봤을 때 리눅스 마다 버전 들이 다 다르거든요.
그래서 그거를 확인하는 방법이죠.
여기다가 cat /etc/os-release라는 걸 쳐 보시게 되면은지금 같은 경우에는 우리가 지금 레드햇 계열의 리눅스죠.
로키(Rocky Linux) 요즘에 이제 회사들이 센트(Cent)에서 Rocky로 많이 넘어가고 있고요.
그래서 Cent랑 거의 유사하게 이용할 수가 있는데요.
Rocky 9.3의 그 버전을 확인해 볼 수가 있겠습니다.
이런 식으로 어쨌든 배포 버전을 확인할 수 있는데 배포판 버전을 사실 확인할 수 있는 방법이 또 하나 더 있어요.
이게 뭐냐면 lsb_release 라고 하는 명령어 입니다.
이제 리눅스 스탠다드 베이스의 줄인 말이고요 이 배포판 버전을 확인할 수 있는 건데요.
여기서는 사실 로키에서는 명령어 제대로 입력이 안 돼요.
release -a라고 했을 때 그 배포한 버전 명령어 지금 없거든요.
근데 이거를 물론 이제 redhat-lsb-core 라고 하는 그 패키지를 받게 되면은, 명령어를 사용할 수는 있지만 로키 9에서는 이게 설치가 좀 제대로 패키지가 찾아 지지가 않아가지고.
여기서는 이 제 설치가 안 되고 있는데 물론 이제 어떻게서든 그 패키지를 설치 받게 되면은 레드햇 안에서도 사실은 그 실행이 가능하긴 합니다.
근데 이제 이렇게 안 되는 경우들이 있다라는 사실을 이해하는 게 중요해요.
원래 이제 명령어 라는 게 항상 늘 존재하는 건 아니거든요.
그러면 대체 명령어를 항상 이해하고 있어야 되고요.
리눅스는 조금 단점 이기도 하지만 장점이 훨씬 크죠.
이런 대체제가 많이 있다라는 거 약간 혼란스럽게 라는 단점은 있지만 다양한 대체제가 있다라는 장점이 있습니다.
그래서 그런 부분을 잘 이해하시는 게 좋을 것 같고요.
제가 지금 쓰고 있는 그 우분투 배포 카드 기준으로 한 번 이 명령어를 입력을 해 보면요 lsb_release -a 이렇게 입력 하셨을 때 우분투 18.04를 사용하고 있는 거를 또 확인하실 수가 있겠습니다.
자, 이렇게 해서 배포판 버전 확인하는 두 가지 방법에 대해서 말씀을 드려봤고요.
리눅스를 처음 보게 되면 이런 거를 먼저 입력을 보통 합니다.
그래서 시스템 버전부터 보게 되죠.
그 다음으로는 커널 버전입니다.
자 커널 버전은 뭐냐 이 지금 그 리눅스를 쓰고 있을 때 우리가 윈도우로 비유를 해볼게요.
윈도우 같은 경우엔 윈도우 7, 11, 윈도우xp 여러 가지가 있을 텐데 그런 여러 가지 배포판들에 따른 버전들도 존재를 하겠지만 실제 윈도우도 윈도우 내부의 커널이 존재합니다.
실질적으로도 CPU 메모리 디스크 네트워크들을 직접적으로 컨트롤을 하게 되는 커널 프로그램인 거죠.
그래서 그런 것과 마찬가지로 리눅스도 뭐 센트, 우분투 다양한 배포판 버전들이 존재를 하겠지만 다양한 유틸리티 나 시스템 프로그램을 제외하고 완전히 그 코어 한 CPU, 메모리, 디스크, 네트워크 각종 디바이스를 직접적으로 매니지먼트 하는 그런 커널 프로그램버전을 보는 겁니다.
그래서 버전을 보시게 되면은 uname -r 로 일단 볼 수 있어요.
이렇게 입력하시게 되면은 커널 버전을 볼 수가 있겠고요.
그거 말고도 cat /proc/version 버전을 보시게 되면은 커널 버전을 또 확인할 수 있는 두 번째 방법입니다.
계속 말씀드리지만 이렇게 명령어를 하나로만 이해 하시지 말고요.
CPU, 메모리, 디스크, 시스템 버전이든 알아볼 수 있는 명령어들은 여러 가지가 있으니까 대체를 꼭 찾아 보시면서 같이 하시면 좋을 것 같고 또 그 차이점을 잘 이해하고 있으면은 좀 더 시스템을 이해할 때 많이 도움이 될 수 있습니다. 자 그래서 두 번째로 알아볼 수 있는 커널 버전 까지 한 번 요약해서 살펴봤습니다.
자 그 다음에는 CPU 코어 하고 CPU 정보입니다.
nproc라고 하는 명령어 있어요.
우리가 명령어 모를 때 어떻게 되죠?
wharis nproc 이런 거 입력할 수 있죠?
지금 보이시는 것처럼 지금 우리가 사용할 수 있는 CPU 의 개수, 우리가 CPU 코어의 갯수를 확인할 수 있다라는 사실을 알 수 있습니다. 그래서 코어는 지금 하나로만 되어 있는 거로 알 수가 있겠고요.
여기서 cat/ proc/ cpuinfo같은 거를 보시게 되면은 CPU 정보도 정확하게 확인을 해 볼 수가 있습니다.
어, 물론 CPU 정보를 볼 수 있는 방법이 또 이거 말고도 여러 가지가 존재하지만 두 가지 정도를 일단 보통 봤고요 특히나 nproc는 굉장히 유용한 표현이에요.
실제로 우리가 쓸 수 있는 코어 갯수에 따라서 내가 실제로 예를 들어서 병렬적으로 두 개의 코어를 쓴다던가 병렬적으로 네 개의 코를 쓴다던가 이런 것들을 지정할 수가 있기 때문에 특히나 컴파일 할 때 마이너스 제이 옵션 같은 걸 사용하셔 가지고 이제 병렬적으로 처리할 때 이런 코어 개수에 맞춰서 진행을 하실 수가 있겠죠.
그래서 CPU 코어 개수 CPU 정보 확인을 해 봤습니다.
그 다음에는 메모리 입니다.
메모리를 어느 정도도 쓸 수 있고 또 메모리에 대한 세부 정보를 확인하는 방법인데요.
자, free를 그냥 하면은 이제 바이트 단위로 보이기 때문에 좀 보기가 힘들어요.
그래서 여기서 free -h라고 했을 때 조금 더 정확하게 보실 수가 있겠고요.
휴먼 리더블 이라고 해서 사람이 읽기 편하게 기가,메가,키로 이런 것들을 표시를 해서 볼 수가 있겠습니다.
지금 보이시는 것처럼 한1.7G 정도의 전체 메모리 중에서 이제 사용하지 않고 있는 free 공간, 사용하고 있는 공간, used 이런 것들을 볼 수 있겠고요.
그 밖에도 수치들을 많이 보이지만 이런 것들에 대해서 제대로 이해를 하기 위해서는 조금 전반적인 메모리에 대한 공부가 조금 필요해요.
요약을 해서 그냥 말씀을 좀 드려보도록 할게요.
일단은 free는 말 그대로 사용하고 있지 않은 공간을 지칭합니다 used는 사용하고 있는 공간을 지칭을 하지만 이거는 조금 세밀하게 해볼 필요가 있어요.
모든 사용하고 있는 공간을 여기서 지칭하는 건 아닙니다.
사용하고 있는 건 맞아요.
하지만 이때에는 Anonymous 용도라고 해서 Anonymous Pages라는 표현도 쓰는데 스택(stack), 힙(heap) 이런 목적으로 쓰는 것들이 잡힙니다.
그러면은 파일을 읽거나 쓰면서 그 파일 내용들이 메모리의 로드가 돼서 같이 캐시가 되는 그런 페이지 캐시 용도로 쓰는 메모리들은 여기에 안 잡히는 겁니까?
그렇쵸 안 잡히게 돼요.
그래서 우리가 파일을 읽거나 파일 블록 디스크 블록 들을 읽다 보면 메모리의 캐시가 되거든요.
그래서 그런 내용들은 buff/cache 부분에서 이해를 할 수가 있습니다.
그리고 available같은 경우에는 추정치 예요.
그래서 실제로 지금 이만큼을 사용할 수가 있다.
무조건 쓸 수 있다라는 거는 free에 해당되는 거라면 여기는 사실상 available로 이라고 하는 거는 사용할 수 있을 만큼을 계산한다. 라고 보시면 될 것 같고요.
추정치 이자 계산치 입니다.
그래서 간혹 가다가는 free로 잡혀 있음에도 불구하고 available더 낮은 경우들도 아주 간혹 있습니다.
왜냐하면 free이지만 여유 공간이 있지만 이용할 수는 없다라는 뜻으로 이해할 수 있겠고요.
시스템이 예약되어 있거나 시스템 자체적으로 뭔가 메모리를 사용할 수 없도록 설정이 되어 있다면 그렇다면 available부분이 낮게 나올 수도 있어요. 보통은 free 보다는 높게 나오죠.
왜냐면 buff/cache 에 해당되는 부분들을 이제 털고 그러니까 파일이나 디스크 블록을 유지하는 용도를 해지하고 났을 때 쓸 수 있는 양을 좀 플러스를 시킬 수 있기 때문에 available 어쨌든 추정치이고 보통은 free보다 높고 free에 이제 buff/cache 용도로 쓰이던 것들을 붙였을 때 나오는 수치라고 볼 수는 있습니다.
네, 좀 요약해서 말씀을 드렸는데 이걸 제대로 이해하기 위해서는 우리가 이제 리얼리눅스안에서 시스템 핵심 정리 수업이 따로 있어요. 그래서 그런 것들 또 수강 하시면 도움이 받을 수는 있습니다.
자, 그 다음에 메모리는 봤고요
디스크 한 번 보도록 하겠습니다.
자, 디스크는요 일단은 우리가 윈도우에 들어갔을 때 C 드라이브를 볼 수 있죠.
그리고 C 드라이브가 몇 퍼센트 썼는지 볼 수 있습니다.
근데 df -h / 라고 하시면 이 슬래시가 사실상 리눅스 에 C 드라이브 같은 친구예요.
엔터를 눌러 봤을 때 보이시는 것처럼 한 13%정도를 사용하고 있구나 어느 정도 사이즈를 쓸 수 있구나, 이런 것들을 확인하실 수가 있습니다.
그래서 디스크 공간 확인하는 거, 이런 것들도 저도 리눅스 처음 썼을 때 처음 리눅스 이 환경에 딱 들어왔을 때 그 니까 제 말은 여기 저기 다른 서버들이 있고 그 서버들이 딱 들어왔을 때 확인할 때 주로 많이 쓰는 명령어 중에 하나입니다.
그리고 실제로 다양한 어떤 오류나 이슈가 생겼을 때 실제 그 오류 메세지는 side effect에 불과하고 근본 원인이 용량이 가득 차서 인 경우들도 은근히 많아요.
그래서 오류 메시지가 딱 났는데, 이게 이 오류 메시지 만으로는 단서를 찾기 힘들다, 그러면은 사실 루트 코즈 가 따로 있을 수도 있거든요.
근본 원인이 그런 것들을 볼 때 또 이렇게 df명령으로 사용할 수 있습니다.
자, 그 다음에 du명령어 예요.
du명령어 는 뭐냐면 여기 적혀 있는 것처럼 폴더에 그 사용 공간을 차지하는 것을 확인하는 겁니다.
이렇게 좀 비슷해 보이는데 수치는 약간 다르게 나올 수는 있습니다.
일단은 du같은 경우에는 특정 폴더를 기준으로 해서 공간을 얼마나 쓰는지를 보는 거예요.
근데 보통 이제 우리가 그냥 ls명령어를 통해서도 사이즈를 확인할 수는 있지만, 일반 파일 같은 경우에는 사이즈를 추출해 해서 볼 수가 있어요.
근데 폴더 같은 경우에는 사실상 좀 비어 있는 파일 같은 느낌이 거든요.
왜냐하면은 폴더에는 그냥 폴더가 들어가고 파일이 들어가는 거지 이 폴더 자체가 엄청난 용량을 차지하는 거는 아니다 보니까 물론 폴더 안에 있는 모든 파일과 폴더 들을 다 합쳐서 용량 차지하는 걸 보면 이 폴더 진짜 사이즈를 알 수 있겠죠.
그걸 해주는 게 du입니다.
du를 하게 되면은 이 안에 있는 다양한 폴더 들를 전부 다 합쳐서, 그러니까 자식 폴더 자식 폴더를 전부 다 합쳐서 용량 사이즈를 계산해 준다라고 보시면 되겠고요.
여기서 USI 라는 폴더를 기준으로 해서 이제 서리 로 휴먼 리더블 하게 계산을 해 봤을 때 용량 사이즈가 2G 정도 사이즈를 차지하고 있는 걸로 볼 수 있습니다.
사실 이거를 보시게 되면은 우리가 전체 사이즈에서 2G 정도면은 엄청나게 크다라는 걸 알 수 있죠.
그럼 USR 만 날라가게 되면은 우리 공간을 많이 차지할 수 있느냐 라고 물론 말씀하실 수 있겠지만 가능하죠.
가능하지만 이렇게 하면 거의 모든 명령어를 다 지우는 것과 비슷합니다.
왜그러냐면 이 USR 이라는 폴더가 우리가 소프트웨어 패키지 관리자를 통해서 다양한 소프트웨어 받고 설치하고 이런 것들이 대부분 USR 폴더 아래 저장이 되거든요.
그래서 여기가 공간을 많이 차지하는 건 사실 당연하다 라고도 말씀드릴 수가 있겠습니다.
자, 그 다음에 마지막으로 이것을한 번 살펴보려고 해요.
약간의 응용 인데요.
이건 뭐냐면 우리가 용량이 100% 가득 찼을 때 그러니까 df 명령으로 가득 찼을 때 이러 어떻게 갈 겁니까?
뭐가 용량을 많이 차지하는 거야? 라는 질문을 할 거고요.
그러면은 어떻게 하면 용량을 많이 차지하는 친구를 찾아낼 수 있을까?
어떻게 하면 수색할 수 있을까 이런 생각을 할 거란 말이죠.
자, 여기서 이 명령어를 통해서 가능합니다.
한 번 보여드리도록 할게요.
du명령어를 하는데 휴먼 리더블 하게 볼 거고요.
d 라고 하는 거는 자식이 폴더에 자식폴더, 이거를 d1 까지만 보겠다라는 뜻이에요.
그리고 usr폴더에 있는 d1 까지만 보는 거고 자식 폴더, 이거를 sort 를 해가지고요 -rh하는 리버스 큰 거부터 보겠다라는 뜻입니다.
그리고 휴먼리더블한 수치, 그러니까 여기 왼쪽에 보이는 수치가 완전 히 풀 숫자 값이 아니어도 G,M, K 이런 식으로 메가, 기가,키로 바이트 이런 것들이 적혀져 있어도 소팅을 제대로 하겠다라는 뜻으로 이해하실 수가 있어요.
입력을 하시게 되면은 이런 식으로 나오게 되죠.
일단은 맨 위에는 그냥 전체 폴더를 지칭하는 거고요.
나머지 폴더 들이 usr 폴더에서 어느 정도의 사이즈를 차지하고 있는지를 알 수 있습니다.
그래서 이거는 당연히 응용이 가능하죠.
그래서 실제로 루트 부터 시작해 가지고 하나씩 하나씩 안에 있는 자식폴더, 자식폴더를 보면서 실제로 용량을 과도하게 많이 차지하고 있는 건 누군지를 찾아낼 때 굉장히 유용하게 쓸 수가 있습니다.
자, 이렇게 해가지고요 디스크 공간 폴더 용량 확인까지 한 번 알아봤고요.
네트워크는 아직 안 알아 봤죠?
이거는 명령어 조금 더 많다 보니까 다음 영상에서 한번 말씀을 좀 드려보도록 하겠습니다.
우선은 우리가 리눅스를 처음 다루고 또 리눅스가 새로운 리눅스일 때 갑자기 리눅스에 들어와서 어떤 시스템 명령어 들을 통해서 확인할 수 있을까? 필수적으로 할 수 있는 것들을 좀 알아봤습니다.
혹시 질문 있으시면은 또 이제 한 번 댓글 달아 주시면은 감사하겠고요 나중에 또 좋은 영상으로 인사드리도록 하겠습니다.
감사합니다.
관련 리얼리눅스 강의는 리눅스 시스템 핵심정리 입니다.
https://reallinux.co.kr/course/se_system