Python으로 Linux 시스템 정보 수집 자동화
서버 상태를 점검할 때 uname -a, free -h, df -h, ip addr를 하나씩 따로 실행하고 눈으로 훑어보는 방식은 서버가 한두 대일 때는 문제없지만, 배포 전 자동 점검이나 정기 헬스체크처럼 반복적으로…
서버 상태를 점검할 때 uname -a, free -h, df -h, ip addr를 하나씩 따로 실행하고 눈으로 훑어보는 방식은 서버가 한두 대일 때는 문제없지만, 배포 전 자동 점검이나 정기 헬스체크처럼 반복적으로…
서버 여러 대의 상태를 순차적으로 점검하는 스크립트를 짜본 적이 있다면 익숙한 문제가 있다. 호스트 10대를 ping으로 확인하는 데 각각 1초가 걸린다면, for 루프로 하나씩 처리할 경우 전체 실행 시간은 10초에…
ps, top, htop 같은 도구는 어떻게 실행 중인 모든 프로세스의 상태와 메모리 사용량을 실시간으로 보여줄까. 답은 의외로 단순한데, 이 도구들은 별도의 커널 API를 호출하는 게 아니라 /proc 아래의 파일들을 읽어서…
파이썬으로 시스템 프로그래밍을 하다 보면 표준 라이브러리에 없는 저수준 기능이 필요한 순간이 온다. 특정 syscall을 직접 호출해야 하거나, 이미 검증된 C 라이브러리(.so)를 재사용하고 싶거나, 순수 파이썬으로는 느린 연산을 C로 짜둔…
Python 스크립트에서 셸 명령어나 외부 프로그램을 호출해야 하는 상황은 흔하다. os.system()은 출력을 캡처할 수 없고, os.popen()은 에러 처리와 스트림 제어가 번거롭다. 특히 자동화 스크립트에서 외부 명령의 표준출력/표준에러를 각각 받아 로그로…
sed는 스트림 편집기(stream editor)로, 텍스트 스트림을 편집하고 변환하는 데 사용되는 강력한 도구이다. sed는 주로 리눅스 및 유닉스 환경에서 활용되며, 특히 스크립트 및 대량 텍스트 처리에 유용하다. 이 글에서는 sed 사용법에…
수백만 행짜리 데이터프레임을 통째로 훑어보거나 모델에 넣기 전에, 일부만 빠르게 뽑아 분포를 확인하고 싶을 때가 있다. df.head()는 앞부분만 보여주기 때문에 데이터가 정렬돼 있으면 편향된 인상을 준다. 반대로 그룹별 비율은 유지한…
데이터를 받으면 가장 먼저 하게 되는 작업이 값의 분포를 파악하는 것이다. Pandas는 평균을 구하는 mean(), 고유값을 뽑는 unique(), 값별 개수를 세는 value_counts() 같은 통계 함수를 기본으로 제공한다. 이 글에서는 예제…
표 형태의 데이터를 다룰 때 파이썬에서 가장 많이 쓰는 게 Pandas DataFrame이다. DataFrame은 크게 세 요소로 이뤄진다 — 행을 식별하는 index, 열을 식별하는 columns, 그리고 실제 값들인 data. 이 글에서는…
다른 언어를 다뤄본 사람이라도 Python(파이썬) 연산자에서 몇 군데는 헷갈릴 수 있다. 대표적으로 /와 //의 차이, ==와 is의 차이가 그렇다. 이 글에서는 파이썬의 연산자 종류를 실제 코드 실행 결과와 함께 정리한다.…