개발 경력 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 # 패킷 캡처
로그 분석의 기본 도구. 이걸 못하면 테스트 엔지니어 자격이 없습니다!
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 # 작업을 포어그라운드로
현대 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 활용 시나리오:
정기 실행하는 헬스 체크 스크립트 예시입니다.
#!/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으로 API 정기 모니터링을 수행하고, 이상 시 Linux 명령어로 로그 분석을 실행하는 운영 플로우입니다.
Apidog으로 부하 테스트를 실행하면서 Linux 명령어로 실시간 시스템 리소스를 모니터링합니다. 
Apidog의 테스트 결과와 Linux 시스템 로그를 결합해서 종합적인 품질 평가를 수행합니다. 
이러한 Linux 명령어를 마스터하면 테스트 엔지니어로서 다음과 같은 스킬을 습득할 수 있습니다:
실천 팁:
여러분도 꼭 이러한 명령어들을 실제로 시도해보세요. 그리고 어떤 발견이 있었는지 댓글로 알려주세요! 함께 Linux 스킬을 향상시켜 나갑시다.