네이버 클라우드 캠프/Linux

[Linux] 리눅스 기초

graph-dev 2023. 4. 24. 20:09
728x90

클라우드와 리눅스

Cloud

클라우드는 가상화된 환경이다. 그 종류는 aaS를 기준으로 주로 나눕니다.

  • aaS는 as a Service (서비스를 위한)이라는 뜻 입니다. 종류에 따라 XaaS, IaaS, PaaS, SaaS로 나눌 수 있으며, 최근에는 AIaaS라는 말도 등장합니다.

각각에 대해 간단히 살펴보겠습니다.

  • XaaS
    • IaaS : Infra as a Service
    • PaaS : Platform as a Service
    • SaaS : Service(Software) as a Service
    • AIaaS : AI as a Service
  • Infra 인프라(IaaS)
    • Infrastructure, 기반시설
    • 서버, 네트워크, 등 → “하드웨어(H/W)”
    • 키보드, 모니터 등..
    • IaaS: 하드웨어, 운영체제 등
  • Platform 플랫폼(PaaS)
    • 런타임이 모인 것.
    • 자바 플랫폼, php 플랫폼 등..
    • 소프트웨어
  • Service 서비스 혹은 Software (SaaS)
    • SaaS는 MS office 365 등 다양한 소프트웨어가 있습니다.

 

리눅스의 역사

이를 요약해보면, IaaS → H/W → Linux → UNIX (자유소프트웨어 재단 FSF) 이런 흐름으로 이해할 수 있습니다.

 

Linux : “Just For Fun”

 리눅스는 헬싱키 대학 리누스 토발즈가 만들었다고 알려져있습니다. 당시 자유 소프트웨어 재단(FSF)가 만든 Unix 플랫폼은 좋지 못했으나, 리누스가 만든 운영체제가 더 낫다고 판단해서 FSF에 기증했습니다. 그 후 리누스 토발즈의 이름을 따서 리눅스로 만듭니다. 기본적으로 Kernel이라는 개념이 있고, 포함하는 Library와 이를 다 포괄하는 s/w 개념이 있습니다. (KERNEL > LIBRARY > S/W) 커널은 리눅스지만, OS 구성요소는 사람에 따라 달라질 수 있습니다. 그래서 각 단체에서 다양한 옵션을 제공하며 만든 버전들이 있어, 5가지를 소개하겠습니다. 참고로, 리눅스의 폴더 구조 등은 거의 동일하며 패키지 매니지먼트에서 다르다고 할 수 있습니다.

  1. Suse
  2. Ubuntu
  3. CentOS
  4. RedHat
  5. AWS Linux

cent OS와 RedHat은 같은 재단에서 만들었습니다. Cent OS가 좀 더 엔지니어 친화적이고, 이 말은 어렵다는 의미입니다. RedHat(레드햇)은 상업용 버전으로 기본적으로 돈을 내고 사용할 수 있는 옵션(기능)들이 있습니다. 다만 리눅스라는 운영체제는 배포 자체는 무료로 제공해야 하며, 돈을 벌고 싶다면 옵션을 사용할 때 비용을 부과할 수 있도록 FSF에서 정책을 잡았다고 합니다. 이 중에서 가장 쉽게 자주 사용하는 것은 우분투(ubuntu) OS입니다. 현재는 23.04 LTS 버전이 가장 최신입니다.

https://ubuntu.com/

 

Enterprise Open Source and Linux | Ubuntu

Ubuntu is the modern, open source operating system on Linux for the enterprise server, desktop, cloud, and IoT.

ubuntu.com

 

리눅스의 버전 X.Y.Z

리눅스는 x.y.z 버전을 사용합니다. x는 메이저(major) 버전이며 많은 변화가 있을 때 올라가며, y는 마이너(minor) 버전으로 약간 사소한 변화가 있다면 올립니다. z는 x.y 버전을 기준으로 버그가 수정되어 패치되면 올라가는 버전으로 생각하면 됩니다.

 일부 버전 중에 LTS가 붙은 버전(x.y.z LTS)도 있습니다. LTS(Long Term Support)로, 오랫동안 지원해주는 "가장 안정화된 버전"입니다. 알려지기로는 18, 20, 22 버전이 LTS에 해당합니다.

 

이제, 네이버 클라우드로 서버를 만들고, 거기서 사용자를 추가/변경을 해보면서 리눅스를 경험해보겠습니다.

 

리눅스 기초 명령어

id, who, w

나의 정보를 알 수 있습니다. 본인 계정을 알고 싶다면 who am i 를 사용합니다.

 

 

ps, htop, kill

ps : 프로세스를 살펴봅니다. 

1) ps -ef : 프로세스 전체를 출력합니다.

2) ps -ef | grep 특정글자 : 프로세스 중에 특정글자를 포함하는 것을 출력합니다.

 

htop : 작업관리자처럼 생겼습니다.

kill : 프로세스를 종료시킵니다. 주로 kill -9로 입력하며 그 뒤에는 PID라는 고유번호를 넣어주면 됩니다.

 

> :리다이렉션

|:파이프

 

