Skip to content

Commit

Permalink
bash 수정
Browse files Browse the repository at this point in the history
  • Loading branch information
butteryoon committed Nov 11, 2023
1 parent ed92751 commit 98a5967
Showing 1 changed file with 35 additions and 34 deletions.
69 changes: 35 additions & 34 deletions _posts/2023-10-29-bash.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ title: "BASH 스크립트로 서비스 부하 테스트 하기"
description: "서비스 API 성능 테스트를 위해 쉘 스크립트를 만들어본다."
img: command-title.webp
date: 2023-10-29 11:00:00 +0900
last_modified_at: 2023-10-29 11:00:00 +0900
last_modified_at: 2023-11-11 22:00:00 +0900
tags: [command-line, bash, script, load test] # add tag
related: command-line
categories: tools
Expand All @@ -23,9 +23,11 @@ categories: tools

## 순차적으로 증가하는 일련번호 만들기.

기준이 되는 데이터가 필요한데 순차적으로 증가하는 일련번호가 필요하다.
서비스 시뮬레이션을 위해 기준이 되는 정보가 필요한데 데이터는 텍스트 파일에서 읽어오기로 한다.

엑셀로 만들어도 되겠지만 터미널에서 **vim**으로 선택된 영역의 숫자를 순차적으로 증가시킬 수 있다.
데이터에는 순차적으로 증가하는 일련번호가 필요해서 아래와 같이 **vim**을 이용해보자.

엑셀로 만들어도 되겠지만 터미널에서 **vim**으로 일련번호를 만들어보자.

> vim의 명령어 모드에서
> **Ctrl-v** 로 원하는 영역에 "Visual Block"을 설정하고.
Expand All @@ -34,56 +36,55 @@ categories: tools
```text
$ cat application.lst
D0002, 7000002, I, A, 1528100002
D0003, 7000003, I, A, 1528100003
D0004, 7000004, I, A, 1528100004
D0005, 7000005, I, A, 1528100005
D0006, 7000006, I, A, 1528100006
D0007, 7000007, I, A, 1528100007
D0008, 7000008, I, A, 1528100008
D0009, 7000009, I, A, 1528100009
D0010, 7000010, I, A, 1528100010
D0011, 7000011, I, A, 1528100011
D0002,7000002,I,A,1528100002
D0003,7000003,I,A,1528100003
D0004,7000004,I,A,1528100004
D0005,7000005,I,A,1528100005
D0006,7000006,I,A,1528100006
D0007,7000007,I,A,1528100007
D0008,7000008,I,A,1528100008
D0009,7000009,I,A,1528100009
D0010,7000010,I,A,1528100010
D0011,7000011,I,A,1528100011
```

## 콤마(,)로 구분된 텍스트 파일 읽어 loop

아래와 같이 while loop 의 IFS(필드 분리자)를 콤마(,)로 설정하고 읽어 올 변수를 설정하면 FILE의 라인 수만 큼 loop가 반복된다.
만들어진 데이터를 순서대로 읽어 API로 던질 포맷을 만들어 일정한 간격으로 전송하려고 할 때 아래와 같이 while loop 의 IFS(필드 분리자)를 콤마(,)로 설정하고 읽어 올 변수를 설정하면 FILE의 라인 수만 큼 loop가 반복된다.

```bash
FILE='application.lst'

# main loop
echo "START : "`date +%T.%3N`
while IFS=',' read col1 col2 col3 col4 col5
echo "START : "`date +%T.%3N` # 시작시간을 마이크로초 단위로 기록
while IFS=',' read col1 col2 col3 col4 col5 # WHILE 루프
do
# action
echo "docid=$col1 appid=$col2 inout=$col3 type=$col4 cid=$col5"
sleep 0.01
done < $FILE
echo "END : "`date +%T.%3N`
done < $FILE # 파일 읽기
echo "END : "`date +%T.%3N` # 종료시간을 마이크로초 단위로 기록

# 터미널 출력 결과

START : 01:44:54.887
docid=D0002 appid= 7000002 inout= I type= A cid= 1528100002
docid=D0003 appid= 7000003 inout= I type= A cid= 1528100003
docid=D0004 appid= 7000004 inout= I type= A cid= 1528100004
docid=D0005 appid= 7000005 inout= I type= A cid= 1528100005
docid=D0006 appid= 7000006 inout= I type= A cid= 1528100006
docid=D0007 appid= 7000007 inout= I type= A cid= 1528100007
docid=D0008 appid= 7000008 inout= I type= A cid= 1528100008
docid=D0009 appid= 7000009 inout= I type= A cid= 1528100009
docid=D0010 appid= 7000010 inout= I type= A cid= 1528100010
docid=D0011 appid= 7000011 inout= I type= A cid= 1528100011
docid=D0002 appid=7000002 inout=I type=A cid=1528100002
docid=D0003 appid=7000003 inout=I type=A cid=1528100003
docid=D0004 appid=7000004 inout=I type=A cid=1528100004
docid=D0005 appid=7000005 inout=I type=A cid=1528100005
docid=D0006 appid=7000006 inout=I type=A cid=1528100006
docid=D0007 appid=7000007 inout=I type=A cid=1528100007
docid=D0008 appid=7000008 inout=I type=A cid=1528100008
...
END : 01:44:55.006
```

## bash 시간 포맷

아래와 같이 date 명령어로 시간 포맷을 정할 수 있다.
시뮬레이션을 하는 동안 기록한 시간은 마이크로초 단위가 필요하고 아래와 같이 date 명령어로 시간 포맷을 정할 수 있다.

> %T : %H:%M:%S 형식으로 시:분:초를 표시한다.
> %N : nanoseconds 단위를 표시한다.
> %N : nanoseconds 단위를 표시한다.
> %3N : 소수점 이하 3자리 까지 표시
```bash
Expand All @@ -94,11 +95,11 @@ END : 01:44:55.006
01:57:52.356
```

## 경과 시간 구하기
## 경과 시간 구하기 (ChatGPT )

구글 검색을 돌렸더니 **chatGPT** 플러그인이 튀어나와 아래처럼 하라고 한다.
트랜잭션 단위로 경과시간을 구하기 위해 구글 검색을 돌렸더니 **chatGPT** 플러그인이 튀어나와 아래처럼 하라고 한다.

> **date +%s** : 현재 시간을 초 단위로 변환하여 저장.
> **date +%s** : 현재 시간을 초 단위로 변환하여 저장.
```bash
시작_시간=$(date +%s)
Expand All @@ -110,7 +111,7 @@ END : 01:44:55.006
echo "작업에 소요된 시간: $경과_시간 초"
```

## 밀리세컨드 단위 경과 시간 구하기
## 밀리세컨드 단위 경과 시간 구하기 (ChatGPT)

다시 **elapsed time milliseconds in bash** 로 검색했더니 아래처럼 알려준다.

Expand Down

0 comments on commit 98a5967

Please sign in to comment.