반응형

쉘 스크립트를 사용하다 보면 사용자 입력을 받아야 되는 경우가 많습니다.

 

그 때 보다 세련되고 있어??? 보이게 끔 받을 수 있는 방법을 소개하고자 합니다.

 

getopt라는 명령어 인데 먼저 ... 샘플코드를 보도록 하죠

 

 #!/bin/bash

## 도움말 출력하는 함수
help() {
        echo "splt [OPTIONS] FILE"
                echo "    -h         도움말 출력."
                echo "    -a ARG     인자를 받는 opt."
                echo "    -b ARG     인자를 받는 opt2."
                exit 0
}
while getopts "a:b:h" opt
do
case $opt in
a) arg_a=$OPTARG
echo "Arg A: $arg_a"
;;
b) arg_b=$OPTARG
echo "Arg B: $arg_b"
echo "$arg_b"
;;
h) help ;;
?) help ;;
esac
done

 

getopt를 사용하는 이유는

 

1. 다양한 입력 값이 존재할 경우 사용자와 개발자의 편의를 보장하기 위함 이고

2. 스크립트를 보다 체계적으로 관리할 수 있기 때문입니다.

 

가장 중요한 부분은 아래의 구분인데

 

while getopts "a:b:h" opt

보통 다음과 같은 형식을 주로 사용하고 getopt는 첫번째 파라미터로 옵션으로 사용될 문자열을 입력 받고 다음에는 옵션으로 활용되는 변수를 사용합니다.

 

getopt를 사용할 때 주의해야 할 점은 ":" 입니다. 기존적으로 getopt는 한개의 문자만을 구분자로 사용하며 사용할 문자열 뒤에 ":"을 붙이게 되면 뒤에 Value가 붙게 된다는 것을 의미합니다

 

스크립트 실행 결과는 다음과 같습니다

 

root@ubuntu:/shell# ./getopt.sh -a hello
Arg A: hello

root@ubuntu:/shell# ./getopt.sh -b hi
Arg B: hi
hi

root@ubuntu:/shell# ./getopt.sh -h
splt [OPTIONS] FILE
    -h         도움말 출력.
    -a ARG     인자를 받는 opt.
    -b ARG     인자를 받는 opt2. 

 

 

 

반응형
반응형

프로세스 스케줄러

 

1. 프로세스를 작동시키는 커널의 서브시스템

2. 어떤 프로세스를 얼마나 오랫동안 실행할 것인지를 결정

3. 실행중인 시스템 프로세스에 프로세서(CPU) 동작시간이란 자원 할당

 

스케줄러

 

1. 리눅스 같은 멀티태스킹 운영체제의 기본요소

2. 스케줄러의 최대 사용률을 끌어내며

3. 사용자에게 여러개의 프로세스가 동시에 실행되는 느낌을 줌

 

스케줄러의 원리

1. 프로세서 작동시간을 최대한 활용할 수 있는 실행 가능한 프로세스가 있다면, 어떤 프로세스라도 실행하고 있어야 한다.

2. 시스템의 프로세서 개수보다 실행가능한 프로세스의 개수가 많은 경우라면 특정 순간에 일부 프로세스는 실행 중이 아니며 대기하게 된다.

 

스케줄러가 해결해야하는 근본적인 문제는 실행 가능한 프로세스가 여럿 주어졌을 때 다음에 어떤 프로세스를 실행할 것 인가 이다.

 

반응형
반응형

분기문의 한종류인 switch-case 문에 대해서 알아보고자 합니다.

 

 case $VAR in

    $CASE1)

           수행문1

           ;;

    $CASE2)

           수행문2

           ;;

    $CASE3)

           수행문3

           ;;

    *)

           수행문4

 esac

 

다음과 같은 형식으로 사용이 되는점을 확인해주시고 간단한 샘플 코드로 마무리하도록 하겠습니다.

 

#!/bin/bash

echo "Enter a number between 1 and 10. "
read NUM

case $NUM in
1) echo "one" ;;
2) echo "two" ;;
3) echo "three" ;;
4) echo "four" ;;
5) echo "five" ;;
6) echo "six" ;;
7) echo "seven" ;;
8) echo "eight" ;;
9) echo "nine" ;;
10) echo "ten" ;;
*) echo "INVALID NUMBER!" ;;
esac 

 root@ubuntu:/shell# ./switch.sh
Enter a number between 1 and 10.
10
ten

 

 

반응형
반응형

쉘 스크립트에서 사용하는 while 문에 대해 알아보도록 하겠습니다 .

 

기본적인 형식은 다음과 같습니다.

 

 while [ 조건문 ]

 do

 

   수행문

 

 done

 

간단하게 설명을 하면 for문과의 차이점은 소괄호 대신 대괄호를 쓴다는 점과 앞에 설명한 조건문을 while에 사용한다는 점이 있습니다.

 

그리고 수행문안에 break를 넣어 특정조건이 발생했을때 loop를 벗어날수도 있습니다.

 

