flock으로 Bash 스크립트 동시 실행 방지하기

cron 배치가 예상보다 오래 걸려 다음 스케줄과 겹치면, 두 인스턴스가 같은 파일에 동시에 써서 데이터가 꼬이는 사고가 난다. PID 파일로 막는 방식은 프로세스가 비정상 종료되면 파일만 남아 다음 실행을 영영…

Continue Readingflock으로 Bash 스크립트 동시 실행 방지하기

set -euo pipefail로 안전한 Bash 스크립트 작성하기

Bash 기본 동작은 명령 하나가 실패해도 스크립트가 멈추지 않고 다음 줄로 넘어간다. mkdir가 실패했는데 그다음 cd와 rm -rf *가 엉뚱한 디렉터리에서 실행되는 식의 사고가 여기서 나온다. set -euo pipefail은 이…

Continue Readingset -euo pipefail로 안전한 Bash 스크립트 작성하기

Bash 배열과 getopts로 커맨드라인 인자 제대로 다루기

쉘 스크립트에서 $1, $2를 순서대로 읽는 방식은 옵션이 두세 개만 넘어가도 순서를 착각하기 쉽고, 필수 옵션 누락 같은 실수를 걸러낼 방법이 없다. 공백으로 이어붙인 문자열을 IFS로 잘라 쓰는 방식도 값…

Continue ReadingBash 배열과 getopts로 커맨드라인 인자 제대로 다루기

Bash trap과 시그널 처리로 안전한 스크립트 작성하기

배포 스크립트가 Ctrl+C나 SIGTERM으로 중간에 끊기면 임시 파일이 /tmp에 남고, lock 파일이 안 지워져 다음 실행이 죽고, 쓰다 만 결과 파일이 완료된 것처럼 남기도 한다. Bash의 trap은 시그널을 받거나 종료될…

Continue ReadingBash trap과 시그널 처리로 안전한 스크립트 작성하기

sed 사용법

sed는 스트림 편집기(stream editor)로, 텍스트 스트림을 편집하고 변환하는 데 사용되는 강력한 도구이다. sed는 주로 리눅스 및 유닉스 환경에서 활용되며, 특히 스크립트 및 대량 텍스트 처리에 유용하다. 이 글에서는 sed 사용법에…

Continue Readingsed 사용법