Study: ComputerScience(CS)/CS: Linux

    [Linux] Executable and Linkable Format(ELF): 실행 및 링킹 파일 포맷 (feat. readelf)

    Executable and Linking Format(ELF) UNIX / LINUX 기반에서 사용되는 실행 및 링킹 파일 포맷을 ELF라 하며, 하나의 ELF Header와 파일데이터로 구성됩니다. ELF header : ELF 파일의 Metadata를 가진 Header Segment : 동일한 메모리 속성(read-only, writable, ...)을 가진 하나 또는 그 이상의 섹션의 집합 Section : 특정 정보(machine instructions, symbol table, ..)를 포함하고 있는 ELF file의 작은 조각 Symbol : ELF file내에 저장된 함수 또는 변수의 디스크립션입니다. 간단한 함수 또는 변수의 정보를 포함하고 있습니다. Object file : 컴퓨터에서 읽..

    [Linux] 일정 시간마다 작업 실행시키기(crontab)

    crontab 이란? 특정 시간을 주기로 원하는 작업을 계속 실행시켜 주는 리눅스 전용 작업 스케쥴러입니다. 크론탭에 등록된 작업들은 커맨드 창(Shell)이 실행 여부와 상관없이 동작하기 때문에 서버 등을 운영할 때 편리합니다. ​ 현재 크론탭에 등록된 스케줄 확인 $ crontab -l 현재 등록되어 있는 스케줄을 확인합니다. 하나도 등록되지 않았다면, no crontab for 을 출력하며 끝납니다. ​ 스케줄 등록하기 스케줄은 다음 명령어를 사용하여 등록할 수 있습니다. 해당 명령어를 실행하면, -l 옵션으로 보게 되었던 스케줄 목록을 텍스트 에디터(vi, vim, nano) 등으로 열 수 있게 되고, 해당 스케줄을 직접 작성해주면 됩니다. $ crontab -e ​스케줄의 등록 형식은 다음과 같..

    [Linux] ln 명령어(feat. 리눅스 파일 링킹): 하드링크(Hard Link) VS 심볼릭링크(Symbolic Link)

    리눅스 파일 링킹: 하드링크(Hard Link) VS 심볼릭링크(Symbolic Link) 하드 링크(Hard Link) 와 심볼릭 링크(Symbolic Link) 는 운영체제 파일시스템을 이해하는데 기초적인 개념입니다. 아마 윈도우를 많이 사용한다면, 원본 - 바로 가기 개념이 떠오를 수 있지만 다소 차이가 있으며, 리눅스 환경에서는 개발 환경 구성 시, 심볼릭 링크를 사용해서 파일 경로를 간편하게 관리하기도 합니다. 루트 디렉토리 내에 심볼릭 링크를 구성해서 마운트한 파일 시스템을 연결시킨다던지 Link 조회 ln -l 명령어로 현재 폴더 내 링크를 조회할 수 있습니다. Link 생성(ln) Hard Link 원본 파일과 동일한 inode 를 가지며 원본 파일이 삭제되더라도 링크 파일을 여전히 사용 ..

    [Linux] Graceful Shutdown이란? (feat. SIGINT/SIGTERM/SIGKILL + signal handler)

    Graceful Shutdown 이란? 우아한 종료라고 직역하면 뭔가 어색하지만, 그 역의 경우를 생각해보면 제법 어울리는 표현이라는 생각이 듭니다. 우아한 종료는 프로그램이 종료될 때 최대한 side effect가 없도록 로직들을 잘 처리하고 종료하는 것을 말합니다. Gracueful Shutdown Hard Shutdown hard shutdown: 종료 시그널과 동시에 모든 작업을 중단합니다. e.g. 그대로 컴퓨터를 바로 끄고 퇴근하는 것 graceful shutdown: 하고있던 작업을 적절히 마무리한 뒤 종료되는 것이 핵심입니다. e.g. http 요청을 처리하는 웹서버라면 서버가 종료되기 전, 기존 처리 중이던 요청들을 모두 처리하고 사용했던 리소스(파일, 소켓, DB 연결등)를 닫은 뒤 종..

    [Linux] 프로세스 종류 및 특징 (feat. Demon과 Background Process의 차이)

    Process 프로세스란 하드디스크에 저장된 프로그램이 현재 실행된 상태로 메모리에 상주해 있는 프로그램을 말합니다. 각각의 process는 랜덤한 고유 PID(Process ID)를 부여 받게 됩니다. 이러한 프로세스는 사용자와 상호작용 여부로 2종류로 구분합니다. Foreground Process (이하 fg) 실행하면 화면에 나타나 사용자와 상호 작용하는 프로세스 현재 실행중인 fg 작업을 취소하고 싶을 때: 'ctrl+c' 현재 실행중인 fg 작업을 bg 작업으로 변경하고 싶을 때: 'ctrl+z'를 눌러 잠시 실행을 멈춘 다음 '#bg'명령으로 해당 작업을 bg로 보낼 수 있습니다. Background Process (이하 bg) 실행은 되었지만 화면에 나타나지 않고 뒤에서 실행되고 있는 프로세..