그럼 2가지의 예제를 보도록 하겠습니다

 

 

  #!/bin/bash

  i=1


  while [ $i -le 5 ]

  do

        echo $i

        i=$(($i+1))

 done

 root@ubuntu:/shell# ./while.sh
 1
 2
 3
 4
 5

 

 

  #!/bin/bash

  i=1

 
  while [ $i -le 5 ]

  do

    echo $i

    i=$(($i+1))
    if [ $i -eq 3 ]
    then
        break
    fi

  done

 root@ubuntu:/shell# ./while_break.sh
  1
  2

 

 

 

반응형
반응형

쉘 스크립트에서 반복문으로 많이 사용하는 for문에 대해서도 알아보겠습니다.

 

for문은 크게 2가지 형태로 사용됩니다.

 

 < 1형식 >

 for (( i=0 ; 조건문 ; 증감식 ))

 do

    수행문

 done

  < 2형식 >

 for i in  '1' '2' ...

 do

    수행문

 done

 

1형식은 흔히 C, C++에서 사용하는 형식이고 2형식은 JAVA, C# 같은 언어 에서 사용하는 형식입니다. 필요할 때 필요한 방법을 사용하면 될거 같습니다. 1형식은 숫자를 일정한 규칙에 의해 증가시키거나 반복 시킬때 유용하고 2형식은 불규칙한 규칙 (문자열 등등)을 사용할 경우 유용합니다.

 

그럼 샘플 코드를 통해 결과를 보도록 하겠습니다.

 

< 1형식 >

 #/bin/bash

for (( i=0;i<10;i++ ))
do
        echo "i = $i"
done

 root@ubuntu:/shell# ./for_1.sh
i = 0
i = 1
i = 2
i = 3
i = 4
i = 5
i = 6
i = 7
i = 8
i = 9

 

< 2형식 >

 

 #/bin/bash

for string in "cat" "dog" "caw"
do
        echo "string = $string"
done

 root@ubuntu:/shell# ./for_2.sh
string = cat
string = dog
string = caw

 

 

 

 

 

 

 

 

 

 

반응형
반응형

서버 및 PC에서 가장 중요한 요소는 CPU 그리고 메모리를 생각할 수 있는데 메모리에 대해서 알아보는 시간을 갖도록 하겠습니다.

 

PC에는 일반적으로 DIMM, UDIMM을 사용하게 되고 서버에서는  UDIMM, RDIMM, RLDIMM이 있고 최근에는 NVDIMM도 출시되고 있습니다.

 

간략하게 정리를 하면...

 

DIMM : 아무기능 없는 메모리

UDIMM : ECC 기능 (Unbefferd or Unregistered DIMM)

RDIMM : ECC 기능 + REG기능 (Registered DIMM)

LRDIMM : ECC 기능 + REG기능 + 데이터신호 제어 (Load Reduced DIMM)

NVDIMM : ECC 기능 + REG기능 + 데이터신호 제어 + SSD기능

(Non Volatile DIMM)

 

이렇게 정리를 할 수 있습니다.

 

기능에 대해 간략하게 정리를 하면

 

- ECC : 데이터 에러 정정 기능

- REG : 다수의 메모리 구성시, RAM 슬롯거리차이로 RAM 모듈간에 이동속도 차이로 발생할 수 있는 신호왜곡을 방지하는 기술

- 데이터신호 제어 : 버퍼를 추가하여 데이터의 신호를 제어

 

메모리에 대한 상세한 설명을 하면...

 

* UDIMM

- 저렴한 가격 대신, 8bit(x8)DRAM만을 사용하고 최대 2RANK까지 확장할 수 있응 메모리 타입, 지원용량을 저전력으로 유지

- 채널 당 2개 DIMM만 사용이 가능

- 오류를 줄이기 위해 저용량만을 지원하고 버퍼, 레지스터가 없어 빠른 응답률을 갖는다.

 

* RDIMM

- 메모리에 버퍼를 추가하여 DIMM의 주소와 명령신호를 기다리고 DIMMs당 4RANK로 확장이 가능

- 보다 강력한 에러 보정 기술이 적용

- 레지시터 칩에 의한 원가상승 발생

 

* LRDIMM

- RDIMM에 isolation Memory Buffer를 적용하여 데이터신호를 제어

- 부하 분산을 RANK에 의존하지 않고 전기적부하를 순차적으로 데이터 버퍼에 내열

- 이로 인해 고용량 메모리를 지원하고 빠른 응답률이 있는 반면 상당한 원가 상승발생

 

* NVDIMM
- 차세대 DIMM으로서 DIMM 모듈에 NAND FLASH를 결합한 하이브리드 메모리

- DIMM의 휘발성 메모리의 성격을 보완하면서 임시데이터를 안전하게 저장, 복구가 가능

- 따라서 캐쉬와 스토리지 2가지 모두 사용가능하기 때문에 많은 서버업체에서 관심을 갖고 있습니다.

반응형

'인프라 구축 기술' 카테고리의 다른 글

VIP (Virtual IP)란 ??  (0) 2017.12.06
RAID 와 HBA 카드 (2)  (0) 2017.11.13
RAID 와 HBA 카드 (1)  (0) 2017.11.07
Xeon(제온) CPU는 ??  (0) 2017.10.21
서버 시스템 이해하기  (0) 2017.10.09

+ Recent posts