Study: ComputerScience(CS)/CS: Linux
[Linux] gdb로 core dump 파일 디버깅하는 방법(feat. load core dump)
💡 본 문서는 'gdb로 core dump 파일 분석하는 방법'에 대해 정리해놓은 글입니다. 열심히 키워놓은 프로그램이 어느 날 갑자기 죽거나 hang 걸리며 뻗어버리는 모습을 볼 때가 있습니다. 일반적으로 운영 로그/에러는 직접 logger를 만들어 따로 잘 저장해두겠지만 미처 고려하지 못한(생각보다 low한) 부분에선 바로 원인을 파악하기가 힘듭니다. 따라서 프로그램 실행 시 core dump를 남기게 설정한다면, 프로그램이 돌연사했을 때 특정 시점의 메모리 상태를 알 수 있어 이슈파악에 유용합니다. 이에 대한 설정 방법과 gdb를 이용한 디버깅 방법도 정리해두었으니 참고 부탁드립니다. 1. core 파일 다루기 core dump 파일은 ELF 형식(실행, 오브젝트, 공유라이브러리, '코어덤프'를 위..

[Linux] 리눅스 시스템 디스크 파티션 및 관련 개념 정리
💡 본 문서는 '리눅스 시스템 디스크 파티션 및 관련 개념'에 대해 정리해놓은 글입니다. 리눅스 시스템 관리에 있어 중요한 부분을 차지하는 디스크 파티셔닝 개념에 대해 다루겠습니다. 디스크 파티셔닝을 다루는 과정에서 필요한 용어들에 대해 알아보고, 특히 리눅스 시스템에 초점을 두었으니 참고부탁드립니다. 1. 파티셔닝 우선 파티셔닝은 하나의 물리 저장장치를 시스템 내부에서 여러 디스크 공간으로 나누는 작업을 일컫습니다. 이때 이 공간은 물리적으로 나뉠 수도 있고, 논리적으로 나뉠 수도 있습니다. 물리적으로 나뉜 공간을 프라이머리(Primary), 논리적으로 나뉜 공간을 익스텐디드(Extended)라고 부릅니다. 프라이머리 공간의 경우, 리눅스에서 최대 4개의 공간으로 나눌 수 있습니다. 따라서 더 많은 파..
[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" 하나의 서버를 기준으로 시간 동기화 특정..