본문 바로가기
OS/Linux

리눅스 기본

by BTC_RUPY 2022. 4. 4.

안녕하세요. 이번 포스터는 "BTC_RUPY" 가 업로드합니다 ㅎㅎ

리눅스는 공부를 하면서 느낀 게 끝이 없는 거 같아요. 까도 까도 끝이 없는 양파 같은^^;;

첫 업로드라 많은 내용 중에서도 기본으로 작성해 봤어요.

잘 읽어 보시고 피드백 주시면 감사합니다.

도움이 됐으면 좋겠습니다 ^^

 

 

1. 리눅스란?

리누즈 토발즈(Linus Torvalds)에 의해 만들어진 컴퓨터 운영체제로, 자유 소프트웨어와 오픈 소스 개발의 가장 유명한 표본입니다. 참고로 이 펭귄은 리눅스의 마스코트로 이름은 턱스(Tux)입니다.

 

 

 

 

 

Hi~ btc~ I'm Tux

 

2. 리눅스의 구조

 

office 등의 문서편집기 혹은 웹브라우저와 같은 응용프로그램에서 사용자가 명령을 내리면 shell(셸, 쉘)은 이 명령을 해석해줍니다. shell을 명령어 해석기라고도 부르며, 해석된 사용자 입력 명령어를 kernel(커널)에게 전달합니다. kernel은 하드웨어를 제어하는 코드를 통해 소프트웨어와 커뮤니케이션을 하며, 시스템의 모든 자원을 통제/관리하는 역할을 수행합니다.

 

 

 

3.리눅스의 특징과 종류

 

리눅스는 유닉스(Unix)라는 운영체제를 기반으로 하고 있으며, 뛰어난 안정성과 보안성, 높은 신뢰성과 성능이 특징입니다. 시스템의 자원을 효율적으로 관리 및 사용할 수 있으며, 멀티 유저(multi-user)와 멀티 태스킹(multi-tasking)을 지원하고 있습니다.

Multi-User: 여러사용자가 동시에 하나의 시스템에 접근할 수 있음
Multi-Tasking: 여러 개의 task(작업)를 동시에 실행하고, 교대로 컴퓨터의 자원을 사용할 수 있는 기능

리눅스는 CLI(명령어창)와 GUI(그래픽)를 모두 지원하고 있으며, 다양하고 강력한 네트워킹 기능 덕분에 서버 OS로 적합합니다. PC 서버에서도 엔터프라이즈 급의 성능을 제공하고, 성능이 낮은 PC에서도 작동합니다. 

오픈소스 프로젝트이기 때문에 커널 소스코드 및 모든 관련 자료가 공개되어 빠른 발전을 지원하고 있습니다.

 

 

4.권한

- sudo를 입력함으로써 리눅스에서 모든 권한을 가지고 있는 최고 관리자 root의 권한을 획득할 수 있습니다.

- r(읽기, 4), w(쓰기, 2), x(실행, 1)로 구성되는데, 소유자/그룹/그외사용자 3개의 덩어리로 이루어집니다. 예를 들어, rw-r--r--의 경우, 소유자는 읽기와 쓰기가 가능하고 그룹과 그외 사용자는 읽기만 가능하다는 뜻.

-권한 변경= chmod [파일권한] [파일 위치 또는 이름] / 777은 모든 사용자가 모든 권한을 얻는다는 의미.

-소유자 변경 =chown [소유할유저]:[소유할 그룹] [파일 위치 또는 파일명]을 입력하면 되며 root 권한이 있어야 실행이 가능.

 

