만들어가는 세상

[linux] How to use shell Script 본문

IT/ETC

[linux] How to use shell Script

윤재웅 2018. 6. 26. 11:58

[linx]How to use shell Script

파일생성 및 권한 부여

$ touch shell_script_practice.sh // 파일 생성
$ chmod +x shell_script_practice.sh // 실행 권한 부여
$ vim shell_script_practice.sh // 쉘 스크립트 파일 편집기로 열기

스크립트 생성 시 기본 선언

#!/bin/bash
... 하단에 스크립트 작성 …

기본 비교 문법

[ -z ] : 문자열의 길이가 0이면 참
[ -n ] : 문자열의 길이가 0이 아니면 참

[ -eq ] : 값이 같으면 참
[ -ne ] : 값이 다르면 참
[ -gt ] :  값1 > 값2
[ -ge ] : 값1  >= 값2
[ -lt ] : 값1 < 값2
[ -le ] : 값1 <= 값2

[ -a ] : &&연산과 동일 and 연산
[ -o ] : ||연산과 동일 xor 연산

[ -d ] : 파일이 디렉토리면 참
[ -e ] : 파일이 있으면 참
[ -L ] : 파일이 심볼릭 링크면 참
[ -r ] : 파일이 읽기 가능하면 참
[ -s ] : 파일의 크기가 0 보다 크면 참
[ -w ] : 파일이 쓰기 가능하면 참
[ -x ] : 파일이 실행 가능하면 참
[ 파일1 -nt 파일2 ]  : 파일1이 파일2보다 최신파일이면 참
[ 파일1 -ot 파일2 ]  : 파일1이 파일2보다 이전파일이면 참
[ 파일1 -ef 파일2 ] : 파일1이 파일2랑 같은 파일이면 참

날짜

echo %date%   금 2007-11-16

명령어

가장 최근에 실행한 백그라운드 프로세스의 아이디는 $! 으로 알아낼 수 있다.
java -jar \$JAR_FILE_NAME.jar > /dev/null 2>&1 &
echo $! > \$PID_FILE

./bulk localhost:9200 입력 시 아래 sh call

#!/bin/sh   
ES=$1
if [ -z $ES ]; then
    echo "Usage : ./bulk localhost:9200"
else
    while(true); do
        curl -s -H 'Content-Type: application/x-ndjson' -XPOST "${ES}/bank/account/_bulk?pretty" --data-binary @accounts.json > /dev/null
        python monworker.py
        sleep 1
    done
fi

#!/usr/bin/env python 작업 시

# -*- coding: utf-8 -*-
import urllib3
import json
from datetime import datetime
from influxdb import InfluxDBClient
influxUrl = "localhost"
esUrl = "localhost:9200"
def get_ifdb(db, host=influxUrl, port=8086, user='root', passwd='root'):
    client = InfluxDBClient(host, port, user, passwd, db)
    try:
        client.create_database(db)
    except:
        pass
    return client
def my_test(ifdb):
local_dt = datetime.utcnow().strftime('%Y-%m-%dT%H:%M:%SZ')
statVal = es_mon()
point = [{
    "measurement": 
    'docs',
    "tags": {
    "type": "ec2",
    },
    "time": local_dt,
    "fields": {
    "pri_doc": statVal[0],
    "tot_doc": statVal[1],
    "pri_idx_tot": statVal[2],
    "pri_idx_mil": statVal[3],
    "tot_idx_tot": statVal[4],
    "tot_idx_mil": statVal[5],
    "pri_squery_tot": statVal[6],
    "pri_squery_mil": statVal[7],
    "tot_squery_tot": statVal[8],
    "tot_squery_mil": statVal[9],
    "pri_sfetch_tot": statVal[10],
    "pri_sfetch_mil": statVal[11],
    "tot_sfetch_tot": statVal[12],
    "tot_sfetch_mil": statVal[13],
    "pri_sscroll_tot": statVal[14],
    "pri_sscroll_mil": statVal[15],
    "tot_sscroll_tot": statVal[16],
    "tot_sscroll_mil": statVal[17],
    "pri_ssuggest_tot": statVal[18],
    "pri_ssuggest_mil": statVal[19],
    "tot_ssuggest_tot": statVal[20],
    "tot_ssuggest_mil": statVal[21]
    }
}] 
ifdb.write_points(point)

def es_mon():
http = urllib3.PoolManager()
header = { 'Content-Type': 'application/json' }
monCmd = esUrl + "/_stats"

try:
    rtn = http.request("GET",monCmd,body=json.dumps(None),headers=header)
except urllib3.exceptions.HTTPError as errh:
    print ("Http Error:",errh)

monData = json.loads(rtn.data)

rtnVal = []
rtnVal.append(monData['_all']['primaries']['docs']['count'])
rtnVal.append(monData['_all']['total']['docs']['count'])

rtnVal.append(monData['_all']['primaries']['indexing']['index_total'])
rtnVal.append(monData['_all']['primaries']['indexing']['index_time_in_millis'])
rtnVal.append(monData['_all']['total']['indexing']['index_total'])
rtnVal.append(monData['_all']['total']['indexing']['index_time_in_millis'])

rtnVal.append(monData['_all']['primaries']['search']['query_total'])
rtnVal.append(monData['_all']['primaries']['search']['query_time_in_millis'])
rtnVal.append(monData['_all']['total']['search']['query_total'])
rtnVal.append(monData['_all']['total']['search']['query_time_in_millis'])

rtnVal.append(monData['_all']['primaries']['search']['fetch_total'])
rtnVal.append(monData['_all']['primaries']['search']['fetch_time_in_millis'])
rtnVal.append(monData['_all']['total']['search']['fetch_total'])
rtnVal.append(monData['_all']['total']['search']['fetch_time_in_millis'])

rtnVal.append(monData['_all']['primaries']['search']['scroll_total'])
rtnVal.append(monData['_all']['primaries']['search']['scroll_time_in_millis'])
rtnVal.append(monData['_all']['total']['search']['scroll_total'])
rtnVal.append(monData['_all']['total']['search']['scroll_time_in_millis'])

rtnVal.append(monData['_all']['primaries']['search']['suggest_total'])
rtnVal.append(monData['_all']['primaries']['search']['suggest_time_in_millis'])
rtnVal.append(monData['_all']['total']['search']['suggest_total'])
rtnVal.append(monData['_all']['total']['search']['suggest_time_in_millis'])

return rtnVal

if __name__ == '__main__':
    ifdb = get_ifdb(db='mdb')
    my_test(ifdb)
# while(true); do ./monworker.py; done
Comments