본문 바로가기

전체 글

(423)
리눅스 서버 입문 — ps와 pgrep으로 실행 중인 프로세스 확인하기 서버에 접속하면 먼저 확인하는 것 중 하나가 현재 실행 중인 프로세스다.웹 서버가 떠 있는지, 백그라운드 작업이 실행 중인지, 특정 프로그램이 동작하는지 확인할 때 ps와 pgrep을 사용한다.이번 글은 프로세스 조회까지만 다룬다. 프로세스를 종료하거나 신호를 보내는 작업은 포함하지 않는다.ps는 현재 프로세스의 스냅샷을 보여준다ps는 현재 실행 중인 프로세스 정보를 한 번 출력하는 명령이다.man 페이지에서는 ps를 다음과 같이 설명한다.report a snapshot of the current processes즉, 현재 상태를 계속 갱신해서 보는 도구가 아니라 특정 시점의 목록을 확인하는 명령이다.실시간 변화 확인이 필요하면 top 같은 도구를 사용할 수 있다.기본 ps 결과가 적은 이유아무 옵션 없..
리눅스 서버 관찰 기초: uptime과 /proc/loadavg 이해하기 태그: #Linux #Server #운영체제 #프로세스 #loadaverage #proc리눅스 서버 상태를 확인할 때 가장 먼저 사용하는 명령어 중 하나가 uptime입니다.짧은 명령어지만 현재 시간, 서버가 켜진 시간, 로그인 사용자, load average 정보를 한 번에 확인할 수 있습니다.uptime 확인하기$ uptime14:23:51 up 12 days, 3:07, 2 users, load average: 0.42, 0.65, 0.71출력 내용은 다음과 같습니다.현재 시간시스템 가동 시간현재 로그인한 사용자 수1분, 5분, 15분 기준 load average서버가 얼마나 오래 동작했는지와 최근 부하 흐름을 빠르게 확인할 때 사용합니다.load average는 CPU 사용률이 아니다많이 헷갈리는..
리눅스 서버 입문 — free -h로 메모리 여유 확인하기 앞서 ss로 소켓, journalctl로 로그, df·du로 디스크를 살펴봤다. 이번에는 메모리다. 터미널에서 다음 명령어를 실행한다. free -h free는 물리 메모리와 스왑 사용량, 커널의 버퍼와 캐시를 보여준다. /proc/meminfo에 있는 값을 읽어 정리한 결과다. 출력되는 열은 다음과 같다. 설명은 procps-ng 매뉴얼(free(1)) 기준이다.열의미total사용 가능한 전체 용량. RAM은 일부 예약 영역과 커널 코드가 제외된 MemTotal, 스왑은 SwapTotal이다.used사용 중이거나 사용할 수 없는 메모리. Mem: 행은 total - available로 계산한다.free현재 쓰이지 않는 용량. RAM은 MemFree, 스왑은 SwapFree다.shared주로 메모리 기..
디스크가 찼다는데 어디가 찼을까 — df와 du로 시작하는 리눅스 기초 디스크가 찼다는데 어디가 찼을까 — df와 du로 시작하는 리눅스 기초서버를 쓰다 보면 디스크가 찼다는 경고를 만날 때가 있다.이럴 때 처음부터 모든 디렉터리를 뒤질 필요는 없다.순서는 두 단계면 된다.df로 어느 파일시스템이 찼는지 확인한다.du로 그 안에서 어느 디렉터리가 큰지 찾는다.df와 du는 비슷해 보이지만 보는 대상이 다르다.man 페이지에서도 df는 파일시스템 공간 사용량을 보고(report)하는 명령으로, du는 파일 공간 사용량을 추정(estimate)하는 명령으로 설명한다.이 차이를 알고 시작하면 두 명령을 같이 쓰는 이유가 보인다.1. df — 어디가 찼는지 먼저 확인먼저 df를 실행한다.df인자 없이 실행하면 현재 마운트된 파일시스템의 사용량을 보여준다.기본 출력 단위는 1K 블록..
journalctl로 systemd 저널 읽기 — 리눅스 서버 로그 입문 서버에 문제가 생기면 로그부터 봅니다.systemd를 쓰는 환경에서는 journalctl로 저널 로그를 확인할 수 있습니다.처음부터 모든 옵션을 외우기보다 서비스 하나를 기준으로 범위를 좁혀 보는 편이 편합니다.journalctl은 무엇을 읽나journalctl은 systemd-journald.service와 systemd-journal-remote.service가 저널에 저장한 로그 항목을 출력합니다.systemd-journald는 커널 메시지, syslog() 호출, 네이티브 저널 API 메시지, 서비스의 표준출력·표준오류, 커널 audit 레코드 등을 수집합니다.인자 없이 journalctl만 실행하면 현재 사용자가 접근할 수 있는 저널을 오래된 항목부터 보여 줍니다.로그가 많다면 처음부터 필터를 ..
DuckDB와 SQLite, 무엇이 더 가벼울까: ‘가볍다’의 기준부터 정하기 데이터베이스에서 ‘가볍다’는 말은 하나의 기준이 아닙니다.배포가 간단한지, 바이너리가 작은지, 메모리를 적게 쓰는지, 운영이 단순한지를 나눠서 봐야 합니다. 아래 내용은 공식 문서에서 확인할 수 있는 범위만 정리했습니다.설계 목적부터 다릅니다SQLite는 개별 애플리케이션이나 기기의 로컬 데이터 저장에 적합합니다. 공식 문서는 SQLite를 “Oracle의 대체재가 아니라 fopen()의 대체재”라고 설명합니다.임베디드 기기나 애플리케이션 파일 포맷도 대표적인 사용 사례입니다.DuckDB는 방향이 다릅니다.OLAP, 즉 분석 질의를 목표로 설계됐습니다. 컬럼형 벡터화 실행 엔진을 사용하며, 많은 데이터를 집계하고 분석하는 작업에 초점을 둡니다.따라서 두 제품을 단순히 크기만으로 비교하면 실제 용도 차이를..
DuckDB Quack과 CONNECT preview 정리, 지금 확인할 수 있는 것 먼저 상태부터 확인해야 합니다.이 글에서 다루는 Quack과 CONNECT는 preview/alpha 단계입니다. 최종 사양이 아니며, 프로토콜·함수 이름·설정·기본값이 바뀔 수 있습니다. Alpha는 프로덕션 사용을 권장하지 않습니다.아래는 확정된 사용법이 아니라, 지금 공개된 방향을 확인하는 정리입니다.Quack은 무엇인가DuckDB는 기본적으로 인프로세스 데이터베이스입니다. 별도 DB 서버 없이 프로그램 안에서 실행됩니다.노트북·개인 분석에는 단순하지만, 여러 프로세스가 같은 DB를 쓰거나 원격에서 접근하려면 구조가 달라집니다. 그 방향을 다루는 것이 Quack입니다.공식 소개에 따르면 Quack은 HTTP 기반 클라이언트-서버 프로토콜입니다. 여러 프로세스·원격 클라이언트가 DuckDB를 쓸 수 ..
리눅스 경로와 프로세스부터 eBPF까지, 서버 입문 정리 리눅스 서버를 처음 다룰 때는 경로부터 읽을 수 있어야 합니다.리눅스 커널 문서에 따르면 경로명은 / 문자로 구분합니다./로 시작하면 절대 경로입니다. 파일시스템 루트를 기준으로 위치를 찾습니다.반대로 /로 시작하지 않으면 상대 경로입니다. 현재 작업 디렉터리를 기준으로 위치를 찾습니다.같은 이름이라도 현재 위치에 따라 다른 파일을 가리킬 수 있습니다.서버에서 실행 중인 프로세스를 볼 때 자주 쓰는 곳은 /proc입니다.proc 매뉴얼(매뉴얼 페이지)에 따르면 프로세스 정보는 /proc/pid 형태에서 확인할 수 있습니다. pid는 프로세스를 구분하는 번호입니다.처음에는 실제 서버에서 /proc을 열어보는 편이 이해하기 쉽습니다.서버에서 지금 무슨 일이 일어나는지 보기경로와 /proc이 “지금 무엇이 있..