5.파일시스템의 종류

  1. FAT: File Allocate Table
    파일 할당 테이블이라고 말하며, 디지털 카메라 등에 장착되는 대부분의 메모리 카드와 수많은 컴퓨터 시스템에 널리 쓰이는 파일 시스템의 종류입니다. 하지만, 너무 단순한 자료구조 탓에 작은 파일이 여러개 있을 경우 공간 활용을 제대로 하지 못한다는 단점이 있습니다. 용량이 계속 커지고 있으며, 높은 호환성을 갖습니다.
  2. NTFS: New Technology File System
    Windows NT 계열의 새로운 파일 시스템으로 기존의 FAT 구조를 대체하기위해 만들어졌습니다. 시스템 고장 및 손상 시, 디스크 볼륨을 재구성하여 일관성있는 상태로 복구가 가능하여 안정성이 높고, 보안성도 FAT보다 향상된 파일 시스템입니다.
  3. EXT: EXTended file system
    확장 파일 시스템의 준말로 리눅스의 기본 파일 시스템입니다. 성능을 향상시키면서 시리즈로 출시되고 있는데, 기본으로 사용되던 2차 확장 파일 시스템 EXT2를 완벽하게 호환하는 EXT3와 EXT4가 있습니다. EXT3부터 큰 규모의 디렉토리를 접근하기 위해 해쉬를 통해 접근하는 H-tree를 사용하여 데이터 검색이 보다 용이해졌고, EXT4는 지금까지 중 가장 큰 초대형 파일 시스템입니다.

 

 

6. 리눅스의 디렉토리 구조

 

모든 디렉토리는 최상위 디렉토리인 root이 하위로 만들어집니다.

  • bin: 기본 명령어들이 저장된 폴더
  • boot: 리눅스의 boot(시작)와 관련한 명령이 들어간 폴더
  • etc: 리눅스의 거의 모든 설정 파일이 들어간 폴더
  • home: 말그대로 홈 폴더, 로그인한 계정에 따라 폴더가 만들어짐
  • lib: 리눅스 및 각종 프로그램에서 사용되는 라이브러리들의 폴더

 

 

7. 리눅스 프로세스

 

프로세스란, 시스템에서 메모리에 적재되어 실행되고 있는 모든 프로그램을 말합니다.

프로그램은 코딩을 통해 만든 코딩(명령어)의 집합체이고, 프로세스는 프로그램이 실행되는 과정 중에 현 상황을 말합니다. 즉, 실행되고 있는 프로그램이 곧 프로세스이며, RAM에 저장됩니다. 한 프로그램 내에서 여러 프로세스가 생성된다면 이를 멀티 프로세싱이라고 말합니다. 이들은 모두 운영체제에 의해 관리됩니다.

 

프로세스의 특징
  1. 모든 프로그램은 실행될 때 하나 이상의 프로세스를 갖는다.
  2. 병행적으로 실행이 가능하다.
  3. 부모(PPID), 자식(fork를 통해 복사된 것) 프로세스가 있게 된다.
  4. 커널(kernel)에 의해 관리된다.
  5. 모든 프로세스에는 소유자(리눅스 계정)가 있다.
  6. 프로세스마다 식별을 위한 ID(PID)가 부여된다.
PID: 모든 프로세스는 고유한 PID 를 가지고 있으며, 1번은 init 프로세스, 2번은 kthreadd(kernel thread demon) 프로세스 가 실행됩니다.
init 프로세스는 나머지 모든 시스템 프로세스의 부모 프로세스로,  kthreadd가 아닌 다른 모든 프로세스들은 모두 init 프로세스를 fork하여 생성된 것 입니다. 또한, kthreadd는 이 후에 실행되는 모든 프로세스의 부모 프로세스 입니다.

관련 명령어

프로세스 목록 보기
 ps [option]
-e: 현재 실행중인 모든 프로세스 정보 출력
-f: 모든 정보 확인
-a: 실행중인 전체 사용자의 모든 프로세스 출력
-u: 프로세스를 실행한 사용자와 프로세스 시작 시간 등을 추력
-x: 터미널 제어 없이 프로세스 현황 보기
조합하여 사용하는 것도 가능
프로세스 종료
kill [option] [PID]
-1: 재실행(SIGHUP)
-9: 강제종료(SIGKILL)
-15: 정상종료(SIGTERM)

 

 

8. job

 

리눅스에서 터미널을 통해 작동하는 거의 모든 명령어는 foreground에서 작동합니다.

즉, 우리가 지금 보고 있는 화면에서 그대로 작동한다는 것입니다. 하지만, &명령을 통해 background를 사용하여 보이지 않는 곳에서도 돌아가게 할 수 있습니다.

