3주차 보고서 - l3ye/DoHeon-embedded-system GitHub Wiki

리눅스 개요

리눅스의 정의

  • 리눅스(Linux)는 유닉스를 기반으로 핀란드의 리누스 토르발스(Linus Torvalds)가 1991년 개발한 오픈 소스 운영체제 커널이자, 이 커널을 기반으로 한 운영체제 자체를 의미합니다. "Linus' Unix"에서 유래한 이름이며, 누구나 소스 코드를 수정하고 재배포할 수 있어 안정성과 보안성이 높아 서버, 데스크톱, 모바일(안드로이드), IoT 기기 등 다양한 분야에서 널리 사용됩니다.

리눅스의 특징

  • 오픈 소스 및 무료: 리눅스는 소스 코드가 공개되어 누구나 자유롭게 사용, 수정, 배포할 수 있으며, 운영체제 자체를 무료로 사용할 수 있습니다. 안정성과 보안성: 리눅스는 시스템이 중단 없이 안정적으로 작동하며, 보안 취약점에 대한 업데이트가 빠르게 이루어집니다.
  • 멀티태스킹 및 멀티유저: 동시에 여러 작업을 처리하고 여러 사용자가 시스템에 접근하여 사용할 수 있는 환경을 제공합니다.
  • 다양한 하드웨어 지원: 다양한 종류의 하드웨어를 지원하며, 하드웨어의 기능을 효율적으로 활용할 수 있도록 설계되었습니다.
  • 강력한 네트워크 기능: 서버 환경에서 강력한 네트워크 구축 및 관리가 가능합니다.
  • 유연한 커스터마이징: 사용자가 자신의 필요에 맞게 시스템을 자유롭게 설정하고 변경할 수 있습니다.
  • GUI 및 CLI 지원: 그래픽 사용자 인터페이스(GUI)뿐만 아니라 텍스트 기반의 명령줄 인터페이스(CLI)를 모두 지원하여 사용자가 선호하는 방식대로 시스템을 제어할 수 있습니다.
  • 유닉스 호환성: 유닉스 운영체제와 호환성을 가지므로, 유닉스 환경에서 사용하던 기술과 명령어를 리눅스에서도 사용할 수 있습니다.

리눅스의 디렉토리

  • / (루트 디렉토리): 모든 디렉토리의 최상위 위치이며, 다른 모든 디렉토리와 파일이 이곳에 포함됩니다.
  • /bin (binaries): 일반 사용자가 사용하는 기본적인 실행 명령어들이 저장됩니다.
  • /sbin (system binaries): 시스템 관리에 필요한 명령어들이 저장되며, 주로 root 계정만 사용합니다.
  • /etc (configuration files): 시스템 설정을 위한 각종 설정 파일들이 저장됩니다.
  • /home: 일반 사용자들의 홈 디렉토리로, 각 사용자는 자신만의 홈 디렉토리를 가집니다.
  • /var (variable data): 로그 파일, 임시 파일, 캐시 등 시스템 운영 중 생성되거나 변경되는 가변적인 데이터가 저장됩니다.
  • /usr (Unix System Resources): 시스템의 핵심적인 프로그램, 라이브러리, 소스 코드, 매뉴얼 등이 저장됩니다.
  • /lib (libraries): /bin 및 /sbin 디렉토리의 실행 파일들이 필요로 하는 공유 라이브러리 파일들이 저장됩니다.
  • /dev (device files): 운영체제에서 사용되는 장치 파일들이 저장됩니다.
  • /proc (process information): 실행 중인 프로세스나 시스템 커널에 대한 정보를 동적으로 보여주는 가상 파일 시스템입니다.
  • /opt (optional software): 시스템에 기본적으로 포함되지 않는 추가적인 애플리케이션이나 서드파티 소프트웨어를 설치할 때 사용되는 디렉토리입니다.

디렉토리 구조의 중요성

  • 표준화: FHS(Filesystem Hierarchy Standard)는 리눅스 디렉토리 구조의 표준을 정의하여 시스템의 일관성과 예측 가능성을 높입니다.
  • 체계적인 관리: 각 디렉토리가 특정 종류의 파일과 데이터를 보관하는 규칙을 가지고 있어, 파일을 효율적으로 관리하고 시스템을 안정적으로 유지할 수 있습니다.
  • 유연성: 디렉토리 구조 덕분에 시스템 운영자는 필요한 파일을 쉽게 찾고 관리하며, 사용자는 자신에게 필요한 환경을 설정할 수 있습니다.

주요 셀 명령어 실습

  1. 파일 시스템 탐색 및 관리 명령어
  • pwd (Print Working Directory): 현재 작업 중인 디렉토리(폴더)의 경로를 보여줍니다.
  • ls (List): 현재 디렉토리의 파일 및 디렉토리 목록을 보여줍니다. -l 옵션을 사용하면 상세 정보(권한, 소유자, 크기 등)를 볼 수 있습니다.
  • cd (Change Directory): 다른 디렉토리로 이동합니다. cd ..는 상위 디렉토리로, cd ~ 또는 cd는 홈 디렉토리로 이동합니다.
  • mkdir (Make Directory): 새로운 디렉토리를 생성합니다.
  • rm (Remove): 파일이나 디렉토리를 삭제합니다. 디렉토리 삭제 시 -r 옵션을 사용합니다.
  • cp (Copy): 파일이나 디렉토리를 복사합니다. cp <원본 파일> <복사될 위치> 형식으로 사용합니다.
  • mv (Move): 파일이나 디렉토리를 이동하거나 이름을 변경합니다.
  1. 파일 내용 확인 및 편집 명령어
  • cat (Concatenate): 파일의 내용을 화면에 전체 출력합니다. cat <파일명> 형식으로 사용합니다.
  • less: 파일의 내용을 한 화면씩 봅니다. 스크롤이 가능하며, q를 눌러 종료합니다.
  • head: 파일의 앞부분(기본 10줄)을 출력합니다.
  • tail: 파일의 뒷부분(기본 10줄)을 출력합니다.
  1. 시스템 정보 확인 명령어
  • man (Manual): 특정 명령어의 사용법(매뉴얼)을 보여줍니다. man <명령어> 형식으로 사용합니다.
  • ps (Process Status): 현재 실행 중인 프로세스(프로그램) 목록을 보여줍니다.
  • top: 시스템에서 실행 중인 프로세스들의 상태를 실시간으로 보여줍니다.
  • echo: 문자열이나 변수 값을 출력합니다.
  • date: 현재 날짜와 시간을 보여줍니다.
  • whoami: 현재 로그인한 사용자의 이름을 보여줍니다.

파이썬 프로그램 작성 및 실행 실습

"Hello, Raspberry Pi!" 출력하기

image

간단한 계산기 프로그램

image
⚠️ **GitHub.com Fallback** ⚠️