티끌모아 로키산맥 🏔
search
로ᄏl
배움에 끝은 없다... 개발 또한 그러하다.
Today
Yesterday
이번 포스팅은 Tacademy의 리눅스 환경구성 기초 강의를 수강하고 요약한 내용입니다.
리눅스와 관련된 키워드
터미널, 쉘스크립트 등 외계언어들이 가득하다!
리눅스는 왜 어려운걸까?
GUI vs CLI 이 두가지로 볼 수 있다.
리눅스 환경에서 파일, 프로그램을 얼마나 잘 다루는가? + CLI 환경이 얼마나 익숙한가?
보통 커널의 종류에 따라 ~~ 계열이라 불린다. Linux Kernel을 쓰게 된다면 리눅스계열이라 불린다.
이 말고도 엄청나게 많다.
주의! 본 과정은 AWS EC2 서버에서 실습이 진행된다.
이미 이전에 AWS EC2 서버를 만든적이 있어, 튜토리얼을 따라 진행하지는 않았다. 추가적으로 Window의 경우 터미널 사용을 위해서 Putty
프로그램이나 OpenSSH Client
를 사용해야한다. (맥의 경우 그냥 터미널을 사용하면 된다!)
정리중... (추후 링크 첨부)
Tool | 역할 |
---|---|
apt-get | 필요한 패키지, 프로그램을 설치 할 수 있는 패키지 관리 도구 |
htop | top을 좀 더 예쁘게 꾸며서 보여준다 |
nohup | 내 스크립트가 터미널을 끄더라도 계속 실행시키고 싶을 때 &와 함께 백그라운드로 실행 |
screen(tmux) | nohup을 통해 백그라운드로 가버린 프로세스는 다시 볼 수 없지만 Screen을 띄워서 실행하면, 해당 세션을 다시 복원할 수 있다 |
권한 변경에 숫자가 3개인데, 각 숫자는 앞에서부터 Owner, Group, Others 에 대한 권한이다. (각 숫자는 이진법을 의미하는 것이고 권한 부여는 표에 적혀있는 대로이다)
chmod
뿐만아니라 chown
이라는 명령어로 파일의 owner를 변경할 수도 있다!
소유자의 권한, 그룹의 권한, 소유자가 아닌 사람의 권한을 구분 한다. ('보안')
Root 사용자라는 것은 모든 권한을 가진 Super 관리자이다.
시스템의 중요한 부분을 변경하거나 업데이트해야 할 때, Root 계정 접속을 남발하면 귀찮기도 하고, 보안상 좋지 않기 때문에 일시적으로 Root의 권한을 위임 받을 수 있는 방법
이 "sudo" 이다. (지정된 그룹에서만 sudo를 쓸 수 있다)
터미널에 echo $PATH 명령어 입력시
디렉토리 | 용도 | 사용권한 |
---|---|---|
/bin | 기본적인 명령어 | 일반 사용자 |
/sbin | 시스템 관리를 위한 명령어 | 슈퍼유저(root) |
/usr/bin | /bin에 있는 명령을 제외한 기본적인 명령어 | 일반 사용자 |
/usr/sbin | /sbin에 있는 명령을 제외한 시스템 관리를 위한 명령어 | 슈퍼유저(root) |
프로그램을 실행할 때 자동으로 참조하는 절대경로의 모음 왼쪾으로 갈수록 우선순위가 높으며, 발견 즉시 바로 실행 됨!
터미널에 export 명령어 입력시
반복적이고, 똑같은 작업이 너무 귀찮으니, 자동으로 해버리자!
#!{인터프리터 위치}
첫번째 방법
bash {파일명}
이렇게 실행할 경우, 쉘 스크립터에서 '인터프리터'를 지정하지 않아도 가능하다! (실행할 때, 직접 지정했기 때문이다)
두번째 방법
(먼저 일반문서인 쉘스크립트를 실행파일로 변경하는 작업을 진행한다!)
chmod 7xx {파일명}
권한을 7xx로 주는 이유는, 나에게 모든 권한을 부여하겠다는 뜻이다. (그룹이나 다른 사용자들에게는 상황에 맞게 권한을 부여하면 된다)
권한을 부여한 뒤에, ls 명령어로 파일을 조회해보면, 이전과는 다르게 해당 파일이 다른색상으로 변경된다!
실행 방법
./{파일명}
그리고 바로 실행을 하면 될 것 같지만, 안된다! 그 이유는 현재 위치가 쉘 스크립트가 위치한 파일이 아니기 때문이다(실행이 된다면, 이미 파일위치로 경로를 설정한 상태이다!).
#!/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))
산술 덧셈을 추가 처리가 필요하다.
입력 매개변수는 기본적으로 스트링
#!/bin/bash
echo "What Number?"
number=3
if [ $1 == $number ]
then
echo "Correct!"
elif[ $1 != $number ]
then
echo "Retry .."
fi
정수와 문자열의 비교방식이 다르다.
괄호를 2개를 넣는다거나[[]], 문자열로 인식되도록 변환하는 방법이 있다.
#!/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
어떤 명령어나 흐름을 반복하고 싶을 때
(변수 입력시 VAR=2 와 같이 전부 붙여써야한다.. 추가적으로 rm -rf
쓸때는 조심 또 조심하자)
앞에 실행이 다 안되더라도 계속 실행이 되버리기 때문에, 더더욱 조심해야한다!
SpringBoot Application + ECS 배포 (0) | 2023.08.20 |
---|---|
쿠버네티스 소개 (0) | 2022.12.03 |