728x90
반응형

DevOps 54

Shell Script - 5, Loop

이제 다양한 문자를 쓸 줄 알았으니 Loop와 같이 반복문을 알아보자 쉘 스크립트에서는 반복문도 사용할 수 있다. C 언어에서의 for를 똑같이 쓴다. 다만 형식만 다르다. for.sh #!/bin/sh for i in 1 2 3 4 5 do echo "Looping ... number $i" done 결과는?? for2.sh #!/bin/sh for i in hello 1 * 2 goodbye do echo "Looping ... i is set to $i" done 결과는?? ?? 2번째는 조금 이상하다.라고 느낄 수 있다. 하지만 argument 대로 정상적으로 들어왔다. argument를 for 문에서 정상적으로 설정해야 의도한대로 된다는 것을 명심하자 그 다음은 while 반복문이다. while..

DevOps/Shell 2022.11.23

Shell Script - 4, escape character

이전 글에서 말하다 말았던 escape character에 대해서 더 알아보자 Shell에서 특수문자, 예약된 문자를 쓰고 싶지만 예약되었기 때문에 쓰지 못하는 문자가 있을 수 있다. 그렇다면 escape 문자를 사용함으로써 쓸 수 있다. 예를 들면 “ 같은 쌍따옴표를 쓰고 싶다면 escape를 꼭 써야만 한다. 아래 예시는 다르게 출력된다. $ echo Hello World Hello World $ echo "Hello World" Hello World 하지만 따옴표는 출력되지 않는다. 이렇게 Hello "World"따옴표를 출력하고 싶다면 어떻게 해야할까? 이렇게 하면 될까? $ echo "Hello \"World\"" 따옴표가 다행히 잘 나왔다. 그렇다면 * 는 어떻게 쓸 수 있을까? wildcar..

DevOps/Shell 2022.11.23

Shell Script - 3, Wildcard

