Study: ComputerScience(CS)/CS: Linux

    [Linux] gdb로 process/threads 디버깅하는 방법(feat. 좀비 프로세스)

    💡 본 문서는 'gdb를 활용한 실행 중인 프로세스 & 스레드 디버깅 하기'에 대해 정리해놓은 글입니다. 딱히 프로세스가 죽은 것은 아닌데 과도하게 cpu를 잡고 있거나(특정 스레드 무한루프), 프로세스가 살아는 있지만 아무런 응답을 하지 않는(데드락) 경우가 있습니다. 혹은 이경우에 사용하는 gdb 디버거를 이용하여 실행 중인 프로세스에 직접 붙어 현재 상태를 체크하는 방법을 정리하였으니 참고부탁드립니다. 1. 스레드/프로세스 상태 확인하기 $ ps -eLf | grep UID PID PPID LWP C NLWP STIME TTY TIME CMD kukuta 11048 1 11048 0 8 10:52 pts/0 00:00:00 kukuta 11048 1 11050 1 8 10:52 pts/0 00:00..

    [Linux] 라우팅(Routing) 이란? 리눅스 라우팅 설정 (feat. route)

    💡 본 문서는 '리눅스 라우팅 설정'에 대해 정리해놓은 글입니다. 이는 라우팅에 대해 설명하고 라우팅 테이블 설정 및 특정 목적지까지 라우팅 경로를 확인하는 방법까지 다뤄었으니 참고하시기 바랍니다. 1. 라우팅 (Routing)이란? 라우팅이란? 한 네트워크에서 다른 네트워크로 최적의 경로를 탐색하여 지정한 후 네트워크 안의 호스트에게 패킷들을 전달하는 과정을 말합니다. 리눅스 시스템은 미리 설정되어 있는 라우팅 테이블이라는 지도를 보고 패킷을 어떤 네트워크 인터페이스를 거쳐 목적지로 보낼지 결정합니다. 2. 리눅스 라우팅 설정 2.1 라우팅 테이블 확인 route 명령어를 통해 현재 시스템에 설정된 라우팅 테이블을 확인할 수 있습니다. $ route Kernel IP routing table Desti..

    [Linux] NTP 서버 시간 동기화

    💡 본 문서는 'NTP 서버를 활용한 시간 동기화'에 대해 정리해놓은 글입니다. 각 서버의 시간이 조금이라도 틀어지게 되면 로그를 확인하는 과정에서 시간 간극으로 인해 정확한 원인을 파악하지 못하는 경우가 발생합니다. 이를 예방하기 위해 서버 간 시간 동기화 하는 과정이 필요하며, 글 하단에서는 내부망 내에서 NTP 서버를 이용하여 지속적으로 시간 동기화를 해주는 작업에 대해 소개하고 있으니 참고하시기 바랍니다. Linux 서버 간 시간 동기화 (일시적) 수동으로 시간 변경하기 (매우 비추천) 사용자가 특정 시간을 지정해서 시간을 설정하는 방법이 있으나, 이는 특정한 목적이 아니라면 매우 비추천하는 방법입니다. date -s "2022-09-27 18:00:00" 하나의 서버를 기준으로 시간 동기화 특정..

    [Linux] C++ 컴파일러에 대하여 (feat. clang/LLVM, clang-format, clang-tidy)

    💡 본 문서는 '[Linux] C++ 컴파일러에 대하여 (feat. clang/LLVM, clang-format, clang-tidy)'에 대해 정리해놓은 글입니다. C++ 파일을 컴파일하기 위해서 많이 사용하는 컴파일러는 gcc와 clang입니다. 본 문에서는 clang에 대한 설명 및 관련 도구들에 대해 정리하였으니 참고하시기 바랍니다. About clang C, C++, Obejctive-C, Obejctive-C++ 프로그래밍 언어를 위한 컴파일러 프론트엔드이며, LLVM을 백엔드로 사용하며 LLVM 2.6 이후로 릴리즈의 일부로 자리잡으며, GCC(GNU 컴파일러 모음)를 대체하는 것을 목표로 하고 있습니다. 현재 GCC가 GPLv3를 적용한 이후 소스 코드 공개를 꺼리는 기업들이 하나둘씩 LL..

    [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 : 컴퓨터에서 읽..