본문 바로가기

개발/Bash, Shell Script

(3)
pid가 동작하는 중인지 확인하는 방법 FIND=`ssh -n -p $port $ip find ${PATH} -name "*.[파일형식]"` if [ -n "${FIND}" ]; then PREV_PID=`ssh -n -p $port $usr@$ip cat ${FIND}` # pid #74535 CHECK_STAT=`ssh -n -p $port $usr@$ip ps -f ${PREV_PID} | awk 'NR == 2 {print $7}'` # bash: /proc/74535: 파일이 존재하고 디렉토리인 경우 echo "${target} CHECK_STAT : "${CHECK_STAT}"" # pid 문자열이 존재하고 pid의 STAT이 D, T, X, Z 로 시작하지 않고 STAT이 공백이 아니면 # STAT : D -> 입출력 대기로 깨울..
쉘 스크립트에서 와일드카드(*) 써서 파일 찾기 우분투 find /etc -name "*.conf" 식으로 사용하면 된다. (큰따옴표 없어도 됨) 리눅스/MacOS find -f [검색어] find -f [A-Z]AA.txt 나는 엘라스틱서치의 pid 파일을 각 서버마다 체크하며 프로세스가 살아있는지 체크해야 했는데, 서버마다 파일 이름이 es_aa.pid, es_bb_cc.pid 식으로 달라 es_*.pid 와 같은 와일드카드 형식으로 파일을 찾고 싶었다. ES="es_" FIND=`ssh -o StrictHostKeyChecking=no -n -p $port $ip find ${PID_PATH} -name "${ES}*.pid"` if [ $FIND ]; then ~ ~ find [경로] -name [파일이름-변수가능]*.pid 이런 식으로 하면 ..
30일이 지나면 엘라스틱서치 인덱스 삭제하기 #!/usr/bin bash ELASTICSEARCH="http://127.0.0.1:9200" ONEMONTHAGO=$(date --date="30 days ago" +%Y-%m-%d) ONEMONTHAGO2=$(date --date="30 days ago" +%Y.%m.%d) curl -X DELETE "$ELASTICSEARCH/*$ONEMONTHAGO" curl -X DELETE "$ELASTICSEARCH/*$ONEMONTHAGO2" 위 코드는 30일이 지나면 엘라스틱서치 인덱스를 삭제하는 쉘 스크립트다. 30일이 지난 인덱스를 모두 삭제하는 방법은 #!/usr/bin bash # Defaults ELASTICSEARCH="http://127.0.0.1:9200" DATE=$(date --dat..