리눅스 환경구성 기초

728x90

이번 포스팅은 Tacademy의 리눅스 환경구성 기초 강의를 수강하고 요약한 내용입니다.

리눅스 소개 👋🏻

우리에게 컴퓨터는 ?

리눅스와 관련된 키워드

터미널, 쉘스크립트 등 외계언어들이 가득하다!

리눅스, 편안하게 쓸 수 없을까?

리눅스는 왜 어려운걸까?

GUI vs CLI 이 두가지로 볼 수 있다.

GUI (Graphical User Interface)

  • 한 화면에 많은 정보를 담을 수 있다
  • 눈으로 보고 대상을 선택 가능하다
  • But, 만약 한 화면에서 다양한 일을 하게된다면...?

CLI (Command-Line Interface)

  • 눈에 보이는 거라곤 고작 터미널 하나
  • 뭔가 하고 싶지만 몰라서 할 수가 없다
  • But, 까막눈이면 몰라도, 숙련자에겐..?

리눅스를 잘 다루는 것?

리눅스 환경에서 파일, 프로그램을 얼마나 잘 다루는가? + CLI 환경이 얼마나 익숙한가?

리눅스란?

  • 리눅스 커널을 사용하는 Unix 계열 운영체제
  • 대규모 오픈소스 프로젝트 by 리누즈 토르발스

커널? 운영체제?

보통 커널의 종류에 따라 ~~ 계열이라 불린다. Linux Kernel을 쓰게 된다면 리눅스계열이라 불린다.

이 말고도 엄청나게 많다.

Linux 시작

주의! 본 과정은 AWS EC2 서버에서 실습이 진행된다.

이미 이전에 AWS EC2 서버를 만든적이 있어, 튜토리얼을 따라 진행하지는 않았다. 추가적으로 Window의 경우 터미널 사용을 위해서 Putty 프로그램이나 OpenSSH Client를 사용해야한다. (맥의 경우 그냥 터미널을 사용하면 된다!)

사전 지식

  • SSH (Secure Shell): 원격으로 다른 컴퓨터에 연결할 수 있도록 해주는 프로그램 (+ 보완연결)
  • Port: 목적지(Host)의 프로세스에 연결하기 위한 구분 123.234.345.456:3434

리눅스 활용 (리눅스 기본 명령어 및 활용법)

정리중... (추후 링크 첨부)

리눅스 이해 (계정과 권한, SUDO, PATH)

Tool 역할
apt-get 필요한 패키지, 프로그램을 설치 할 수 있는 패키지 관리 도구
htop top을 좀 더 예쁘게 꾸며서 보여준다
nohup 내 스크립트가 터미널을 끄더라도 계속 실행시키고 싶을 때 &와 함께 백그라운드로 실행
screen(tmux) nohup을 통해 백그라운드로 가버린 프로세스는 다시 볼 수 없지만 Screen을 띄워서 실행하면, 해당 세션을 다시 복원할 수 있다

계정과 권한

권한 변경

권한 변경에 숫자가 3개인데, 각 숫자는 앞에서부터 Owner, Group, Others 에 대한 권한이다. (각 숫자는 이진법을 의미하는 것이고 권한 부여는 표에 적혀있는 대로이다)

chmod뿐만아니라 chown 이라는 명령어로 파일의 owner를 변경할 수도 있다!

소유자의 권한, 그룹의 권한, 소유자가 아닌 사람의 권한을 구분 한다. ('보안')

Sudo ?

Root 사용자라는 것은 모든 권한을 가진 Super 관리자이다.

But Root 계정은 너무 강력하다보니 남용하면 안된다!

시스템의 중요한 부분을 변경하거나 업데이트해야 할 때, Root 계정 접속을 남발하면 귀찮기도 하고, 보안상 좋지 않기 때문에 일시적으로 Root의 권한을 위임 받을 수 있는 방법이 "sudo" 이다. (지정된 그룹에서만 sudo를 쓸 수 있다)

환경 변수 $PATH

터미널에 echo $PATH 명령어 입력시

디렉토리 용도 사용권한
/bin 기본적인 명령어 일반 사용자
/sbin 시스템 관리를 위한 명령어 슈퍼유저(root)
/usr/bin /bin에 있는 명령을 제외한 기본적인 명령어 일반 사용자
/usr/sbin /sbin에 있는 명령을 제외한 시스템 관리를 위한 명령어 슈퍼유저(root)