변수에 대해 일부 배웠다면 그 다음은 와일드카드, wildcard를 알아보자 wildcard (*) : asterisk 쉘 스크립트에서 엄청나게 유용하지는 않지만 알아둘만 하다. 사실 나는 많이 쓴다. 메타문자에서 *이 모든 문자라고 생각한다면 이해하기 쉽다. 만약 파일(하위 파일 포함)을 /tmp/a 에서 /tmp/b로 복사하려면 어떻게 해야하는가? html이나 txt만 옮기려면? $ cp /tmp/a/* /tmp/b/ $ cp /tmp/a/*.txt /tmp/b/ $ cp /tmp/a/*.html /tmp/b/ 만약 모든 파일들의 확장자를 .bak으로 바꾸고 싶다면..? $ mv *.txt *.bak

DevOps/Shell 2022.11.23

Shell Script - 2, Variable(1)

변수는 다른 프로그래밍 언어와 비슷하게 ‘=’을 사용하여 선언하지만 주의할 것은 space가 없이 선언해야 한다는 점이다. 또한 Shell에서는 변수의 타입은 지정하지 않는다. ** 모두 문자열로 저장됨, 하지만 숫자로도 연산할 수 있는 기능이 있음(expr) VAR=value(O) VAR = value(X) 그리고 variable은 하나의 값만 가질 수 있다. 따라서 = 뒤에는 하나의 argument만 와야 한다. 예시를 보자 var.sh #!/bin/sh MY_MESSAGE="Hello World" echo $MY_MESSAGE 실행하면 Hello World가 뜬다. 변수에 저장된 것이 echo 된다. variable로 연산도 될까? $ x="hello" $ expr $x + 1 expr: non-n..

DevOps/Shell 2022.11.21

Shell Script - 1, 작성하기

https://www.shellscript.sh/ 이 글 시리즈는 위 링크를 참조 기본 전제 $(Dollar Sign) : 현재 Command Line 환경에서 작동하고 있다는 뜻 **변수를 사용할 때도 $를 쓴다. EX) $ echo '#!/bin/sh' > my-script.sh $ echo 'echo Hello World' >> my-script.sh $ chmod 755 my-script.sh $ ./my-script.sh Hello World 위 명령들은 표준 입력을 my-script.sh 파일로 만들고 이어서 표준 입력을 파일에 추가하고 권한을 바꾸고 sh파일을 실행한 것이다. my-script.sh를 열어보면 아래와 같이 저장되어 있다. #!/bin/sh echo Hello World sh ..

DevOps/Shell 2022.11.21

Source tree, 소스트리로 형상관리 쉽게 하기

형상관리의 중요성이나 무엇인지에 대한 개념은 다른 곳에서 알아보고 우리는 형상관리 솔루션 중 하나인 소스트리를 알아볼 것이다. 알아보자 우선 github이 일반적이다. 우선 소스트리 다운로드 여기서 다운받자 https://www.sourcetreeapp.com/ 그 다음은 git repo의 copy link를 통해 저장소 복사 정말 간단하게 소스트리에 원격 저장소 링크에 복사한 링크를 써넣기 이제 원격와 로컬이 연동 되었다. 정말 간단하다. 로컬에서 소스를 업로드하는 방법을 알아보자 파일상태를 보자 수정된 사항이 있을 경우 스테이지에 올라가지 않은 파일에 파일 목록 존재 여기서 진짜로 올릴 것들을 구분한다. 커밋하기 모두 스테이지에 올리기 => 대부분 수정한 모든 것을 올림 하단의 박스에 수정된 내용에 ..

DevOps 2022.11.12

PlantUML, UML 직접 그리지 말고 코드로 그리자

수많은 UML을 그릴 수 있는 도구가 있지만 왜 굳이 PlantUML을 쓰느냐? **명확한 장점이 있다. 코드로 정의하기 때문에 절대로 그래프가 왜곡될 수가 없다. A와 B가 연결되었다는 것은 코드로 분명 표시되기 때문에 절대로 그 관계가 다른 것 때문에 바뀌거나 그렇지 않다. 또한 코드로 관리하기 때문에 유지 보수가 간단하다. 다만 배치를 조작하는 것은 어렵다. 알아서 만들어주기 때문에 오히려 불편하다는 사람도 있다. 정리하면 오해할 가능성이 현저히 낮고 작성을 하기도 쉽고 코드로 이해하려면 할 수도 있고 유지 보수 비용도 적다. 배치에 신경쓰는 사람만 아니라면 코드로 써보자 PlantUML 준비물 VScode, Java, VScode extension "Markdown Preview Enhanced"..

DevOps 2022.11.12

GSLB, 트래픽이 높을 때 로드밸런싱하기

LB, 로드 밸런싱 로드 밸런싱에는 여러가지 종류가 있다. L4, L7이 대표적이다. 그 중에서 L7은 현재 어떻게 쓰이고 있는지 GSLB를 통해서 알아보자 GSLB란 무엇일까? Global Server Load Banlancing은 DNS기반으로 사용자가 원하는 엔드포인트에 안정적인 트래픽을 로드밸런싱하는 서비스를 말한다. 요약하자면 - DNS 기반의 로드밸런싱 서비스 - 헬스 체크 모니터링이 가능한 DNS - 서비스의 안정성을 높일 수 있는 다양한 로드밸런싱 정책을 적용할 수 있는 솔루션 서비스가 제공하는 기능은 크게 4가지가 있다. 트래픽 분산(Site Load Banlancig) 재난복구(Disaster Recovery) 성능(Network Proximity, Geographic Proximity..

DevOps 2022.11.12

프로메테우스, Prometheus Up & Running - ch.1

Chapter 1.What is Prometheus? 핵심만 알아보자 영어와 같이 적겠다. 시작해보자 Prometheus is an open soruce, metrics-based monitoring system. It has a simple yet powerful data model and a query language that lets you analyse how your applications and infrastrucgture are performing. 프로메테우스는 우선 오픈소스 이면서 메트릭 기반의 모니터링 시스템이다. 간단할 뿐만 아니라 data model이 잘 갖추어져 있고 그에 따른 query (PromQL)이 있어서 실제로 인프라에서 작동하는 어플리케이션에 영향을 거의 주지 않고 작동..

DevOps/Prometheus 2022.11.07
728x90
반응형