Study: ComputerScience(CS)

    [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 연결등)를 닫은 뒤 종..

    [CS] Logging Level에 대하여 (feat. Logging Framework (spdlog))

    Log Level 에 대하여. Logging Level은 상황에 따라 필요한 로그를 보여주기 위해서 로그 정의할때 사용하는 level을 구분합니다. Logging level을 정의함으로써 얼마나 해당 정보가 crucial한지를 나타냅니다. 총 8단계로 구성되며, ALL < TRACE < DEBUG < INFO < WARN < ERROR < FATAL < OFF 순으로 구성되며, 대게 ALL OFF를 제외한 6단계를 사용합니다. Logging level 정의 ALL This log level logs any logging levels that are defined. It logs everything and includes custom logging levels as well. It is the combin..

    [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) 실행은 되었지만 화면에 나타나지 않고 뒤에서 실행되고 있는 프로세..