장애 대응부터 성능 분석까지! 테스트 엔지니어가 알아야 할 Linux 명령어 모음

배고픈코알라·2025년 9월 17일
post-thumbnail

개발 경력 3년차인 제가 신입 시절 "이걸 알았더라면..."하고 후회했던 Linux 명령어들을 모두 공개합니다!

입사 초기에 선배가 "로그 확인해봐"라고 하면 어떤 명령어를 써야 할지 몰라서 매번 구글링했던 쓰라린 기억이 있습니다. 그런 경험을 바탕으로 현장에서 정말 유용한 Linux 명령어들을 엄선해서 정리했습니다.

이 글을 읽으면 장애 대응부터 성능 분석까지, 테스트 엔지니어로서 필요한 Linux 스킬을 한 번에 습득할 수 있습니다!

파일·디렉토리 조작: 기초의 기초

파일 확인 명령어

먼저 기본 중의 기본부터. 로그 파일 확인은 일상적인 업무죠!

cat /etc/passwd              # 파일 전체 내용 표시
more /var/log/messages       # 큰 파일을 페이지 단위로 표시
less /var/log/syslog         # 앞뒤 스크롤 가능, 검색도 가능
head -20 /var/log/nginx.log  # 처음 20줄 표시
tail -f /var/log/apache.log  # 실시간으로 로그 모니터링

전문가 팁: more는 앞쪽으로만 이동 가능하지만, less는 양방향 스크롤이 가능하고 검색 기능(/키워드)도 사용할 수 있습니다. 메모리 사용량도 적어서 큰 파일에는 less를 추천합니다!

파일 검색 명령어

"그 파일이 어디 있었지?" 이런 상황에서 위력을 발휘하는 명령어들입니다.

find /var/log -name "*.log" -mtime -7                  # 7일 이내 수정된 로그 파일
find /home -type f -size +100M                         # 100MB 이상 파일
find /etc -name "*.conf" -exec grep -l "port" {} \;   # "port"를 포함한 설정 파일

updatedb                                               # locate 데이터베이스 업데이트
locate nginx.conf                                     # 파일 고속 검색
which python3                                         # 명령어 경로 표시
whereis nginx                                         # 바이너리, 소스, 매뉴얼 위치

권한 관리

보안의 기본! 권한 설정을 잘못하면 큰일납니다.

ls -la /etc/passwd                          # 상세한 권한 정보 표시
chmod 755 /usr/local/bin/script.sh          # rwxr-xr-x 권한으로 설정
chmod u+x,g+r,o-w filename                  # 심볼 모드로 권한 변경
chown nginx:nginx /var/www/html            # 소유자와 그룹 변경
chgrp www-data /var/log/nginx/             # 그룹 소유권 변경
chmod +t /tmp                               # 스티키 비트 설정
chmod +s /usr/bin/passwd                     # SUID 설정

중요 포인트: 권한 관리는 Linux 보안의 기초입니다. chmod/chown/chgrp의 사용법을 마스터하세요!

시스템 모니터링·성능 분석

리소스 모니터링

시스템 상태를 체크하는 필수 명령어들입니다.

top                               # 실시간 시스템 상황
htop                              # 아름다운 인터페이스의 top
ps aux | grep nginx               # 특정 프로세스 확인
ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%cpu | head -10  # CPU 사용률 랭킹
free -h                            # 메모리 사용 상황
cat /proc/meminfo                  # 메모리 상세 정보
vmstat 1 5                         # 1초 간격으로 시스템 상황을 5회 표시

디스크 용량 관리

"디스크 용량이 부족합니다" 알림이 왔을 때의 대처법!

