flock으로 Bash 스크립트 동시 실행 방지하기
cron 배치가 예상보다 오래 걸려 다음 스케줄과 겹치면, 두 인스턴스가 같은 파일에 동시에 써서 데이터가 꼬이는 사고가 난다. PID 파일로 막는 방식은 프로세스가 비정상 종료되면 파일만 남아 다음 실행을 영영…
쉘 스크립트 관련 Tips
cron 배치가 예상보다 오래 걸려 다음 스케줄과 겹치면, 두 인스턴스가 같은 파일에 동시에 써서 데이터가 꼬이는 사고가 난다. PID 파일로 막는 방식은 프로세스가 비정상 종료되면 파일만 남아 다음 실행을 영영…
Bash 기본 동작은 명령 하나가 실패해도 스크립트가 멈추지 않고 다음 줄로 넘어간다. mkdir가 실패했는데 그다음 cd와 rm -rf *가 엉뚱한 디렉터리에서 실행되는 식의 사고가 여기서 나온다. set -euo pipefail은 이…
쉘 스크립트에서 $1, $2를 순서대로 읽는 방식은 옵션이 두세 개만 넘어가도 순서를 착각하기 쉽고, 필수 옵션 누락 같은 실수를 걸러낼 방법이 없다. 공백으로 이어붙인 문자열을 IFS로 잘라 쓰는 방식도 값…
배포 스크립트가 Ctrl+C나 SIGTERM으로 중간에 끊기면 임시 파일이 /tmp에 남고, lock 파일이 안 지워져 다음 실행이 죽고, 쓰다 만 결과 파일이 완료된 것처럼 남기도 한다. Bash의 trap은 시그널을 받거나 종료될…
sed는 스트림 편집기(stream editor)로, 텍스트 스트림을 편집하고 변환하는 데 사용되는 강력한 도구이다. sed는 주로 리눅스 및 유닉스 환경에서 활용되며, 특히 스크립트 및 대량 텍스트 처리에 유용하다. 이 글에서는 sed 사용법에…
리눅스 환경에서 프로세스 이름을 얻는 방법은 여러 가지가 있다. C 프로그래밍 언어에서 프로세스 이름을 얻는 방법과 터미널 명령어를 사용하여 프로세스 이름을 확인하는 방법에 대해 알아본다. C에서 프로세스 이름 얻기 C…
Linux 환경에서는 seq라는 명령어를 사용하여 숫자 시퀀스를 생성할 수 있다. 이를 통해 반복 작업을 수행하거나 특정 범위의 숫자를 생성할 수 있는데, 이를 활용하면 쉘을 수행하거나 쉘스크립트 작성에 도움이 된다. 이…
find 명령어는 리눅스/유닉스 계열 운영체제에서 파일 및 디렉토리를 검색하는데 사용되는 강력한 도구이다. 이 명령어는 다양한 옵션을 통해 다양한 케이스에서 유연한 검색을 가능하게 해준다. 이 글에서는 기본 사용법과 자주 사용되는 예제들을…
리눅스에서 여러 줄로 출력된 텍스트를 한 줄로 합치는 작업은 여러 상황에서 유용하다. 이 글에서는 다양한 방법으로 여러 줄 출력을 한 줄로 만드는 방법에 대해 소개한다. 1. awk 사용 awk 명령어를…
paste 명령어는 리눅스와 유닉스 시스템에서 shell script (쉘스크립트) 작성시 여러 파일 또는 텍스트를 조합하여 출력하는 데 사용되는 명령어이다. 따라서, paste 명령어를 사용하면 여러 파일이나 텍스트 스트림을 하나의 파일 또는 스트림으로…