Old Posts/Linux105 [Linux] jq 명령어 사용법 및 예제 - Bash 스크립트에서 json 파싱 Bash 스크립트에서 REST API 호출을 하는 경우 데이터가 JSON 포맷으로 얻어지는 경우가 많다. 문제는 XML이나 JSON 문서에서 데이터를 얻어오기 위해서는 파싱을 해야한다는 점이다. grep 명령이나 awk 스크립트를 이용해서 처리할 수도 있지만 jq 명령을 이용하면 쉽게 JSON 문서를 다룰 수 있다. jq 설치 $ sudo yum install jq -y $ jq --version jq-1.5 jq는 yum, apt-get, brew 등의 패키지 관리자로 쉽게 설치할 수 있다. yum install epel-release -y yum install에서 jq를 찾을 수 없다고 하는 경우라면 epel-release 를 설치해주면 된다. jq 사용법 jq 명령은 입력으로 받은 JSON 문서에 .. 2021. 7. 7. [Linux] Bash 문자열 변수 조작 (자르기, 치환, 삭제) Bash 스크립트를 작성하다보면 간단하게 문자열 변수를 조작하고 싶을 때가 있다. 예를 들어 따옴표로 감싸진 문자열 값에서 앞, 뒤에 있는 따옴표를 제거한 알맹이만 꺼내고 싶을 때가 있다. Bash에서는 문자열 변수를 간단하게 조작할 수 있는 몇 가지 기능을 제공한다. 1. 문자열 변수 연결 문자열 변수의 값들을 연결하는 Concat 동작은 간단하다. new_value=${old_value1}-with-${old_value2} 이런식으로 사용하면 'old_value1' 변수의 값과 'old_value2' 변수의 값 사이에 '-with-' 문자열을 추가한 형태의 새로운 문자열이 만들어진다. 2. 문자열 변수 자르기 프로그래밍 언어에서 문자열을 '슬라이싱(slice)'하는 경우가 종종 있다. Bash에서는 .. 2021. 6. 24. [Linux] Bash 배열(Array) 사용법 및 예제 프로그래밍 언어에서는 여러 변수를 한꺼번에 다루기 위해서 '배열(Array)'이라는 자료구조를 사용한다. 배열을 사용하면 여러 데이터를 간단한 몇 줄로 처리할 수 있어 편리하다. Bash 역시 배열을 지원한다. Bash 배열(Array) 사용법 배열 선언하기 array_1=("value 1" "value 2" "value 3") array_2=(1 2 3) 다른 명령어의 결과를 배열로 만들려면 IFS=$'\n' ARR=(`cat test.txt`) cat test.txt로 출력되는 결과 값을 '\n' 값으로 분리해서 배열로 만들 수 있다. 배열 참조하기 array=("value 1" "value 2" "value 3") echo "${array[2]}" # 2번 인덱스에 대한 값 출력 echo "${ar.. 2021. 6. 22. [Linux] 서비스 관리 명령어 'systemctl', 'service', 'chkconfig' 사용예 리눅스 시스템이 재부팅을 했을 때, 특정 데몬들을 자동실행하고 싶은 경우가 있다. 빅데이터 클러스터의 경우 ambari-agent 등의 데몬을 자동 실행하도록 설정해두면, 장비의 점검이 끝나고 재부팅이 되었을 때 Ambari 서버에서 쉽게 컴포넌트들을 재시작할 수 있다. 리눅스 서비스 (Linux Service) 윈도우에서 시스템이 재부팅되면 자동으로 실행되는 프로그램들이 있다. 마찬가지로 리눅스에서도 시스템이 부팅될 때 백그라운드에서 자동 실행되는 응용프로그램들이 있다. 백그라운드에서 동작하면서 사용자에게 어떠한 서비스들을 제공하기 위한 이런 데몬들을 '리눅스 서비스'라고 생각하면 된다. CentOS 7 - systemctl 명령 CentOS 7에서는 서비스와 관련된 설정을 세팅하거나 확인하기 위해 s.. 2021. 6. 21. [Linux] time 명령어 - 실행시간 측정 특정 프로그램의 실행 시간을 측정하기 위해서 time 명령어를 자주 사용한다. $ time ./a.out 이런 식으로 time 명령어를 앞에 쓰고 실행할 커맨드를 뒤쪽에 써주면 뒤쪽에 써준 커맨드를 실행하는데 얼마나 걸렸는지 실행시간에 대한 정보가 출력된다. $ time ./a.out real0m1.646s user0m0.001s sys0m0.001s 출력되는 내용은 대략 이러하다. real, user, sys 3가지 시간 정보가 출력된다. real의 경우 총 실행시간을 의미한다. 실제 커맨드를 실행하는데 걸린 시간이다. user의 경우 user 영역에서 실행된 시간을 의미한다 sys의 경우 커널 영역에서 실행된 시간을 의미한다 2021. 6. 19. [Linux] iptables 명령어를 이용한 IP 블럭 사용방법 서버를 운영하다보면 특정 IP 주소에서 들어오는 요청을 블럭해야 할 경우가 있다. 클러스터에서 특정 호스트를 강제로 제외시키고 싶은 경우나 원격 접속이 불가능한 상황을 테스트해야할 경우 등이 이에 해당한다. 특정 서버에서 ip 주소를 블럭하기 위해 iptables 명령을 이용할 수 있다. iptables 명령은 /sbin/iptables 에 있는 경우가 많다. iptables로 ip 주소 블럭하기 우선 서버에 루트 계정 혹은 sudo 권한이 있는 사용자로 로그인한다. 그리고 다음 명령을 실행한다. $ sudo /sbin/iptables -A INPUT -s $IP_ADDRESS -j DROP $IP_ADDRESS 부분을 접속 차단할 IP 주소로 바꿔주면 된다. 예를 들어 172.0.0.10 호스트에서 들.. 2021. 6. 18. [Linux] Bash 스크립트에서 따옴표 제거 Bash 스크립트를 작성할 때 쌍따옴표(")로 둘러쌓인 값에서 쌍따옴표만 제거하고 싶을 때가 있다. "Hello" 라는 값에서 쌍따옴표만 제거하고 Hello 라는 값만 추려내고 샆은 경우가 이에 해당한다. 이 경우 Bash의 매개변수 치환(Parameter Substitution)을 이용하면 된다. 예를 들어 $ VAR="\"TEST\"" $ echo $VAR "TEST" "TEST"라는 문자열이 변수에 저장되어 있을 때, 앞뒤에 있는 쌍따옴표만 제거하기 위해서는 $ temp="${VAR%\"}" $ temp="${temp#\"}" $ echo "$temp" TEST 이런 식으로 입력하면 된다. ${VAR%\"} 를 실행하면 VAR 데이터에 저장되어 있는 값에서 뒤쪽에 오는 쌍따옴표가 제거된다. ${te.. 2021. 6. 17. [Linux] 리눅스 시스템 로그 파일들 정리 리눅스 서버를 운영하다보면 다양한 형태의 장애 상황을 만나게 된다. 갑자기 CPU 사용률이 100%를 친다던가 네트워크 대역을 전부 소모해버린다던가, 메모리 사용량이 폭증하는 등의 이벤트가 발생할 수 있다. 이 경우 리눅스에서 남기는 다양한 로그 정보들을 열어보면서 문제를 분석할 수 있다. 리눅스의 로그들은 주로 /var/log 디렉토리에 저장된다. 이 디렉토리에는 다양한 시스템 로그 파일들이 기록된다. /var/log/messages 시스템에 문제가 생겼을 때 가장 먼저 확인해보는 로그 파일이다. syslog.conf 설정 파일에 로그를 남기지 않도록 지정된 내용을 제외한 모든 항목들이 기록된다. 많은 항목들이 기록되기 때문에 일반적으로 grep 명령어를 통해서 확인한다. /var/log/secure .. 2021. 6. 16. [Linux] 명령행(터미널)에서 메일 보내기 - sendmail, mail(mailx) 명령 사용법 및 예제 모니터링 스크립트를 작성하고 crontab을 이용해서 주기적으로 실행하도록 설정하는 경우, 문제가 생겼을 때 메일을 통해서 원격으로 리포트를 받아보길 원할 때가 있다. 리눅스에서는 이런 경우 메일 전송을 해주는 유틸리티를 이용해서 모니터링 결과를 메일로 전송할 수 있다. sendmail 설치 CentOS 기준 yum을 이용해서 sendmail을 설치해준다. $ sudo yum install sendmail sendmail-cf -y 그리고 sendmail 서비스를 실행해준다. $ sudo systemctl start sendmail.service $ sudo systemctl enable sendmail.service mailx 설치 CentOS 기준, yum을 이용해서 mailx를 설치해준다. $ su.. 2021. 6. 9. 이전 1 ··· 7 8 9 10 11 12 다음