프로그램을 실행할 때 자동으로 참조하는 절대경로의 모음 왼쪾으로 갈수록 우선순위가 높으며, 발견 즉시 바로 실행 됨!

다른 환경 변수

터미널에 export 명령어 입력시

  • 프로그램을 실행할 때 자동으로 참조하는 절대경로의 모음
  • export 명령어로 환경변수를 추가 (일시적)

쉘 스크립트 기본

쉘 스크립트를 왜 쓸까?

반복적이고, 똑같은 작업이 너무 귀찮으니, 자동으로 해버리자!

셔뱅 (Shabang)

#!{인터프리터 위치}
  • 셸 스크립트 시작할 때 맨 처음에 기입
  • 아무것도 아닌 것 같지만, 스크립트를 해석하는 인터프리터를 지정하는 것!
  • ex) #!/usr/bin/python3

작성한 셸 스크립트 실행하는 법 (2가지 방법)

첫번째 방법

bash {파일명}

이렇게 실행할 경우, 쉘 스크립터에서 '인터프리터'를 지정하지 않아도 가능하다! (실행할 때, 직접 지정했기 때문이다)

두번째 방법
(먼저 일반문서인 쉘스크립트를 실행파일로 변경하는 작업을 진행한다!)

chmod 7xx {파일명}

권한을 7xx로 주는 이유는, 나에게 모든 권한을 부여하겠다는 뜻이다. (그룹이나 다른 사용자들에게는 상황에 맞게 권한을 부여하면 된다)

권한을 부여한 뒤에, ls 명령어로 파일을 조회해보면, 이전과는 다르게 해당 파일이 다른색상으로 변경된다!

실행 방법

./{파일명}

그리고 바로 실행을 하면 될 것 같지만, 안된다! 그 이유는 현재 위치가 쉘 스크립트가 위치한 파일이 아니기 때문이다(실행이 된다면, 이미 파일위치로 경로를 설정한 상태이다!).

변수 (Variable)

  • 선언은 VAR=?
  • 사용은 $VAR
  • 특수한 경우 ${VAR}
  • 매개변수 $0, $1 ..., $*, $@
#!/bin/bash

MY_VAR=13
string=12312abcva312

echo "MY_VAR" $MY_VAR
echo "string" $string
echo "file_name:" $0
echo "first:" $1
echo "second:" $2
echo "all:" $*

echo ${string:1}
echo ${string:0:5}

echo `expr 1+2`
echo `expr 1 + 2`
echo $((1+2))
echo $((1 + 2))

산술 덧셈을 추가 처리가 필요하다.
입력 매개변수는 기본적으로 스트링

조건문, 비교 연산자

  • if then ~ elif then ~ fi
  • 정수 -eq, -ne, -gt, -lt, -ge, -le
  • 문자열 ==. !=, -z, -n
#!/bin/bash

echo "What Number?"

number=3

if [ $1 == $number ]
then 
    echo "Correct!"

elif[ $1 != $number ]
then 
    echo "Retry .."
fi

정수와 문자열의 비교방식이 다르다.
괄호를 2개를 넣는다거나[[]], 문자열로 인식되도록 변환하는 방법이 있다.

반복문

  • while 조건에 만족한다면
  • for wlwjdehls qjadnl dksdptj
  • break, continue, exit로 제어
#!/bin/bash

count=$(($1))

echo "loop" $count
while [ $count -gt 0 ]
do
    echo $count 
    count=$(( $count - 1 ))
done

echo "parameters:"
for a in $*
do
    echo $a
done

어떤 명령어나 흐름을 반복하고 싶을 때

스크립트 작성시 유의사항

  1. Space가 필요한 곳은 확실히 넣어줘야 한다.
  2. 중간에 에러가 나더라도 계속 진행
  3. 엔터 잘못 쳤다가... 전부 날려먹을 수도 있다.

(변수 입력시 VAR=2 와 같이 전부 붙여써야한다.. 추가적으로 rm -rf 쓸때는 조심 또 조심하자)
앞에 실행이 다 안되더라도 계속 실행이 되버리기 때문에, 더더욱 조심해야한다!

728x90

'Infra' 카테고리의 다른 글

SpringBoot Application + ECS 배포  (0) 2023.08.20
쿠버네티스 소개  (0) 2022.12.03