1. CLI 자동화의 핵심인 쉘 스크립트 정의
쉘 스크립트(Shell Script)는 터미널에서 실행되는 명령어들을 하나의 파일로 묶어 순차적으로 실행하게 만드는 프로그램이다. 이는 마치 요리사가 레시피를 보고 요리하는 것과 같다는 것이다. 매번 같은 명령어를 일일이 입력하는 대신, 레시피(스크립트)를 한 번만 작성해 두면 컴퓨터가 대신 일을 처리하게 된다.
실무에서 CLI 자동화가 중요한 이유는 반복적인 휴먼 에러를 방지하고 작업 시간을 획기적으로 단축할 수 있기 때문이다. 단순한 파일 복사부터 복잡한 서버 배포까지, 쉘 스크립트는 개발자의 생산성을 결정짓는 핵심 요소
2. 쉘 스크립트의 기본 구조와 작성법
쉘 스크립트 파일은 보통 .sh 확장자를 가지며, 파일의 맨 윗줄에는 해당 스크립트를 어떤 쉘로 실행할지 지정하는 Shebang(#! )이 들어간다.
ㄱ. Shebang과 실행 권한 설정
가장 흔히 사용하는 Bash 쉘의 경우 파일 상단에 #!/bin/bash를 작성함. 이는 운영체제에게 “이 파일은 /bin/bash 프로그램을 사용하여 해석하라”고 명령하는 것임.
파일을 작성한 후에는 반드시 chmod +x script.sh 명령어를 통해 실행 권한을 부여해야 한다는 것이다. 권한이 없는 파일은 단순한 텍스트 뭉치에 불과하며, 실행 파일로서 작동하지 않음.
ㄴ. 변수와 제어문의 활용
스크립트 내에서는 데이터를 저장하는 변수를 사용할 수 있다.
NAME="Gemini"와 같이 선언하며, 사용할 때는 $NAME과 같이 호출함. 또한, if문을 사용하여 조건에 따라 다른 동작을 수행하거나, for문을 사용하여 여러 파일에 대해 반복 작업을 수행할 수 있다는 것이다.
3. 실무에서 바로 쓰는 CLI 자동화 사례 3가지
자동화는 구체적인 상황에서 그 진가를 발휘한다.
ㄱ. 정기적인 데이터 백업 자동화
매일 특정 시간에 중요 파일을 압축하여 별도의 디렉토리에 저장하는 스크립트를 작성할 수 있다.
tar 명령어를 활용하여 날짜별로 백업 파일을 생성하고, 30일이 지난 오래된 파일은 자동으로 삭제하도록 설계함. 이는 데이터 손실 위험을 최소화하는 가장 기본적인 자동화 방법
ㄴ. 로그 파일 분석 및 리포트 생성
서버 운영 중 발생하는 수 기가바이트(GB)의 로그 파일에서 에러(Error) 키워드만 추출하여 별도의 텍스트 파일로 저장하는 작업임.
grep이나 awk 같은 강력한 텍스트 처리 도구를 사용하면 수초 만에 수만 줄의 데이터를 분석할 수 있다는 것이다.
ㄷ. 개발 환경 및 배포 자동화 (CI/CD 기초)
새로운 프로젝트를 시작할 때 필요한 폴더 구조를 만들고, 라이브러리를 설치하며, 초기 설정을 완료하는 과정을 자동화할 수 있다.
또한, 작성한 코드를 서버에 올리고 재시작하는 과정을 스크립트화하면 배포 사고를 줄일 수 있음.
4. 파이프(Pipe)와 리다이렉션(Redirection)의 고급 활용
CLI의 진정한 매력은 명령어들을 서로 연결하는 데 있다. 이는 레고 블록을 조립하여 큰 성을 만드는 것과 유사함
– 파이프 (|): 앞 명령어의 결과를 뒤 명령어의 입력으로 전달함. 예:
ls | grep .txt는 파일 목록 중에서 확장자가 .txt인 것만 골라내는 것임
– 리다이렉션 (>): 명령어의 실행 결과를 화면이 아닌 파일에 저장함. 예:echo "Hello" > note.txt는 “Hello”라는 문구를 note.txt 파일에 기록하는 것임.
이 두 기능을 조합하면 복잡한 데이터 처리 프로세스를 단 몇 줄의 명령어로 구현할 수 있다는 것이다.
5. 주기적 작업을 위한 크론탭(Crontab) 설정
작성한 쉘 스크립트를 내가 원할 때마다 실행하는 것이 아니라, 특정 시간(예: 매주 월요일 새벽 3시)에 자동으로 실행되게 하려면 크론탭(Crontab)을 사용해야 한다.
크론탭은 리눅스 및 유닉스 계열 시스템의 시간 기반 잡 스케줄러임. 분, 시, 일, 월, 요일 순서로 숫자를 입력하여 스크립트 실행 주기를 설정할 수 있다. 이를 통해 시스템 관리자는 잠든 시간에도 백업이나 시스템 점검이 자동으로 이루어지게 할 수 있다는 것
터미널이 단순한 입력창을 넘어 ‘생각하는 일꾼’이 될 수 있음을 확인했다.
쉘 스크립트와 자동화 도구들을 익히는 것은 처음에는 어렵게 느껴질 수 있으나, 한 번 구축해 놓은 자동화 환경은 수십 배의 시간 보상으로 돌아올 것이다. (그러나 많은 개발자들은 이야기 한다, 다시 IDE로 돌아 올 것이라고!)
- 넷플릭스(Netflix)의 서버 복구 시스템인 ‘카오스 몽키’도 정교한 자동화 스크립트의 원리로 작동함
- 구글 서치 콘솔 데이터 추출 자동화를 위해 Python과 Bash를 혼합하여 사용하는 사례가 많음