리눅스 표준입출력

리눅스에서 모든 프로세스는 세 가지 기본 파일 디스크립터를 사용합니다:

  1. 표준 입력 (stdin): 기본적으로 키보드에서 입력을 받는 채널입니다. 파일 디스크립터 번호는 0입니다.
  2. 표준 출력 (stdout): 기본적으로 터미널로 출력되는 채널입니다. 파일 디스크립터 번호는 1입니다.
  3. 표준 에러 (stderr): 오류 메시지가 출력되는 채널입니다. 파일 디스크립터 번호는 2입니다.

리눅스의 파이프 (|)

  • 파이프(|)는 한 프로세스의 출력을 다른 프로세스의 입력으로 전달하는 데 사용됩니다.
  • 두 명령어를 연결하여 데이터를 처리할 때 매우 유용합니다.

사용 예제

  1. lsgrep 조합:
    • ls의 출력(현재 디렉터리의 파일 목록)을 grep에 전달하여 .txt가 포함된 파일만 출력합니다.
  2. ls | grep txt
  3. psgrep 조합:
    • 실행 중인 프로세스 목록에서 apache와 관련된 프로세스를 필터링합니다.
  4. ps aux | grep apache

리눅스의 리디렉션

  • 리디렉션은 표준 입력, 표준 출력, 표준 에러를 파일로 저장하거나 다른 프로세스에 전달하는 방법입니다.

주요 리디렉션 기호

  1. 출력 리디렉션 (> 또는 >>)
    • >: 기존 파일을 덮어씁니다.
    • >>: 기존 파일의 내용 뒤에 추가합니다.
      echo "Hello" > file.txt   # file.txt에 Hello 저장
      echo "World" >> file.txt  # file.txt의 끝에 World 추가
  2. 입력 리디렉션 (<)
    • 파일 내용을 입력으로 사용합니다.
      wc -l < file.txt   # file.txt의 라인 수를 출력
  3. 표준 에러 리디렉션 (2>)
    • 오류 메시지를 파일로 저장합니다.
      ls invalid_dir 2> error.log  # 오류 메시지를 error.log에 저장
  4. 출력과 에러를 함께 리디렉션
  5. command > output.txt 2>&1

리눅스의 백그라운드 실행

  • 백그라운드 실행은 프로세스를 실행하는 동안 터미널이 작업을 기다리지 않고 다음 명령어를 받을 수 있게 합니다.

사용 방법

  1. 명령어 끝에 & 추가:
    • sleep 60 명령어를 백그라운드에서 실행합니다.
  2. sleep 60 &
  3. 백그라운드 작업 확인:
  4. jobs
  5. 백그라운드 작업 포그라운드로 전환:
  6. fg %job_id
  7. 작업 중단 후 백그라운드 전환:
  8. command Ctrl + Z # 작업 중단 bg # 작업을 백그라운드로 실행

가비지 컬렉션 작동 방식

  • 가비지 컬렉션은 메모리 관리를 자동으로 수행하는 기능으로, 사용되지 않는 객체를 탐지하여 메모리를 해제합니다.

동작 원리

  1. 참조 카운팅:
    • 객체가 참조되고 있는 횟수를 추적합니다. 참조가 0이 되면 메모리를 해제합니다.
  2. 마크 앤 스위프 (Mark and Sweep):
    • 사용 중인 객체(Reachable)를 마킹하고, 마킹되지 않은 객체(Unreachable)를 제거합니다.
  3. 세대별 관리:
    • 새로 생성된 객체(Young Generation)와 오래된 객체(Old Generation)를 구분하여 효율적으로 관리합니다.
    • Java, Python 등에서 사용됩니다.

cp 명령어

  • 파일 및 디렉토리를 복사하는 명령어입니다.
  • 기본 문법:
    cp [옵션] <원본> <대상>
    사용 예제
  1. 파일 복사:
    • file1.txtfile2.txt로 복사합니다.
  2. cp file1.txt file2.txt
  3. 디렉토리 복사:
    • dir1 디렉토리를 dir2 디렉토리로 복사합니다.
  4. cp -r dir1 dir2
  5. 복사 시 경고 메시지 방지:
    • 덮어쓰기 전에 사용자에게 확인 메시지를 표시합니다.
  6. cp -i file1.txt file2.txt

rm -r 명령어

  • 디렉토리 및 파일을 재귀적으로 삭제합니다.
  • 기본 문법:
    rm -r [옵션] <파일 또는 디렉토리>
    사용 예제
  1. 디렉토리 삭제:
    • dir1 디렉토리와 그 안의 내용을 모두 삭제합니다.
  2. rm -r dir1
  3. 강제 삭제:
    • 확인 없이 dir1 디렉토리와 내용을 모두 삭제합니다.
  4. rm -rf dir1

리눅스 대표 커맨드

  1. 파일 처리
    • ls: 디렉토리 내용 보기
    • cd: 디렉토리 이동
    • pwd: 현재 디렉토리 출력
    • cat: 파일 내용 출력
    • touch: 빈 파일 생성
  2. 파일 관리
    • cp: 파일 복사
    • mv: 파일 이동 또는 이름 변경
    • rm: 파일 삭제
  3. 시스템 정보
    • df: 디스크 사용량 보기
    • du: 디렉토리 크기 보기
    • top: 실행 중인 프로세스 확인
    • ps: 현재 프로세스 상태 확인
  4. 네트워크
    • ping: 네트워크 연결 확인
    • curl: URL 요청 및 데이터 전송
    • wget: 파일 다운로드
  5. 압축 및 아카이브
    • tar: 파일 아카이브 및 압축
    • gzip: 파일 압축
  6. 사용자 관리
    • whoami: 현재 사용자 이름 확인
    • passwd: 비밀번호 변경

위 명령어들을 활용하면 리눅스 시스템을 보다 효율적으로 사용할 수 있습니다. 필요 시 추가 설명을 요청하세요!

+ Recent posts