df -h                               # 디스크 사용률 확인
du -sh /var/log/*                    # 디렉토리 크기 확인
du -ah /home | sort -rh | head -20  # 용량이 큰 파일·디렉토리 TOP20
iostat -x 1                          # 디스크 I/O 통계를 1초 간격으로 표시
iotop                                # 프로세스별 I/O 사용량

네트워크 모니터링

연결 문제 해결에 필수인 명령어들입니다.

netstat -tulpn             # 포트 모니터링 상황
ss -tulpn                  # 더 빠른 netstat 대안
lsof -i :80                # 80번 포트를 사용하는 프로세스
iftop                      # 실시간 통신량 모니터링
nethogs                    # 프로세스별 네트워크 사용량
tcpdump -i eth0 port 80    # 패킷 캡처

텍스트 처리·로그 분석

텍스트 처리의 3대 도구

로그 분석의 기본 도구. 이걸 못하면 테스트 엔지니어 자격이 없습니다!

grep -r "error" /var/log/                     # 에러 로그 재귀 검색
sed 's/old/new/g' file.txt                     # 텍스트 치환
awk '{print $1}' /var/log/nginx/access.log    # 1열 추출

실용적 로그 분석

현장에서 자주 사용하는 실용적인 원라이너입니다.

awk '{print $1}' access.log | sort | uniq -c | sort -nr | head -10  # 접속 수 TOP10 IP
awk '$9 == 404 {print $0}' access.log | wc -l                       # 404 에러 건수

실무 팁: 로그 분석 스킬은 장애 대응 효율성에 직결됩니다. grep/sed/awk 조합을 마스터하세요!

프로세스 관리·서비스 제어

프로세스 관리

폭주하는 프로세스를 멈추고 싶을 때 필수 명령어!

kill -9 PID                # 프로세스 강제 종료
killall nginx              # 이름으로 프로세스 종료
pkill -f "python script"   # 패턴 매치로 프로세스 종료
pgrep -f nginx             # 프로세스 ID 검색
nohup command &            # 백그라운드에서 실행
jobs                       # 작업 목록
bg %1                      # 작업을 백그라운드로
fg %1                      # 작업을 포어그라운드로

systemd 서비스 관리

현대 Linux의 표준 서비스 관리 방법입니다.

systemctl start nginx      # 서비스 시작
systemctl stop nginx       # 서비스 중지
systemctl restart nginx    # 서비스 재시작
systemctl reload nginx     # 설정 다시 읽기
systemctl enable nginx     # 자동 시작 활성화
systemctl disable nginx    # 자동 시작 비활성화
systemctl status nginx     # 서비스 상태 확인
journalctl -u nginx        # 서비스 로그 확인
journalctl -f -u nginx     # 실시간 로그 모니터링

네트워크 설정·장애 대응

네트워크 설정

네트워크 정보 확인 방법입니다.

ip addr show               # IP 주소 정보
ip route show              # 라우팅 정보
ip link show               # 네트워크 인터페이스 정보
ifconfig eth0              # 기존 네트워크 설정 확인
route -n                   # 라우팅 테이블
arp -a                     # ARP 테이블

네트워크 장애 대응

연결 문제 해결에 사용하는 기본 명령어입니다.

ping -c 4 google.com       # 연결 확인 (4회)
traceroute google.com      # 경로 확인
mtr google.com             # 지속적인 경로 확인
telnet 192.168.1.1 80      # 포트 연결 확인
nc -zv 192.168.1.1 80      # 포트 스캔

압축·백업

파일 압축

데이터 백업이나 전송에 필수인 스킬입니다.

tar -czf backup.tar.gz /var/www/                    # gzip 압축으로 아카이브 생성
tar -xzf backup.tar.gz                              # 아카이브 압축 해제
tar -tzf backup.tar.gz                              # 아카이브 내용 확인
tar -czf backup-$(date +%Y%m%d).tar.gz /etc/       # 날짜가 포함된 백업
zip -r backup.zip /var/www/                         # ZIP 형식으로 압축
unzip backup.zip                                     # ZIP 압축 해제
gzip file.txt                                        # 단일 파일 압축
gunzip file.txt.gz                                   # 압축 파일 해제

데이터 동기화

원격 서버와의 데이터 동기화에 편리한 rsync 명령어.

rsync -avz /var/www/ user@remote:/backup/           # 원격 동기화
rsync -avz --delete /var/www/ /backup/              # 삭제도 동기화
rsync -avz --exclude='*.log' /var/www/ /backup/     # 로그 파일 제외

시스템 보안·사용자 관리

사용자 관리

시스템 관리자로서 알아야 할 기본 조작입니다.

useradd -m -s /bin/bash username    # 사용자 생성
usermod -aG sudo username           # sudo 그룹에 추가
passwd username                     # 패스워드 설정
userdel -r username                 # 사용자 삭제 (홈 디렉토리도 삭제)
id username                         # 사용자 정보 확인
who                                 # 로그인 사용자 확인
w                                   # 상세한 로그인 사용자 정보
last                                # 로그인 이력

보안 모니터링

부정 접근 탐지에 사용하는 명령어입니다.

tail -f /var/log/auth.log                    # 인증 로그 실시간 모니터링
grep "Failed password" /var/log/auth.log     # 패스워드 실패 로그
grep "sudo" /var/log/auth.log                # sudo 사용 로그
md5sum file.txt                              # MD5 해시값 계산
sha256sum file.txt                           # SHA256 해시값 계산

고급 명령어 테크닉

명령어 조합·파이프라인

여러 명령어를 조합한 실용적인 원라이너입니다.

# nginx 프로세스 일괄 종료
ps aux | grep nginx | grep -v grep | awk '{print $2}' | xargs kill -9

# 액세스 로그에서 GET 요청의 IP 주소 TOP10
cat /var/log/nginx/access.log | grep "GET" | awk '{print $1}' | sort | uniq -c | sort -nr | head -10

# 에러를 포함한 로그 파일의 상세 정보
find /var/log -name "*.log" -exec grep -l "error" {} \; | xargs ls -la

운영 자동화 스크립트

일상 업무를 효율화하는 셸 스크립트 예시입니다.

#!/bin/bash
echo "=== 시스템 정보 ===" > system_info.txt
uname -a >> system_info.txt
free -h >> system_info.txt
df -h >> system_info.txt
ip addr show >> system_info.txt

면접에서 자주 나오는 질문 대비

성능 조사 관련

기술 면접에서 자주 출제되는 명령어들입니다.

uptime                     # 시스템 가동 시간과 부하
cat /proc/loadavg          # 부하 평균값
top -p PID                 # 특정 프로세스 모니터링
strace -p PID              # 시스템 콜 추적
perf top                   # 성능 분석

스토리지 관리 관련

용량 문제 대처법을 묻는 경우가 많습니다.

du -ah /var | sort -rh | head -20                    # 용량 사용량 TOP20
find /var -type f -size +100M -exec ls -lh {} \;     # 100MB 이상 파일 검색
df -h                                                 # 디스크 사용률
inotifywait -m /var/log/                             # 파일 변경 모니터링

실전 시나리오 연습

서버 장애 대응 플로우

장애 발생 시 초기 대응 명령어 세트입니다.

uptime && free -h && df -h          # 시스템 기본 정보 확인
ps aux | head -20                   # 프로세스 상황 확인
top -n 1 | head -20                 # CPU/메모리 사용 상황
netstat -tulpn | grep LISTEN        # 대기 포트 확인
ss -tulpn                           # 더 빠른 포트 확인
tail -50 /var/log/messages          # 시스템 로그 확인
journalctl -xe                      # systemd 로그 확인

Apidog 활용 시나리오:

  • 장애 대응: API 응답 확인을 Apidog으로 실행하고 서버 로그와 대조
  • 성능 테스트: Apidog으로 요청을 보내고 Linux 명령어로 리소스 사용량 모니터링
  • 자동화 테스트: Apidog 테스트 결과와 Linux 로그를 결합한 종합적인 품질 확인

일상 유지보수 스크립트

정기 실행하는 헬스 체크 스크립트 예시입니다.

#!/bin/bash
LOG_FILE="/var/log/health_check.log"
DATE=$(date '+%Y-%m-%d %H:%M:%S')

echo "[$DATE] 시스템 헬스 체크 시작" >> $LOG_FILE

# 디스크 사용률 체크
DISK_USAGE=$(df -h | grep -E "8[0-9]%|9[0-9]%|100%")
[ ! -z "$DISK_USAGE" ] && echo "[$DATE] 경고: 디스크 사용률이 높음" >> $LOG_FILE

# 메모리 사용률 체크
MEM_USAGE=$(free | grep Mem | awk '{print ($3/$2) * 100.0}')
(( $(echo "$MEM_USAGE > 90" | bc -l) )) && echo "[$DATE] 경고: 메모리 사용률이 높음: $MEM_USAGE%" >> $LOG_FILE

# 시스템 부하 체크
LOAD_AVG=$(uptime | awk -F'load average:' '{print $2}' | cut -d, -f1 | tr -d ' ')
(( $(echo "$LOAD_AVG > 2.0" | bc -l) )) && echo "[$DATE] 경고: 시스템 부하가 높음: $LOAD_AVG" >> $LOG_FILE

echo "[$DATE] 시스템 헬스 체크 완료" >> $LOG_FILE

Apidog와 연계한 Linux 운영 실천

실천 예시 1: API 모니터링과 로그 분석

Apidog으로 API 정기 모니터링을 수행하고, 이상 시 Linux 명령어로 로그 분석을 실행하는 운영 플로우입니다.

실천 예시 2: 성능 테스트

Apidog으로 부하 테스트를 실행하면서 Linux 명령어로 실시간 시스템 리소스를 모니터링합니다.

실천 예시 3: 자동화 테스트 환경

Apidog의 테스트 결과와 Linux 시스템 로그를 결합해서 종합적인 품질 평가를 수행합니다.

정리

이러한 Linux 명령어를 마스터하면 테스트 엔지니어로서 다음과 같은 스킬을 습득할 수 있습니다:

  1. 신속한 문제 특정: 장애 발생 시 원인 규명이 훨씬 빨라집니다
  2. 효율적인 운영: 일상 업무 자동화로 생산성 향상
  3. 예방 보전: 시스템 모니터링으로 장애 미연 방지
  4. 안전한 관리: 적절한 권한 관리로 시스템을 안전하게 운영

실천 팁:

  • 실제로 손을 움직여서 익히기
  • 명령어의 원리 이해하기
  • 여러 명령어 조합 습득하기
  • 보안을 항상 의식하기
  • 새로운 도구와 기술의 지속적 학습

여러분도 꼭 이러한 명령어들을 실제로 시도해보세요. 그리고 어떤 발견이 있었는지 댓글로 알려주세요! 함께 Linux 스킬을 향상시켜 나갑시다.

0개의 댓글