728x90
인터렉티브 쉘(Interactive Shell)이란❓
인터렉티브 쉘(Interactive Shell)은 사용자가 프로그램이나 스크립트를 실행하면서 실시간으로 명령을 입력하고 즉시 결과를 확인할 수 있는 환경을 의미합니다.
즉, 사용자로부터 실시간으로 직접 CLI에 명령하는 환경
프로그래밍 언어의 실험, 디버깅, 테스트, 또는 간단한 연산 등을 수행할 때 유용하게 사용됩니다.
주요 특징
1. 실시간 입력과 출력
- 사용자가 명령어를 입력하면 즉시 실행되어 결과를 확인할 수 있습니다.
- 예: Python의 python 명령어로 실행되는 REPL(Read-Eval-Print Loop).
2. 대화형 환경
- 코드 작성과 실행이 단계별로 이루어지므로, 복잡한 프로그램보다 간단한 테스트에 적합합니다.
- 입력에 따라 바로 반응하며 결과를 출력합니다.
3. 코드 실험 및 디버깅
- 특정 코드의 동작을 테스트하거나 변수 값 등을 확인할 수 있습니다.
- 새로운 아이디어를 빠르게 시도할 수 있습니다.
4. 사용 사례
- 학습 및 프로토타이핑
- 데이터 분석 및 처리 (예: Python의 IPython 또는 Jupyter Notebook)
- 간단한 명령 실행 (예: Bash, JavaScript Console 등)
- 도커 내부 접속
인터렉티브 쉘의 장단점
장점
- 즉각적인 피드백으로 학습 곡선을 낮춤.
- 빠른 프로토타이핑과 디버깅 가능.
- 라이브러리나 함수 사용법 테스트에 용이.
단점
- 복잡한 프로그램 작성에는
적합하지 않음. - 실행 중 오류 발생 시 지속적 관리가 어려움.
- 작성한 코드가 쉘을 종료하면 사라질 수 있음.
Docker의 인터렉티브 쉘
도커에서 -it 옵션을 사용해 컨테이너 내부로 접속하여 명령어를 입력하는 것도 인터렉티브 쉘의 일종입니다. -it 옵션은 도커 컨테이너 내에서 대화형(Interactive)으로 명령을 입력하고, 그 결과를 실시간으로 확인할 수 있는 환경을 제공합니다.
위 그림에서 볼 수 있듯이 -it옵션을 사용하여 컨테이너 내부로 접속하여 1+1을 입력하면 2를 실시간으로 응답받을 수 있습니다.
논 인터렉티브 쉘(Non-Interactive Shell) 이란 ❓
논인터렉티브 쉘(Non-Interactive Shell)은 사용자가 명령을 직접 입력하지 않고, 스크립트나 자동화된 프로세스를 통해 명령을 실행하는 쉘 환경을 의미합니다. 사용자와의 상호작용 없이 명령이 실행되며, 보통 자동화 작업이나 배치 처리에서 사용됩니다.
Shell을 실행해서 Script 파일의 명령들을 수행하는 형태
주요 특징
1. 사용자 입력 X
- 명령어가 미리 작성된 스크립트나 자동화된 환경에서 실행되므로, 사용자가
직접 명령을 입력하거나결과를 확인할 수 없습니다. - 예: 서버에서 실행되는 백그라운드 작업, 스크립트 파일 실행 등.
2. 자동화된 실행
- 주로 일괄 처리(batch processing), 예약 작업, 자동화된 배포 및 관리에서 사용됩니다.
- 예: cron 작업, CI/CD 파이프라인, 시스템 관리자 작업 등.
3. 출력은 파일로 리다이렉션될 수 있다.
- 실행 결과는 보통 콘솔에 출력되지 않고 파일이나 로그로 리다이렉션됩니다.
- 예: script.sh > output.log 2>&1 처럼 출력 및 오류를 파일에 저장.
4. 상호작용 없는 실행
- 명령이 끝날 때까지 쉘은 사용자와의
상호작용을 요구하지 않습니다. 이를 통해 자동화 및 스크립트 실행이 가능합니다.
논 인터렉티브 쉘(Non-Interactive Shell)의 예시
1. bash 스크립트 실행
bash script.sh
- script.sh라는 스크립트를 실행할 때, 사용자가
직접 명령을 입력하는 것이 아니라 미리 작성된 스크립트 내의 명령들이 자동으로 실행됩니다.
2. 백그라운드 실행
nohup command &> output.log &
- 이 명령은 nohup을 사용해 명령을 백그라운드에서 실행하고, 그 출력을 output.log 파일로 리다이렉션합니다.
- 쉘은 사용자와
상호작용하지 않고 자동으로 실행됩니다.
3. cron 작업
0 0 * * * /path/to/script.sh
- 시스템에서 주기적으로 실행되는 작업은 논인터렉티브 쉘에서 실행됩니다.
- 예를 들어, 매일 밤 12시에 특정 스크립트를 실행하도록 예약할 수 있습니다.
논 인터렉티브 쉘(Non-Interactive Shell)의 장단점
장점
1. 자동화
사람이 개입하지 않고도 시스템 관리, 배포, 백업 등을 자동화할 수 있습니다.
2. 효율성
- 수동 작업 없이 대규모 시스템에서 반복적인 작업을 효율적으로 처리할 수 있습니다.
3. 일관성
- 자동화된 환경에서는 동일한 작업을 동일한 방식으로 반복할 수 있어 일관성이 유지됩니다.
단점
1. 오류 추적의 어려움
- 자동화된 환경에서 오류 발생 시, 실시간으로
피드백을 받을 수 없으므로 오류를 추적하고 수정하는 데 시간이 더 걸릴 수 있습니다.
2. 사용자 피드백 부재
- 실행 중에 사용자 피드백을 받을 수 없기 때문에, 실행 상태를
실시간으로 모니터링하기 어렵습니다.
3. 의도하지 않은 동작
- 잘못된 스크립트나 명령어가 자동으로 실행되면, 사용자 개입 없이 심각한 문제가 발생할 수 있습니다.
'TIL,일일 회고' 카테고리의 다른 글
[TIL, 일일 회고] 2024.11.27 - List를 배열로 변환하는 다양한 방법: 프리미티브 타입과 레퍼런스 타입 구분하기 (0) | 2024.11.27 |
---|---|
[TIL, 일일 회고] 2024.11.26 - Udemy 동영상이 안보일 때 해결방법 (0) | 2024.11.26 |
[TIL, 일일 회고] 2024.11.23 - 이진수에서 마지막 비트 확인: 나머지 연산 vs 비트 연산 (0) | 2024.11.23 |
[TIL, 일일 회고] 2024.11.21 - 코딩 관련 기초 지식 (1부터 N까지의 합 공식 : 시그마 ∑) (0) | 2024.11.21 |
[TIL, 일일 회고] 2024.11.20 - 비트마스크를 이용한 백준-집합 문제 풀이 (1) | 2024.11.20 |