리눅스 시스템 운영 중 로그 파일 정리, 디스크 용량 확보, 네트워크 연결 상태 점검, 메모리 사용률 확인을 위해 자주 사용하는 명령어 패턴(One-Liner)을 정리합니다. RedHat/CentOS 7 환경을 기준으로 작성되었습니다.
Test Environment
- OS: CentOS 7, RedHat 7.2
- Shell: Bash
1. 파일 검색 및 정리 (File Management)
서버 운영 중 가장 흔한 이슈는 로그 파일로 인한 디스크 풀(Disk Full)입니다. find 명령어를 사용하여 오래된 파일을 검색하고 삭제하는 패턴입니다.
최근 수정된 파일 찾기
설정 파일(xml 등)이 최근에 변경되었는지 확인할 때 사용합니다.
# 최근 7일 이내(-7)에 수정된 xml 파일 검색
find . -type f -name "*.xml" -mtime -7 -print
오래된 로그 파일 삭제
로그 디렉토리 관리를 위해 일정 기간이 지난 파일을 삭제합니다. 삭제 명령(rm)을 실행하기 전, 반드시 조회(ls)를 먼저 수행하여 대상을 검증해야 합니다.
# 1. 대상 확인 (7일이 지난 로그 파일 조회)
find /log/server1 -name "*.log" -mtime +7 -print
# 2. 삭제 실행 (방법 A: -delete 옵션 사용)
find /log/server1 -name "*.log" -mtime +7 -delete
# 2. 삭제 실행 (방법 B: -exec rm 사용, 가장 범용적)
find /log/server1 -name "*.log" -mtime +7 -exec rm -f {} \;
# 3. 30일 이상 된 로그 파일만 강제 삭제
find /log/server1 -type f -name "*.log" -ctime +30 -exec rm -rf {} \;
대용량 파일 검색
디스크 용량을 많이 차지하는 파일을 찾습니다.
# 3GB 이상인 파일을 찾아 용량과 함께 출력
find . -size +3000000k -exec ls -lh {} \+
날짜순 파일 정렬 보기
기본 ls -l의 날짜 포맷이 보기 힘들 때 ISO 포맷으로 변환하여 확인합니다.
ls --time-style="+%Y-%m-%d %H:%M:%S" -altr | grep ^- | more
2. 네트워크 상태 점검 (Network Monitoring)
웹 서버나 DB 서버의 현재 연결 상태를 확인하여 트래픽 스파이크나 연결 누수(Leak)를 점검합니다.
동시 접속자 수 확인 (Web Server)
ESTABLISHED 상태는 현재 연결이 수립되어 데이터를 주고받는 상태를 의미합니다.
# 80 포트 동시 접속자 수 카운트
netstat -nap | grep :80 | grep ESTABLISHED | wc -l
# 8080 포트(WAS) 동시 접속자 수 카운트
netstat -nap | grep :8080 | grep ESTABLISHED | wc -l
DB 연결 풀(Connection Pool) 확인
WAS에서 DB로 맺은 연결 개수를 확인합니다. 포트 번호로 grep하여 정렬합니다.
# 특정 포트와 연결된 소켓 정보 확인
netstat -anp | grep {port_number}
# 연결 개수 카운트
netstat -anp | grep {port_number} | wc -l
3. 메모리 사용률 점검 (Memory Check)
리눅스의 free 명령어는 버퍼/캐시 메모리를 포함하여 보여주기 때문에, 실제 애플리케이션이 사용하는 메모리(Actual Used)를 계산하기 위해서는 별도의 연산이 필요할 때가 있습니다.
메모리 계산 스크립트 (Shell)
전체 메모리 대비 실제 사용률을 백분율(%)로 계산하는 스크립트입니다.
#!/bin/sh
# free 명령어의 출력 컬럼 위치는 OS 버전에 따라 다를 수 있으므로 확인 필요 (awk $2, $3...)
# Total Memory
TOTAL=`free | grep ^Mem | awk '{print $2}'`
# Used Memory (OS 관점)
USED1=`free | grep ^Mem | awk '{print $3}'`
# Used Memory (Buffer/Cache 제외, CentOS 6 이하 구버전 방식)
# USED2=`free | grep ^-/+ | awk '{print $3}'`
# CentOS 7 이상 (available 컬럼 등 고려 필요하나 단순 계산 시)
# 버퍼/캐시를 포함한 단순 사용률
NOMINAL=$((100*USED1/TOTAL))
echo "Memory Usage: ${NOMINAL}%"
One-Liner (간편 계산)
awk를 사용하여 한 줄로 메모리 사용률을 출력합니다.
# 전체 메모리 대비 사용량(Used) 비율
awk '/^Mem/ {printf("Used: %u%%", 100*$3/$2);}' <(free -m)
# (참고) 버퍼/캐시를 제외한 실 사용률 계산은 free -m의 available 컬럼을 활용하는 것이 정확합니다.
free -m | awk 'NR==2{printf "Memory Usage: %.2f%%\n", ($3/$2)*100 }'
Next Step:
반복적으로 사용하는 위 명령어들을 ~/.bash_profile에 alias로 등록해두면, 긴 명령어를 타이핑하는 수고를 덜고 오타로 인한 사고를 방지할 수 있습니다.