본문 바로가기

쉘스크립트애들15

find . -type f -mmin -40 | xargs head -n 1 로그디렉터리에서 mtime -40으로 -40분 로그파일리스트를 갖고와서, 그파일들의 첫줄만 보려고 한다.[c@073:/tmp/appLogs/test]0 $ find . -type f -mmin -40 | xargs head -n 1 2015. 12. 3.
쉘스크립트로 로그파일에 임의의 필드값을 더해 총갯수를 구하기 쉘스크립트로 로그파일에 임의의 필드값을 더해 총갯수를 구하는 스크립트를 작성하려한다. 상황은 1)아래처럼 생긴로그파일에 3번째 위치한 값의 합을 구하고 싶은 경우 - 로그파일 a 1:1 100 c 1:2 99 d 1:2 10 b 1:2 11 - 스크립트 #!/bin/bash RES=`cat /tmp/appLogs/log/20150116.log | awk '{size += $3} END {print"Total:"size"개수"}'` echo $RES 2) 특정 디렉터리에 파일들의 총 사이즈를 구하고 싶은 경우 size=0 find / -name core -type f -exec ls -l {} \; | while read line do set $line size=`expr $size + $5` done e.. 2015. 12. 3.
string to int and sum (${TOTAL_ITEM_CNT#0}) 쉘안에서 string을 int로 변환하는 방법이다.${TOTAL_ITEM_CNT#0}예를 들어, 1) 로그파일안에 개수(=숫자)가 있고, 그 로그파일 안에서 숫자들의 합을 구하는 함수가 있다. (함수명 : analyzing ) 2) 그 숫자들의 총 합이 800 보다 큰 경우에만 특정 action 을 하고, 그렇지 않은 경우 쉘을 종료하는 스크립트가 있다. #!/bin/bash ## by.rhr0916 analyzing() { TOTAL_ITEM_CNT=`cat $LOG_DIR/$DATE.log | awk '{size +=$11} END {print""size" "}'` #echo ${TOTAL_ITEM_CNT#0}if [ ${TOTAL_ITEM_CNT#0} -gt 800 ]; then echo "send.. 2015. 12. 3.
쉘스크립트 문자열추출 : cut -d "[" -f 3 | cut -d "]" -f 1 로그파일안에서 특정문자열만 추출하려고 한다. * while 파일을 readline으로 읽고 * READ_LINE=$(echo $line) * 구분자로 잘라 문자열을 추출 : cut -d "[" REQUEST_ID=$(echo $READ_LINE | cut -d "[" -f 3 | cut -d "]" -f 1)#!/bin/bash topStat(){ while read line do READ_LINE=$(echo $line) REQUEST_ID=$(echo $READ_LINE | cut -d "[" -f 3 | cut -d "]" -f 1)EXE_DATE=$(echo $READ_LINE | awk -F " " '{print $8}') TASK_EXE_TIME=$(echo $READ_LINE | awk -F.. 2015. 12. 3.