[Linux] 셸
리눅스의 셸은 명령어와 프로그램을 실행할 때 사용하는 인터페이스다. 우리가 터미널이라는 곳에서 명령어를 사용해 어떤 작업을 하는 것은 커널에 일을 시키는 행위가 된다.
현재는 리눅스도 GUI 환경을 제공하므로, 일반 사용자는 셸과 같은 CLI를 사용할 이유가 없지만, 많은 서버 개발자들은 마우스를 사용하지 않아도 되는 편리함 및 한 줄로 다양한 기능을 수행할 수 있어 사용하고 있다.
셸의 종류
Bourne shell(sh)
Stephen Bourne의 이름을 따 Bourne shell, 줄여서 sh라고 불린다. POSIX(유닉스 운영체제에 기반을 두는 일련의 표준 운영체제 인터페이스) 표준에 기본 셸로 정해져있다.
Bourne-again shel(bash)
sh와 대부분이 호환된다. sh와의 호환성 구현을 목적으로 시작했지만, 시간이 지남에 따라 많은 확장성을 얻었다. 외장형 명령어들을 내장형으로 대체했기에, 셸 스크립트 작성시 sh보다 성능이 좋아진다는 장점이 있다.
ZShell(zsh)
bash 등장 이후 한 학생이 만들었다. 커뮤니티 기반 온라인 플랫폼 Oh My Zsh는 zsh용 테마 및 확장 기능들을 제공했다. 2019년부터 맥은 bash를 대체하는 기본 셸로 zsh를 채택했다.
셸 스크립트 활용 사례
빌드 자동화에 쓰일 수 있다.
Jenkins와 같은 CI/CD 툴을 사용할 때, 무중단 배포를 위해 현재 배포중인 프론트(혹은 백)서버를 켜둔 채 새로운 프론트(혹은 백)서버를 실행시켜야 할 순간이 존재한다.
Jenkins는 레포지토리의 변경을 알아채고, 수정본을 새로 clone 해오게 된다. 그리고 새로운 코드를 실행시킨다. 이 때, 프로세스를 실행시킨 뒤, 이전 프로세스의 ID를 찾아 제거하는 작업이 필요하다. 이와 같은 경우, 미리 작업해둔 셸 스크립트를 Jenkins에 연결해 두면, 위와 같은 상황에서 빌드 및 실행 자동화가 이뤄진다.
댓글남기기