DEV Community

dss99911
dss99911

Posted on • Originally published at dss99911.github.io

Bash 시스템 모니터링 및 성능 분석

Bash 시스템 모니터링 및 성능 분석

Linux 서버의 성능을 모니터링하고 분석하는 방법을 정리했습니다.

실시간 모니터링

top

전체 CPU, 메모리, Swap 사용량을 실시간으로 확인:

top
Enter fullscreen mode Exit fullscreen mode

유용한 단축키:

  • Shift + M: 메모리 사용량 순으로 정렬

vmstat

메모리, CPU, I/O 통계:

vmstat 1 99999          # 1초 간격, 99999회
vmstat -a 1 999         # active/inactive 메모리 표시
vmstat -a -S M 1 999    # MB 단위로 표시
Enter fullscreen mode Exit fullscreen mode

메모리 확인

전체 메모리

free -m
Enter fullscreen mode Exit fullscreen mode

프로세스별 메모리

ps aux --sort -rss                    # RSS 기준 정렬
ps -o pid,user,%mem,command ax | sort -b -k3 -r
Enter fullscreen mode Exit fullscreen mode

프로세스 관리

프로세스 확인

# 특정 프로세스 확인
ps -p 18655 -o comm=
ps -p $PID -o pid,vsz=MEMORY -o user,group=GROUP -o comm,args=ARGS

# 모든 사용자 프로세스 상세
ps -ef
# -e: 다른 사용자 프로세스 포함
# -f: 상세 정보
Enter fullscreen mode Exit fullscreen mode

프로세스 검색

ps -ef | grep java
Enter fullscreen mode Exit fullscreen mode

디스크 I/O

iostat

iostat 1 99999    # 1초 간격
Enter fullscreen mode Exit fullscreen mode

히스토리 (sar)

System Activity Report - 과거 기록 조회:

설치 및 설정

sudo yum install sysstat

# 활성화
# /etc/default/sysstat 파일에서
ENABLED="true"

sudo service sysstat restart
Enter fullscreen mode Exit fullscreen mode

CPU 히스토리

sar -u              # 히스토리만
sar -u 1 30         # 현재 + 히스토리 (1초 간격, 30회)
Enter fullscreen mode Exit fullscreen mode

메모리 히스토리

sar -r
Enter fullscreen mode Exit fullscreen mode

I/O 히스토리

sar -b
Enter fullscreen mode Exit fullscreen mode

디스크 용량

df -h           # 디스크 사용량
ls -lah         # 파일 크기
Enter fullscreen mode Exit fullscreen mode

Job Control

프로세스 관련 명령어

명령어 설명
ps 실행 중인 프로세스 목록
kill 프로세스에 시그널 전송
jobs 현재 쉘의 작업 목록
bg 백그라운드로 전환
fg 포그라운드로 전환

백그라운드 작업

# 실행 중인 서비스 일시 중지
Ctrl + Z

# 백그라운드에서 계속 실행
bg

# 쉘에서 분리
disown

# 작업 목록
jobs -l

# 포그라운드로 전환
fg
Enter fullscreen mode Exit fullscreen mode

사용자 관리

현재 사용자

whoami
Enter fullscreen mode Exit fullscreen mode

다른 계정으로 로그인

sudo su - hyun
Enter fullscreen mode Exit fullscreen mode

사용자 추가/관리

# 사용자 추가
sudo adduser username

# sudo 권한 부여
usermod -aG sudo username

# 그룹 확인
groups
Enter fullscreen mode Exit fullscreen mode

특정 앱을 sudo 없이 실행

sudo groupadd docker && sudo usermod -aG docker USERNAME
# 로그아웃 후 다시 로그인 필요
Enter fullscreen mode Exit fullscreen mode

히스토리

명령어 히스토리 보기

history
Enter fullscreen mode Exit fullscreen mode

히스토리에서 실행

history 4    # 마지막 4개
!4           # 4번 명령 재실행
!!           # 이전 명령 재실행
Enter fullscreen mode Exit fullscreen mode

히스토리 검색 별칭

.bashrc에 추가:

alias gh='history | grep '
Enter fullscreen mode Exit fullscreen mode

cron (스케줄링)

Linux OS 단에서 사용하는 스케줄링:

crontab -l    # 현재 크론 목록
crontab -e    # 크론 편집
Enter fullscreen mode Exit fullscreen mode

날짜/시간

DATE=`date +%Y-%m-%d`
DATE=`date +%Y-%m-%d:%H:%M:%S`
date +'%Y-%m-%d'
date +%F
now=`date +%F`
Enter fullscreen mode Exit fullscreen mode

에러 처리

Locale 경고

warning: setlocale: LC_CTYPE: cannot change locale (UTF-8)
Enter fullscreen mode Exit fullscreen mode

해결:

sudo vi /etc/environment

# 추가
LANG=en_US.utf-8
LC_ALL=en_US.utf-8
Enter fullscreen mode Exit fullscreen mode

명령 결과 확인

echo $?   # 0이면 성공
Enter fullscreen mode Exit fullscreen mode

도움말

man who        # 매뉴얼
help sh        # 쉘 내장 명령
which sh       # 명령어 위치
type sh        # 명령어 유형 및 위치
mkdir --help   # 명령어 도움말
Enter fullscreen mode Exit fullscreen mode

유용한 도구들

필터 명령어

명령어 설명
xargs 입력을 여러 개 받아 각각 실행
sort 정렬 (-n: 숫자, -r: 역순)
uniq 중복 제거 (정렬된 데이터에서)
grep 패턴 검색 (-v: 반전, -i: 대소문자 무시)
fmt 텍스트 포맷팅
head/tail 앞/뒤 출력
tr 문자 변환
sed 스트림 편집
awk 텍스트 처리 언어

xargs 예시

ls -p | grep / | xargs open       # 하위 폴더 모두 열기
find . -print0 | xargs -0 ls     # null 문자로 분리
Enter fullscreen mode Exit fullscreen mode

grep 옵션

grep -A1 pattern    # 매칭 다음 1줄도 표시
grep -v 'aa'        # aa가 없는 줄
grep -i pattern     # 대소문자 무시
grep -n pattern     # 라인 번호 표시
Enter fullscreen mode Exit fullscreen mode

sed 예시

MySQL 결과를 CSV로 변환:

mysql -h host -uadmin -p --batch -e "SELECT * FROM table" | \
sed 's/"/""/g;s/^/"/g;s/$/"/g;s/[[:cntrl:]]/","/g' > output.csv
Enter fullscreen mode Exit fullscreen mode

Originally published at https://dss99911.github.io

Top comments (0)