IT 성장기 (교육이수)/리눅스 기초 (2024.02-04)
운영체제의 개요와 리눅스 기초 명령어 (2/17, 2/18)
eezy
2025. 1. 8. 16:08
2023.02~2023.04 교육과정 정리
운영체제란?
운영체제는 컴퓨터 시스템의 자원을 효율적으로 관리하고, 사용자와 하드웨어 간의 인터페이스 역할을 하며, 사용자가 컴퓨터를 편리하고 효과적으로 사용할 수 있도록 환경을 제공하는 시스템 소프트웨어입니다.
1. 운영체제의 주요 역할
- 컴퓨터 사용자와 하드웨어 간의 인터페이스 제공
- 사용자가 컴퓨터 자원을 쉽게 사용할 수 있도록 하드웨어와 상호 작용할 수 있는 환경 제공.
- 응용 프로그램 지원
- 다른 응용 프로그램이 안정적이고 효율적으로 실행될 수 있도록 환경을 제공.
2. 운영체제의 종류
- Windows 계열 (MS)
- Microsoft에서 개발한 상용 운영체제.
- 대표적인 버전: Windows 10, 11, Server 등.
- Unix 계열
- 상용 및 고급 서버용 OS로 사용.
- 예: Solaris, SunCobalt.
- Linux 계열
- Unix 기반의 오픈 소스 운영체제.
- 예: Ubuntu, Fedora, Rocky Linux.
3. 운영체제의 5대 기능
- 프로세서 관리 (CPU 스케줄링)
- CPU 자원을 효율적으로 배분하여 프로세스들이 동시에 실행될 수 있도록 관리.
- 메모리 관리
- RAM과 같은 메모리 자원을 효율적으로 배분하여 실행 중인 프로세스가 필요한 메모리를 사용할 수 있도록 관리.
- 프로세스 관리
- 실행 중인 프로그램(프로세스)을 관리.
- 각 프로세스의 상태, 우선순위, 자원 할당 등을 조정.
- 입출력 관리
- 사용자와 하드웨어 간의 데이터 전송을 관리.
- 키보드, 마우스, 디스크, 네트워크 등 다양한 입출력 장치와의 통신 제어.
- 파일 시스템 관리
- 데이터 저장 및 관리.
- 파일의 생성, 삭제, 읽기, 쓰기 등의 작업을 지원하며, 디렉토리 구조 관리.
리눅스의 다양한 계열과 역사
1. 리눅스의 배포판 계열
- Red Hat 계열
- 대표 배포판: Rocky Linux, Fedora
- 특징: 엔터프라이즈 환경에 적합하며 RHEL(Red Hat Enterprise Linux)을 기반으로 한 상용 및 무료 배포판으로 나뉨.
- Debian 계열
- 대표 배포판: Ubuntu, Kali Linux
- 특징: 다양한 환경에서 사용되며, 사용 편의성과 보안에 초점.
- SUSE 계열
- 대표 배포판: Linux Mint (주로 데스크톱), Android (커널 기반)
- 특징: 서버와 데스크톱 모두를 지원하며 안정성과 성능이 강조됨.
2. GNU 프로젝트
- GNU의 철학
- GNU는 "GNU is Not Unix"의 약자로, 유닉스와 비슷하지만 자유로운 소프트웨어를 지향.
- 리처드 스톨만이 창시했으며, 자유 소프트웨어 운동의 핵심 인물.
- 소프트웨어의 자유를 보장하는 **GPL(General Public License)**로 배포.
- 리눅스와 GNU
- 리눅스는 GNU 프로젝트와 결합하여 오픈소스 커뮤니티의 상징이 됨.
- 리눅스가 오픈소스로 제공된 이유는 자유 소프트웨어 철학을 기반으로 사용자와 개발자의 자유로운 사용 및 기여를 보장하기 위함.
3. 리눅스의 3요소
- 커널 (Kernel)
- 운영체제의 핵심.
- 주요 역할: 디바이스 관리, 프로세스 관리, 메모리 관리, 시스템 콜 제공.
- 모든 시스템 자원의 접근과 관리를 담당.
- 셸 (Shell)
- 명령어 해석기 및 사용자와 커널 간의 인터페이스.
- CLI(Command Line Interface)를 통해 사용자가 명령어를 입력하고 실행.
- [root@localhost ~]# (명령어 입력받기를 대기하고 있는 상태)
- 애플리케이션 (Application)
- 사용자 인터페이스를 제공하며, 커널과 셸을 통해 자원을 사용.
4. Rocky Linux란?
- 배경
- CentOS의 지원이 중단된 후, Gregory Kurtzer가 이를 대체하기 위해 개발.
- RHEL(Red Hat Enterprise Linux)의 소스를 기반으로 컴파일하여 무료로 배포.
- 배포판 관계
- Fedora: 최신 기술이 적용된 개발용 OS.
- CentOS Stream: RHEL의 업스트림 프로젝트로 테스트용.
- RHEL: 상용 환경에 최적화된 안정적인 OS.
- Rocky Linux: RHEL의 다운스트림 프로젝트로, RHEL 릴리스 후 패치 및 버그 수정이 적용되어 제공.
- 특징
- 엔터프라이즈급 안정성과 보안을 제공.
- 커뮤니티 기반의 무료 OS로, CentOS의 철학을 계승.
리눅스 명령어와 디렉토리 구조
1. 리눅스 프롬프트
- 일반 사용자 프롬프트:
- 형식: {사용자명}@{호스트명} ~ $
- 예: test@localhost ~ $
- 관리자(root) 프롬프트:
- 형식: [root@{호스트명} ~]#
- 예: [root@localhost ~]#
2. 시스템 시작, 재시작, 종료 명령어
종료
- #shutdown [옵션] [시간]
- 즉시 종료: #shutdown -h now
- 1분 뒤 종료: #shutdown -h +1
- 명령 취소: #shutdown -c
- 시스템 종료: #init 0, #halt, #poweroff
재시작
- -r: 재시작 옵션
- 즉시 재시작: #shutdown -r now
- 1분 뒤 재시작: #shutdown -r +1
- 시스템 재시작: #init 6, #reboot
3. 명령어 사용 팁
- 이전 명령어 확인:
- #history: 최대 1000개의 명령어 기록
- #history -c: 명령어 기록 삭제
- 명령어 자동 완성:
- [Tab] 키 사용
- 이전 명령어 탐색:
- 방향키 ↑ / ↓ 사용
4. 런레벨 (Runlevel)
- 0: 종료
- 1: 단일 사용자 모드 (긴급 복구)
- 2: 다중 사용자 모드 (NFS 지원 X)
- 3: 다중 사용자 모드 (텍스트 기반)
- 4: 미사용
- 5: 다중 사용자 모드 (그래픽 기반)
- 6: 재시작
5. 리눅스 디렉토리 구조
- /bin: 기본 명령어 저장 디렉토리 (e.g., ls, cp, mv)
- /boot: 부팅 관련 파일 및 커널 저장
- /dev: 장치 파일 (e.g., 하드웨어, USB)
- /etc: 시스템 환경설정 파일
- /home: 일반 사용자의 홈 디렉토리
- /lib: 기본 라이브러리 파일 (32/64비트)
- /mnt: 마운트 디렉토리
- /root: 관리자(root) 사용자의 홈 디렉토리
- /sbin: 시스템 관리 명령어 (e.g., ifconfig, fsck)
- /srv: 서버 관련 데이터
- /tmp: 임시 파일 저장 디렉토리
- /usr: 일반 사용자용 프로그램 및 명령어
- /var: 캐시, 로그, 스풀, 임시 파일 등 시스템 변화 데이터
리눅스 기본 명령어 요약 및 정리
1. 명령어 종류
- 내부 명령어: 셸에 포함된 명령어 (e.g., clear, shutdown)
- 외부 명령어: 셸 외부 프로그램 (e.g., ls, cd)
- 내부 명령어가 우선 실행됨.
- 주의: 리눅스는 대소문자를 구분.
2. 명령어 활용
디렉토리 이동- ls: 현재 디렉토리 내용 확인
- cd [경로]: 디렉토리 이동
- cd /etc: etc 디렉토리로 이동
- cd ~: 홈 디렉토리로 이동
- cd ..: 상위 디렉토리로 이동
- mkdir [디렉토리명]: 디렉토리 생성
- mkdir dir1 dir2 dir3: 여러 디렉토리 생성
- mkdir -p dir3/dir4/dir5: 하위 디렉토리 생성
- rmdir [디렉토리명]: 빈 디렉토리 삭제
- rm -r [디렉토리명]: 하위 디렉토리 포함 삭제
- mv [원본] [목적지]: 파일/디렉토리 이름 변경 또는 이동
- touch [파일명]: 파일 생성 또는 수정 시간 갱신
- cp [원본] [복사본]: 파일/디렉토리 복사
- cal: 현재 달력 표시
- date: 현재 날짜 및 시간 확인
- timedatectl: 시스템 타임존 확인 및 설정
- systemctl restart chronyd: 시간 동기화 서비스 재시작
- >: 출력 리다이렉션
- ls -l > ls.txt: ls 출력 결과를 ls.txt에 저장
- <: 입력 리다이렉션
- >>: 기존 파일에 내용 추가
3. 파이프와 파일 조작
파일 부분 출력- head -n [줄수] [파일명]: 파일 앞부분 출력
- tail -n [줄수] [파일명]: 파일 뒷부분 출력
- more [파일명]: 한 페이지씩 출력 (방향키 사용 불가)
- less [파일명]: 한 페이지씩 출력 (방향키 사용 가능)
- split -l [줄수] [파일명]: 지정된 줄 수로 파일 분할
- cat x* > [파일명]: 분할된 파일 합치기
- grep [문자열] [파일명]: 파일에서 특정 문자열 검색
- grep -n 'root' passwd: passwd 파일에서 root 문자열과 줄 번호 검색
4. 유용한 옵션
- mkdir
- -p: 하위 디렉토리 생성
- rm
- -r: 하위 디렉토리 포함 삭제
- -f: 삭제 확인 없이 강제 삭제
- -rf: 모든 파일 강제 삭제
- cat
- -n: 줄 번호 표시
- -b: 빈 줄 제외하고 줄 번호 표시
- tail
- -f: 실시간 파일 내용 모니터링 (Ctrl+C로 종료)
5. 파일 편집기
- vi [파일명]: 텍스트 파일 편집기
- :w: 저장
- :q: 종료
- :wq: 저장 후 종료
- :w!: 강제 저장 (읽기 전용 파일일 경우)
- gedit [파일명]: GUI 기반 편집기