리눅스 일반

IO 리다이렉션

리눅스의 입력과 출력은 다음 세가지로 구성됨. 표준입력, stdin(0), 표준출력 stdout(1), 표준에러 stderr(2). 터미널을 사용할 때 stdin은 키보드를 사용해 전송되고 에러는 stdout과 stderr는 화면에 출력된다. 리눅스는 각 출력별로 리다이렉션 명령을 가진다.

  • > 표준 출력 Overwrite, >> 표준출력에 이어 붙이기
  • < 표준 입력 Overwrite, << 표준입력에 이어 붙이기
  • 2> 표준에러 Overwrite, 2>> 표준에러에 이어 붙이기

유사하게 파이프 (|)를 사용해 프로그램 간 스트림을 리다이렉트할 수도 있다.

이런 입력들을 조건에 맞는 것들만 골라주는 filter들도 존재한다. 대표적으로 find, grep, wc등이 존재함.

https://unix.stackexchange.com/questions/171025/what-does-do-vs

셔뱅 (#!)

sharp(#) + bang(!) 셔뱅, 샤뱅, 해시뱅등으로 불리며 유닉스 계열 운영체제에서 첫줄을 인터프리터로 지정하는데 사용한다. e.g) !/bin/sh

https://ko.wikipedia.org/wiki/%EC%85%94%EB%B1%85

스왑 (swap)

하드디스크를 메모리 처럼 사용하는 기술. 스와핑은 물리 메모리가 하드디스크의 영역으로 이동하는 것을 가리킨다. 스타트업시에 사용하는 많은 메모리 페이지는 초기화시에 한번만 사용되는 경우가 많음. 이런 영역들을 스왑영역으로 옮겨 가용 메모리를 늘릴 수 있음. 스왑 파티션, 스왑 파일 두가지 형태로 존재함. 리눅스 swappiness라고 해서 스왑 활용도를 정할 수 있는 인자가 존재한다.

리눅스 스왑 파티션이란?

Inode(index node)

유닉스 계열 파일시스템에서 사용하는 자료구조.

https://en.wikipedia.org/wiki/Inode

https://www.linuxtoday.com/blog/what-is-an-inode.html

Epoll(Event poll)

리눅스 커널에서 비동기 IO를 위해 지원하는 데이터 구조로 이벤트가 발생한 파일 디스크립터만 구조체를 통해 넘겨준다. 유사하게 OS X나 FreeBSD에서는 kqueue 를 사용한다. select는 1024개의 파일 디시크립터만을 처리할 수 있고 매번 모든 스크립터를 풀스캔하기 때문에 O(n)의 복잡도를 가지는 반면 epoll은 훨씬 많은 디스크립터를 처리할 수 있으며 복잡도도 O(발생한 이벤트의 수)로 훨씬 나은 성능을 보여준다.

https://medium.com/@copyconstruct/the-method-to-epolls-madness-d9d2d6378642

로그폴더(/var/log)

  • /var/log/syslog 또는 /var/log/messages 인증관련된 메시지를 제외한 모든 메시지가 남는 곳
  • /var/log/boot.log 부팅관련 메시지
  • /var/log/auth, /var/log/secure 인증관련 로그
  • /var/log/demsg 커널 링버퍼 정보를 담고 있다. 시스템이 부팅되면서 하드웨어 정보들을 출력하는데 그것들을 담고 있는 곳. dmesg 커맨드로 볼 수 있다.
  • /var/log/cron 크론 관련 메시지가 남는 곳
  • /var/log/btmp, 실패한 로그인 기록을 남긴다.
  • /var/log/utmp 현재 로그인 상태,
  • /var/log/wtamp 로그인,로그웃 기록.
  • /var/log/httpd 아파치 httpd 데몬의 접근 기록
  • /var/log/yum yum커맨드 기록
  • 등등등..