touch, cat, vi

  • touch : 파일을 생성할 수 있습니다.
  • cat : 특정 파일을 읽을 수 있는 명령어입니다.
    • cat 외에도 조금씩 읽을 수 있는 명령어로 more, less 가 있습니다.
    • more : divide and conquer에 사용합니다. 스페이스바나 엔터를 사용합니다. 주로 스페이스바로 한 페이지씩 넘깁니다.
    • less : 파일 위아래로 훑어볼 수 있습니다. 화살표키를 이용합니다.
  • cat > 파일명 : 이렇게 리다이렉션(>)을 넣어서 파일을 수정해볼 수 있습니다. 끝내려면 ctrl + d를 눌러 종료할 수 있습니다.
  • vi : 내용 수정에 사용합니다.

 

cp, mv, rm

  • cp는 복사, mv는 이동, rm은 삭제하는 명령어입니다.
  • cp와 mv는 모두 해당 파일경로 + 해당 파일을 변경할 위치를 입력하면 됩니다.
  • mv는 현재파일 (변경된 이름)현재파일 이렇게 입력하면, 새로운 이름을 가진 파일로 변경할 수 있습니다.
  • rm은 유일하게 rm 파일(경로포함)으로 명령이 가능합니다. 다만 rm은 현재 소유자 혹은 수퍼유저 권한이 있어야 작동합니다. 타겟 파일만 적으면 된다는 점이 편리합니다.

 

addUser, passwd, deluser

  • adduser 로 사용자를 만들고, 패스워드 입력합니다.
  • passwd는 사용자 패스워드 변경 명령어
    1) root권한이면 passwd ubuntu 해서 ubuntu 사용자의 비밀번호를 변경할 수 있습니다.  또한, 루트 사용자 패스워드 변경은 passwd를 입력합니다.
    2) 일반사용자 : $passwd 패스워드 변경 요청 가능합니다. 다만, 변경시 요건이 까다롭습니다. 참고로 일반사용자에서 비밀번호 변경은 최초 지정 후 아래 지정된 일 수(Minum number of days between password change)가 지나야 변경이 가능합니다.
root@서버:~# chage -l ubuntu
Last password change                                    : Apr 24, 2023
Password expires                                        : Aug 22, 2023
Password inactive                                       : never
Account expires                                         : never
Minimum number of days between password change          : 90
Maximum number of days between password change          : 120
Number of days of warning before password expires       : 30

사용자 삭제는 몇가지 단계를 거쳐야 합니다. 먼저 해당 사용자로 실행중인 프로세스를 kill -9 명령어로 종료하고, deluser 사용자명으로 삭제합니다. 그래도 사용자 디렉토리가 남아있을 수 있지만 이를 rm -rf 사용자명으로된 폴더명을 입력해서 삭제합니다. 그 후에 하위 파일이 없는지 한번 확인해주면 됩니다.

 

아래는 종료하지 않은 경우에 삭제를 시도하면 나타나는 에러 입니다.

root@test1:~# deluser guest
Removing user `guest' ...
Warning: group `guest' has no more members.
userdel: user guest is currently used by process 2830
/usr/sbin/deluser: `/usr/sbin/userdel guest' returned error code 8. Exiting.

 

제대로 삭제가 되면 Done. 으로 끝납니다.

root@test1:/home# deluser guest
Removing user `guest' ...
Warning: group `guest' has no more members.
Done.
root@test1:/home#

 

 

디렉토리 명령어

디렉토리 관련 명령어로는 mkdir, rmdir, mv, rmdir 등이 있습니다.

mkdir은 make directory로 디렉토리를 만들어주고, rmdir은 제거해줍니다. mv는 이름을 변경할 때 사용합니다. 추가로 rmdir은 내부에 아무것도 없어야 삭제가 가능합니다. 같은 명령어로 rm -r이 있으며 폴더를 삭제하고, 역시 하위 파일이 없어야 합니다. 강제로 삭제를 원한다면, rm -rf를 사용하면 됩니다. 

rm -rf는 삭제하되 하위 경로에도 동일하게 반복해서(r: recursive) 삭제하되 이를 (f: force) 강제하는 것입니다. 또한, 최상위 경로인 / 를 합치면 rm -rf / 인데, 이는 가능하면 사용하지 않는 것이 좋습니다.

//rmdir 예의 있게 삭제
ubuntu@test1:~$ rmdir bit
rmdir: failed to remove 'bit': Directory not empty
//rm -rf 강제로 삭제
ubuntu@test1:~$ rm -rf bit/
ubuntu@test1:~$ ls

 

참고: 와일드카드(*)

* 이라는 명령어는 특정한 글자를 찾을 때 혹은 이를 포함하는 모든 파일을 찾을 때도 유용합니다. 가령, 'l' 이라는 글자를 찾아서 복사한다면, 와일드카드를 사용해서 아래와 같이 명령어를 사용합니다.

ubuntu@test1:~/camp$ cp *l* ~/

 

'네이버 클라우드 캠프 > Linux' 카테고리의 다른 글

[Linux] 권한 이야기  (1) 2023.04.25