job은 그 백그라운드로 실행되는 작업을 보여주고 효율적으로 사용할 수 있게 해주는 명령어입니다. job은 프로세스와 달리 터미널 명령을 통한 작업만을 의미하며, 각 터미널마다 job은 따로 존재합니다. 즉, 터미널이 종료되면 job도 함께 종료되는 의존적 형태입니다. 명령어 뒤에 &를 붙이면 백그라운드에서 실행이 되는데, 이때의 목록은 jobs를 통해 확인할 수 있습니다. 프로세스와 마찬가지로 ps 명령어로 해당 프로세스의 PID를 알아내어 종료하는 것도 가능하고, 옵션 없이 kill %[job 번호]를 통해서도 종료가 가능합니다.

 

sleep 명령어를 백그라운드에서 실행하고 종료하는 과정

$ sleep 500 &
$ sleep 700 &
$ job

결과 화면

[1] - 실행중 sleep 500 &
[2] + 실행중 sleep 700 &

sleep 500 & 종료할 때는 kill %1을 입력

 

9. 작업 예약

9-1 at

지정된 시간에 1회 실행되는 작업 예약 명령어로 시간이 되면 수행되고 작업 리스트에서 사라집니다.

at [option] [time] [date] [+증가시간]

-m: 출력 결과와 함께 작업이 완료될 때 사용자에게 메일을 보냄(결과가 없더라도 메일을 보냄)
-f: 특정 스크립트 파일 등을 실행할 때 사용
at now + 3 hours -f rupy.sh지금으로부터 3시간 뒤 rupy.sh를 실행하라는 의미
-l: 예약된 작업 목록을 출력하
-v: 작업이 수행될 정확한 시간을 출력
-d: 예약된 작업을 삭제

 

9-2  crontab

crontab은 at과는 달리 주기적으로 예약을 실행할 수 있습니다. 

crontab [option] [option에 맞는 text]
-l: 현재 계정의 설정된 crontab 정보를 보여줌
-e: 현재 계정의 crontab 정보를 수정
-r: 현재 계정의 crontab 정보를 모두 삭제
-u: 특정 사용자의 crontab 정보를 다루게 해주며 root 권한 필요해 sudo와 함께 사용

 

10. ssh

Secure SHell의 준말로 네트워크를 통해 다른 컴퓨터에 접근하거나 그 컴퓨터에서 명령을 실행할 수 있도록 해주는 프로토콜입니다. 즉, SSH를 통해 다른 컴퓨터에서 리눅스에 접속하여 명령어 및 프로그램을 실행할 수 있습니다.

Telnet: SSH 이전에 다른 컴퓨터에 접근하거나 명령을 실행하는 등을 할 수 있도록 해주는 프로토콜이었으나, 보안적으로 매우 치명적인 결함이 존재. 패킷 데이터가 암호화되어있지 않아서 도중에 탈취될 경우 비밀번호 등의 민감정보가 노출되는 큰 단점이 존재. SSH에는 데이터가 암호화되어 있음.

우분투에서는 openssh라는 패키지를 통해 SSH를 구동할 수 있는데, 우분투 설치 후에는 기본적으로 openssh-client만이 설치되어 있습니다. 다른 컴퓨터에서 우분투에 접속하려면 openssh-server 패키지를 설치해야 합니다.

dpkg -l | grep openssh 명령어를 통해 openssh 설치 여부 확인이 가능합니다.

sudo apt-get install open-ssh-server를 통해 설치가 가능합니다.

 

ssh를 사용하기 위해서는 다른 컴퓨터에서 해당 컴퓨터에 어떤 포트로 접속할지를 알아야 합니다.

이를 위해 sudo netstat -antp 명령어를 통해 실행하고 있는 ssh의 포트를 확인할 수 있습니다. PID와 함께 현재 실행중인 프로세스들과 포트를 확인할 수 있습니다.

 

ssh 포트 접속하기

ssh [서버 아이디] @[IP || 서버이름 || 도메인을 입력하면 해당 서버로의 접속이 가능합니다.

 

 

 

RUPY=비버

긴 글 읽어주셔서 감사합니다 - RUPY -

 

 

댓글