일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- kotlin coroutine
- CKA 기출문제
- Java
- 정보처리기사 실기
- PETERICA
- 기록으로 실력을 쌓자
- 정보처리기사 실기 기출문제
- kotlin querydsl
- Kubernetes
- IntelliJ
- Spring
- 정보처리기사실기 기출문제
- MySQL
- CloudWatch
- aws
- 공부
- AI
- Linux
- 코틀린 코루틴의 정석
- 오블완
- AWS EKS
- 티스토리챌린지
- APM
- Elasticsearch
- CKA
- Pinpoint
- kotlin
- kotlin spring
- mysql 튜닝
- minikube
- Today
- Total
목록Linux/Shell Script (14)
피터의 개발이야기
ㅁ 들어가며 linux 서버를 다르면서 많은 스크립트를 작성하고 실행하게 된다. 이럴 때에 스크립트의 디버깅에 유용한 정보를 알게 되어 정리하였다. ㅁ set -xe 옵션?set -xe 옵션은 쉘 스크립트 실행 시 유용한 디버깅 및 오류 처리 기능을 제공한다. ㅁ 오류 즉시 감지(-e 옵션)ㅇ "errexit"의 약자로, 스크립트 실행 중 오류가 발생하면 즉시 실행을 중단한다.ㅇ 오류 전파 방지: 오류가 발생한 즉시 스크립트가 종료되어, 오류로 인한 추가적인 문제 발생을 방지한다.ㅇ 신속한 디버깅: 오류 발생 지점을 빠르게 파악할 수 있어 디버깅 시간을 단축할 수 있다. ㅁ 명령어 추적 (-x 옵션)ㅇ "xtrace"의 약자로, 실행되는 각 명령어를 화면에 출력한다.ㅇ 실행 흐름 파악: 스크립트의 실행 ..
ㅁ 들어가며ㅇ 리눅스 셸 스크립트에서 명령어를 반복적으로 실행하는 방법은 여러 가지가 있다.ㅇ 주로 사용되는 방법들을 정리해 보았다. ㅁ while 루프 사용#!/bin/bashwhile truedo echo "현재 시간: $(date)" sleep 5doneㅇ while 루프를 사용하면 특정 조건이 참인 동안 명령어를 반복 실행할 수 있다.ㅇ 이 스크립트는 5초마다 현재 시간을 출력한다. ㅁ for 루프 사용#!/bin/bashfor i in {1..10}do echo "반복 $i: $(ls -l)" sleep 2doneㅇ for 루프를 사용하면 지정된 횟수만큼 명령어를 반복 실행할 수 있다.ㅇ 이 스크립트는 현재 디렉토리의 파일 목록을 10번 출력하며, 각 반복 사이에 2초 간격둔다. ㅁ un..
파일 폴더를 압축하고 에러 처리가 가능한 shell(tar 버젼)#!/bin/bash# 압축할 폴더와 결과 파일 이름을 인자로 받음SOURCE_DIR="$1"OUTPUT_FILE="$2"# 함수: 에러 메시지 출력 및 종료error_exit() { echo "에러: $1" >&2 exit 1}# 인자 개수 확인if [ $# -ne 2 ]; then error_exit "사용법: $0 "fi# 소스 디렉토리 존재 확인if [ ! -d "$SOURCE_DIR" ]; then error_exit "지정한 폴더가 존재하지 않습니다: $SOURCE_DIR"fi# 출력 파일 이름이 .tar.gz로 끝나는지 확인if [[ "$OUTPUT_FILE" != *.tar.gz ]]; then O..
ㅁ 들어가며ㅇ 맥미니에 문제가 발생하여 웹이 접속이 되지 않았다.ㅇ 원격터미널에서 맥미니를 재기동하고 Docker를 기동하는 과정을 정리하였다. ㅁ 원인파악// 에러 내용The application /Applications/Docker.app cannot be opened for an unexpected reason, error=Error Domain=RBSRequestErrorDomain Code=5 "Launch failed." UserInfo={NSLocalizedFailureReason=Launch failed., NSUnderlyingError=0x60000388dce0 {Error Domain=OSLaunchdErrorDomain Code=125 "Domain does not support s..
ㅁ 들어가며 ㅇ linux에서 JSON을 가공하여 원하는 결과를 도출할 수 있는 JPATH 사용법을 정리하였다. ㅇ javascript와 똑같은 사용방식이라 직관적이었다. ㅁ Object 참조 # sample.json { "car": { "color": "blue", "price": "$20,000" }, "bus": { "color": "white", "price": "$120,000" } } # JSON 트리 참조 구조 1단 $ cat sample.json | jpath $.car [ { "color": "blue", "price": "$20,000" } ] # JSON 트리 참조 구조 2단 cat sample.json | jpath $.car.price [ "$20,000" ] ㅇ 점을 기준으로 종..
ㅁ 들어가며 용량이 큰 디렉토리 목록을 확인하려면 du, sort 명령어를 조합하여 사용하면 용량별 디렉토리를 쉽게 파악할 수 있다. ㅁ 디렉토리 용량별 정렬 # 디렉토리 용량 Sort, 내림차순, 큰->작 $ du -h -d 1 | sort -nr 178M. 173M./ParallelsLab 2.8M./docker-2048 1.4M./peter-2048 # 디렉토리 용량 Sort $ du -h -d 1 | sort -n, 오름차순, 작->큰 1.4M./peter-2048 2.8M./docker-2048 173M./ParallelsLab 178M. ㅁ 파일 용량별 정렬 # file 용량 Sort, 오름차순 $ du -h | sort -n 0B./ParallelsLab/.git/modules/submodu..
ㅁ 개요 ㅇ 운영하다보면 데이터를 직접 헨들링할 경우가 있다. ㅇ 반복적인 작업을 대량으로 수행하기 위해 File내용을 기반으로 처리할 수 있도록 하였다. ㅇ redis의 작업을 수행하면서 오류를 최소화하고 작업이력을 남기기 위해 스크립트를 작성하였고, 그 과정을 정리하였다. ㅁ Script #!/bin/sh LOG="./redis.log" COMMAND=$1 REDIS_KEY=$2 FILE=$3 TODAY=$(date) # 필수값 체크 if [ $# -ne 3 ] then echo "param error [command / key / file]" exit 0; fi echo ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>" echo ">> START : $TODAY" >> $LOG ec..
ㅁ 개요 ㅇ linux 서버에서 JSON 데이터를 볼 때가 많이 있다. 직렬화된 json을 보기는 쉽지 않다. ㅇ 이를 해결하기 위한 방법으로 jq명령어를 사용하면 JSON을 이쁘게 볼 수 있다. ㅁ 설치 ㅇ 맥의 경우 brew install jq ㅁ 사용법 ㅇ JSON string 파이프라인으로 재처리 하면 이쁜 JSON을 볼 수 있다.$ echo '{"foo": "bar"}' | jq ✔ 5238 23:20:52{ "foo": "bar"}$ echo '{"foo": "bar"}' | jq '.foo' ..
ㅁ 개요 ㅇ 기준 폴더의 개별 폴더들의 로그를 정리하는 쉘스크립트이다. ㅇ 3일 지난 파일을 압축 ㅇ 180일 지난 압축파일 삭제 #!/bin/sh # 기준 폴더 LOG_PATH=/logs # 기준 폴더 안의 개별 폴더 목록 SVC_TYPE_ARRAY=("acs" "abccard") # 로그정리 정리 로그(최근 로그만 남김) LOG_FILE=${LOG_PATH}/log_clean.out DAY=$(date +%Y-%m-%d --date '3 days ago') date > $LOG_FILE for svcType in "${SVC_TYPE_ARRAY[@]}" do # log zip tar -czvf $LOG_PATH/$svcType/$svcType.$DAY.tar.gz $LOG_PATH/$svcType/*..