-
[Chapter1]리눅스의 추억3(feat.막힘없이 실무까지)Backend/LINUX 2022. 6. 27. 15:19
본 포스팅은 2020년에 작성했던 포스팅입니다, blog를 이관하게 되어 재포스팅 하였습니다.
※ 아래 포스팅은 제가 수강하였던 동영상 강의, 각종 블로그 혹은 공식 홈페이지에서 습득한 자료들 제 나름대로 재구성하여 포스팅 한 자료입니다. 잘못된 내용이 있을 수도 있습니다. 최대한 글 읽으시는 시간이 헛되지 않게 검토하여 올리겠습니다. 편하게, 재미있게 제 글을 읽어주셨으면 좋겠습니다. 틀린 부분이 있으면 댓글이나 메일 주시면 수정하여 놓겠습니다. 제 글을 읽어주셔서 감사합니다^^
- 목차 -
Chapter1. 리눅스 맛보기
Chapter2. 리눅스 활용하기
Chapter3. 리눅스 개발 및 운영하기
(7) 리눅스는 서버 version만 있는 것이 아니다?(feat.Ubuntu desktop version)
이미지 출처: 구글 계속 커맨드 라인만 입력하면 좀 지루하니까 잡설을 조금 하겠습니다.
만약 지금 이 글을 보고 계신 분들이 개발자가 아니시더라도 영화나 TV에서 서버를 다루는 개발자를 보셨더라면 검은색 창 위에서 하얀색 글씨로 타이핑하며 개발을 하고 있는 개발자들을 한 번씩 보셨을 겁니다.
이것을 CLI라고 합니다(Comman Line Interface)
저도 리눅스를 다루기 전까지는 리눅스는 무조건 다 이런 줄 알았습니다. 이건 운영체제별 차이라기보다는 저희가 다루려고 하는 운영체제가 GUI를 지원하느냐 안 하느냐의 차이라고 보시면 됩니다.
MS 사의 Window OS가 제대로 된 GUI를 만들기 이전부터 linux에서도 GUI를 만들고 있었습니다.
다만 그 GUI가 다소 투박합니다. 그래서 저도 리눅스 민트(linux mint)라고 하는 gui가 발달되어 있는 리눅스를 메인 PC(개발 PC)로 쓰고 있으며 CLI와 GUI의 이점을 다 누리며 컴퓨터를 이용하고 있습니다.
저는 개인적으로 개발할 때 이 리눅스 피시가 얼마나 편했는지 모릅니다.
웬만한 건 다 그냥 cli로 틀어서 해결하고 제가 원하는 작업을 할 때에는 크롬 브라우저를 틀어서 작업하면 됩니다.
다만 한 가지 큰 단점이 있는데, 아까 말씀드렸다시피 리눅스는 CLI 환경으로써 주로 쓰이지 WINDOW처럼 사용자 GUI가 많이 발달하지 않았습니다. 아니 정확하게 말씀드리면 GUI라기보다는 우리가 WINDOW에서 썼던 응용프로그램이 돌아가지 않는 것이 많습니다.
이건 단순 디자인이 투박하다 그런 얘기가 아닙니다. 그리고 공공기관에서 뭐 인터넷 확장 소프트웨어를 잘못 만들어서 호환성이 안 맞아서 특정 기능을 이용하기가 불편하다 그런 이야기도 아닙니다.(공공기관의 Active X는.... 한국에서 만들어서 must! Internet Exproler에서만 특정 공공기관을 제대로 쓸 수 있게 만들어놓은? 브라우저의 스크립트라고 보시면 됩니다. 다 제치고도 이건 브라우저 상의 문제니까요.)
이건 OS 차원의 문제인데 어떠한 프로그램을 다운로드하면 실행이 안 되는 경우가 부지기수입니다.
그리고 한국에서(한국의 웹사이트에서) 무언가를 이용하려고 하면. exe 확장자로 된 Window OS 상에서만 돌아가는 프로그램을 다운로드하게 됩니다. 이건 당연히 LINUX에서는 안 돌아갑니다.
왜 당연하냐고요??
추후 설명드리겠습니다만 Window에서. exe로 보이는 응용프로그램이랑 비슷한 것이 LINUX에서 보이는. deb라는 것들입니다. 리눅스에서도 Wine이라는 소프트웨어를 사용하면 Window 상에서 돌아가는 응용프로그램을 Wine에 위에 설치해서 이용할 수 있습니다만 error 창을 발생하며 뻗기 부지기수입니다. 결국 LINUX를 개발 PC로 사용하려면 개발 툴이외에 것들은 대부분 웹에서 해결해야 하는데 저는 불과 10년 전만 해도 웹에서 할 수 있는 게 많지 않다고 생각이 되어(물론 그때도 어렸습니다. 저를 할아버지로 보실까 봐 노파심에 말씀드립니다만 제 세대 때에는 어려서 때부터 컴퓨터로 이것저것 했습니다 ㅋㅋ 특히 게임을 했지만요) 리눅스를 메인 피씨로써 사용한다는 것은 상상도 할 수 없었죠.
그런데 지금은 웹에서 지원되는 것이 무지하게 많습니다. 우리가 메모 애플리케이션으로써 사용하는 에버노트나 노션같은경우도 다 웹 버전이 있습니다. 그렇습니다. 응용프로그램을 만들려면 무겁기도 하고 비교적 응용프로그램보다 웹을 조금 더 빨리 다양하게 만들수있다보니 웹으로도 이것저것 할 수 있게, 편리하게 서비스를 제공하는 업체가 많이 생겨나게 된 것입니다. 아무튼 요즈음 돼서야 웹에서 정말 다양한 것들을 할 수 있게 되었고(이는 운영체제에 크게 구애받지 않아도 된다는 것이니 저는 정말 잘 된 일이라고 생각하고 좋습니다), 그것 덕분에 저 같이 리눅스를 잘 다루지 못하는 사람도 리눅스를 메인 피시로 사용하며 이것저것 연습하며 개발할 수 있게 되었습니다.
개발자분들에게는 LINUX UBUNTU를 적극 추천드립니다. 와 이건 정말 너무 투박해요!라고 하시는 분들은 MAC을 추천드립니다. 하지만 이건 주머니 사정을 많이 타다 보니 저는 LINUX를 추천드리겠습니다...
잡설이 길어졌는데 아무튼 리눅스를 메인 피시로 삼으시려는 분들은 심사숙고하셔서 기존의 운영체제를 정리하시기 바랍니다. 개인적으로 저는 공부에 큰 도움이 되었습니다.
(9) LINUX 운영체제에 Chrome 브라우저 설치하기
일단 리눅스에 접속하시고 이런저런 디렉터리를 해집어 다녀 보시기 바랍니다.
우리가 Window에서도 7->10으로 처음 업그레이드했을 때 새로 바뀐 GUI가 신기하여 마우스로 클릭해서 이런저런 폴더를 열며 헤집고 다녔었죠. 그것과 똑같은 행위를 LINUX에서는 cd 명령어로 할 수 있습니다
brandon@brandon-VirtualBox:~$ cd . brandon@brandon-VirtualBox:~$ cd .. brandon@brandon-VirtualBox:/home$ cd / brandon@brandon-VirtualBox:/$ cd -
cd 명령어 오른쪽 편에는 주로 이동하고 싶은 곳을 적어주시면 됩니다. 그런데 . 이 왜 나왔냐고요?
리눅스에서 .은 자기 자신, ..은 부모(parent), /는 루트(root), -는 뒤로 가기를 뜻합니다.
그리고 cd 명령어의 왼편에는 ~ $ 이 부분에서 ~ 이 부분이 계속 바뀌고 $ 이 부분은 가만히 있는 것을 보실 수 있으십니다.
$는 프롬프트라고 합니다. 딱히 뜻하는 바가 있는 건 아니고 아마 명령을 칠 수 있는 줄과 아닌 줄을 구분할 수 있게 리눅스상에 있는 것이 아닐까 합니다.
$의 왼편에는 '자신이 현재 속해있는 위치'를 알 수 있습니다.
그래서 위 명령줄에서도 명령어를 입력할 때마다 수시로 바뀌고 있습니다.
이렇게 몇 번 돌아다니셔 보다가 CLI 창을 내리고 좌측 메뉴에 있는 firefox 브라우저를 눌러서 웹에 접속해 줍니다.
그 후 Chrome을 검색하여 Chrome 브라우저를 다운로드합니다. 추후 리눅스 안에서 이것저것 검색하거나 다운로드할 때 사용해야 하니 Chrome 브라우저가 필요합니다.
(9)-1
다운로드를 누르고 나면 아래와 같은 창이 나올 것입니다.
(9)-2
저는 install을 끝마친 상태여서 그 반대인 remove가 나오는데, install 버튼을 누른 후 설치가 완료되시면....
좌측 상단의 사륜안같이 생긴 아이콘을 눌러주시면 여러 응용프로그램들을 검색할 수 있는 창 같은 게 나옵니다.
이건 Window의 시작 버튼과 매우 비슷한 역할을 하는 버튼이라고 생각하시면 됩니다. 이곳에서 chrome 아이콘을 눌러보시면 웹 브라우저가 나오실 겁니다.
(10) 파일시스템 및 디렉토리 구조
이 포스팅에서 가장 중요한 부분인데요. 일단 (9)번의 과정이 끝나셨다면 터미널 창을 다시 열어줍니다.
cd / ls
위 명령어를 입력하시면
bin dev initrd.img lib64 mnt root snap tmp vmlinuz boot etc initrd.img.old lost+found opt run srv usr cdrom home lib media proc sbin sys var
위와 같은 디렉토리들이 나오실 것입니다 여기서 중요한 디렉토리만 몇 가지 집고 넘어가도록 하겠습니다.
저 곳에서 .img처럼 .확장자가 없는 것들은 대부분 디렉토리라고 보시면 됩니다.
Window 운영체제에서는 폴더라고 부르지만 앞으로 제 포스팅에서는 '디렉토리'라고 부르겠습니다.
(10)-1. / : 우리가 이동했던 루트 디렉토리입니다. 가장 상단에 위치한 디렉토리입니다.
(10)-2. /bin : bin 디렉토리입니다. 기본적인 명령어들이 들어가 있고, 앞으로 여러 소프트웨어를 설치하면 그 소프트웨어를 실행할 수 있는 명령어들의 모음집이 이곳에 들어있다고 보시면 됩니다.
(10)-3. /boot: boot loader 디렉토리입니다. 이곳에는 OS를 시작시키기 전에 실행되어야 하는 프로그램들이 모여있습니다.
(10)-4. /dev: 각종 디바이스와 관련된 파일들이 존재하는 디렉토리입니다. developer의 약자처럼 보이지만 device의 약자입니다.
디바이스와 관련된? 이 말이 잘 와닿지 않으실 수 있으실 텐데요. 리눅스를 처음 설치하시게 되면 하드디스크를 리눅스 내부의 다른 폴더와 마운트에서 사용하고 싶은 경우가 있습니다. 마운트라는 말도 잘 안 와닿으실 수 있는데 여기서는 '연결'이라고 표현하겠습니다. 그 하드디스크와 관련된 파일이 바로 이 /dev 폴더에 있어서 그 폴더와 개인이 만든 디렉토리를 연결해 주어야 합니다. 아래 명령어를 입력해보시면 그 목록이 나오실 겁니다.
sudo fdisk --list
(10)-5. /etc: 각종 시스템 설정 파일들이 들어가 있습니다. 이 폴더는 매우 중요한 폴더입니다 그래서 이 폴더를 주기적으로 백업을 해두는 것도 좋습니다. 폴더를 어떻게 주기적으로 백업하고 무엇이 중요한지는 차차 다루도록 하겠습니다.
(10)-6. /home: 이건 사용자의 홈디렉토리인데요. 이곳에 들어가시면 운영체제에 접속하는 사용자 별 디렉토리가 나올 것이고 현재 이 글을 보시고 포스팅을 따라 하신 분이라면 사용자님 이름으로 된 계정 하나만 존재할 것입니다. 들어가게 되면 Desktop이나 Download 폴더와 같은 Window의 '내 폴더'와 비슷한 폴더들이 있습니다.
무언가 웹에서 다운로드하게 되면 자동으로 Download 폴더에 꽃히도록 되어있는것이 많아서 저 폴더를 뒤져보면 이것저것 다운로드한 파일들을 앞으로 찾으실 수 있을 것입니다.
(10)-7. /lib: 라이브러리 디렉토리입니다. 이곳에는 /bin에서 프로그램을 실행시키려면 그와 관련된 라이브러리들이 있어야 하는데. bin에는 명령어를 모아둔 곳이고 그 명령어와 관련이 있는 파일들이 바로 /lib에 있습니다.
(10)-8. /mnt: 외부 저장소 또는 파일시스템 마운트 포인트입니다. 리눅스에서 USB를 꽂으면 바로 mnt 하위 폴더에 access 하게 됩니다. 이걸 window 식으로 재해석하면 usb를 윈도우에 꼽으면 하드웨어 장치라는 폴더에 usb를 만들 수 있게 아이콘이 생기는데요. 그것과 매우 유사한 역할을 하는 폴더라고 보시면 됩니다.
(10)-9. /proc: 시스템 운용에 관련된 디렉토리입니다. 실제 존재하는 파일들이라기보다는 '현재 운영되고 있는 프로그램들에 대한 파일'이 모여있는 것이기 때문에(디스크상에 존재하지 않고, 메모리에 존재합니다) 가상 파일 시스템이라고 부릅니다.
(10)-10. /root: 루트 사용자의 홈 디렉토리입니다.
(10)-11. /sbin: 관리자용 명령어가 모여있는 곳입니다. 일전에 사용한 ifconfig 명령어나 fdisk 같은 명령어가 이곳에 초록 글씨로 들어있습니다. 저는 가끔 시스템 명령어를 확인할 때 들어가는 것 같습니다. /bin 폴더와는 다르게 사용하려면 sudo 권한이 필요합니다. /bin과 /sbin 폴더 모두 리눅스를 이용하기 위한 기본적인 프로그램들이 위치한다고 보시면 될 것 같습니다.(콘솔을 이용하기 위한 기본적인 프로그램들)
(10)-12. /tmp: 임시파일 저장소라고 보시면 됩니다. 이 폴더는 모든 사용자에 의해서 읽기와 쓰기가 가능한 디렉토리입니다. '모든 사용자' 라뇨!? 그게 무슨 개념이죠!?라는 생각이 드실 텐데요. 리눅스의 경우 window와 다르게 '다중사용자 개념'의 운영체제입니다. 그러니까, 윈도우의 경우 사용자 == 관리자인데요, 이는 리눅스와는 많이 다릅니다. 리눅스의 경우에는 사용자가 must 관리자가 되지 않습니다. 다중사용자를 두고 그중에서 관리자를 정해서 권한을 준 다음 이건 관리자만 할 수 있어!라고 이야기하는 느낌의 운영체제입니다. 한마디로 사용자와 관리자가 철저하게 분리가 되어있습니다. 그래서 여러분이 시스템에 관련된 무언가를 하려고 하거나 sudo 명령어를 입력하지 않고 무엇을 하려고 하면 permission denied라는 글자를 자주 보실 수 있으실 겁니다. 개인적으로는 root를 사용하지 않는 경험이 매우 중요하다고 생각합니다. 필요할 때만 sudo 권한을 빌려서 일을 처리하는 것이 리눅스의 철학이라고 들었습니다.
(10)-13. /usr: 시스템에 관한 공통 파일들의 디렉토리입니다. user의 약자처럼 보이지만 universal system resource의 약자입니다. 그런데 이곳에 들어가 보신 분은 무언가 신기한 점을 하나 느끼셨을 겁니다 왜냐하면 들어가서 파일들을 조회해보면 아래와 같이 나옵니다.
brandon@brandon-VirtualBox:/usr$ ls bin games include lib libexec local locale sbin share src
오잉? 이거 root 디렉토리에서 본 광경이랑 비슷한데? 하실 겁니다. 이 폴더는 공유 폴더입니다. 그래서 다른 사용자들이 접속했을 때 이곳에 있는 프로그램들을 공유할 수 있죠 그렇기 때문에 루트 디렉토리와 구조가 매우 비슷한 것입니다.
휴. 손가락이 아프네요ㅠㅠ. 다음 포스팅에서 추가로 또 다루도록 하겠습니다.
'Backend > LINUX' 카테고리의 다른 글
[Chapter1] 리눅스의 추억7(feat. 막힘없이 실무까지) (0) 2022.06.28 [Chapter1] 리눅스의 추억6(feat. 막힘없이 실무까지) (0) 2022.06.27 [Chapter1] 리눅스의 추억5(feat. 막힘없이 실무까지) (0) 2022.06.27 [Chapter1]리눅스의 추억4(feat.막힘없이 실무까지) (0) 2022.06.27 [Chapter1] 리눅스의 추억(feat. 막힘없이 실무까지) (0) 2022.06.27