TL;DR
htop부터iftop·nload까지 Linux 명령어 10가지는 서버 자원 모니터링, 로그 분석, 네트워크 점검, 백업과 파일 관리에 쓰이는 DevOps 필수 도구임.htop,journalctl,systemctl은 프로세스와 자원을 확인하고 Systemd 서비스 및 로그를 관리하는 도구임.ss와tcpdump는 네트워크 연결과 포트를 점검하고 패킷을 분석하는 데 쓰임.df,du,awk,sed,find,xargs는 저장 공간 관리와 로그·파일 처리를 지원함.tar,rsync,iftop,nload는 백업 및 파일 동기화, 실시간 대역폭 모니터링에 활용됨.
Linux 명령어가 DevOps 업무에 필요한 이유
- 미국, 독일, 캐나다의 빠르게 진행되는 환경에서 DevOps 엔지니어나 클라우드 아키텍트는 SSH를 통해 원격 Linux 서버와 매일 상호작용함.
- Kubernetes 클러스터 노드 장애를 디버깅하거나 프로덕션 서버 작업 부하를 모니터링하고 CI/CD 파이프라인을 설정하는 업무에서 Linux 명령줄 숙련은 필수임.
- 다음 명령어 10가지는 문제를 더 빠르게 해결하고 클라우드 인프라를 효율적으로 최적화하는 데 쓰임.
1. `htop` — 시스템 자원 및 프로세스 대화형 뷰어
- 기존
top은 모든 Linux 배포판에 포함되며,htop은 CPU, 메모리, 스왑 사용량을 실시간으로 모니터링하는 색상 기반 대화형 인터페이스를 제공함. - 프로덕션 서버의 CPU 사용량이 최적화되지 않은 Docker 컨테이너나 마이크로서비스의 메모리 누수로 급증할 때, 프로세스를 즉시 정렬하고 F9 키로 과도하게 실행되는 작업을 종료할 수 있음.
- 복잡한 프로세스 식별자(PID)를 직접 입력할 필요가 없음.
2. `journalctl` — Systemd 로그 고급 조회
- Ubuntu, RHEL, CentOS 등 엔터프라이즈 데이터센터에서 널리 쓰이는 최신 Linux 배포판은 서비스 관리에 Systemd를 사용함.
journalctl은 Systemd 저널 데몬이 생성한 로그를 조회하고 필터링하는 도구임.- 시스템 서비스 실패나 갑작스러운 애플리케이션 충돌을 조사할 때 지속 로그를 확인하고, 특정 서비스의 로그를 실시간으로 스트리밍해 배포 실패를 디버깅할 수 있음.
sudo journalctl -u nginx.service -f --since "1 hour ago"는 지난 한 시간 동안의 Nginx 서비스 로그를 실시간으로 표시함.
3. `ss` — 네트워크 소켓 및 포트 점검
netstat에만 의존하던 방식 대신,ss는 Linux 서버의 소켓 통계를 출력하고 네트워크 연결을 확인하는 최신 고속 도구임.- 새 애플리케이션 컨테이너를 배포하거나 Node.js·Python 서비스를 특정 포트에 연결하기 전에 포트 점유 여부를 확인하거나 보안 준수 점검을 위해 활성 리스닝 포트를 감사할 수 있음.
ss -tulpn | grep LISTEN은 리스닝 상태인 포트를 확인하는 명령임.
4. `tcpdump` — 문제 해결을 위한 네트워크 패킷 분석
- AWS, GCP, Azure 등 클라우드 환경에서 실행되는 애플리케이션에 연결 시간 초과나 API 핸드셰이크 실패가 발생하면
tcpdump로 터미널에서 TCP/IP 패킷을 캡처하고 검사할 수 있음. - 특정 네트워크 인터페이스를 통과하는 실시간 트래픽을 분석해 마이크로서비스와 데이터베이스 사이의 간헐적인 지연 문제를 진단할 수 있음.
sudo tcpdump -i eth0 port 443 -nn은eth0인터페이스의 443번 포트 트래픽을 숫자 형식으로 캡처함.
5. `df`와 `du` — 디스크 공간 및 저장 공간 모니터링
- 프로덕션 서버의 디스크 공간 부족은 데이터베이스와 로그 수집기를 중단시킬 수 있음.
df는 파일 시스템의 디스크 공간 사용량을 보고하고,du는 파일과 디렉터리의 공간 사용량을 추정함.- CI/CD 파이프라인이 디스크 부족으로 실패하기 전에 정리되지 않은 Docker 이미지 레이어나 로그 파일 등 저장 공간을 가장 많이 차지하는 디렉터리를 빠르게 찾을 수 있음.
du -h --max-depth=1 /var/log는/var/log아래 각 디렉터리의 공간 사용량을 사람이 읽기 쉬운 단위로 표시함.
6. `awk`와 `sed` — 스트림 텍스트 처리 및 로그 파싱
- DevOps 엔지니어는 대용량 텍스트 로그, JSON 파일, 설정 템플릿을 매일 다룸.
awk는 패턴 스캔 및 처리 언어이며,sed는 텍스트를 파싱하고 변환하는 스트림 편집기임.- 보안 사고 중 대용량 Nginx 액세스 로그에서 특정 IP 주소나 오류 코드를 즉시 추출할 수 있음.
awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -nr는 로그 첫 번째 필드를 추출하고 값별 개수를 집계한 뒤 내림차순으로 정렬함.
7. `tar`와 `rsync` — 효율적인 백업 및 파일 동기화
- 스테이징 서버와 프로덕션 서버 사이에서 백업을 관리하고 대용량 아티팩트를 안전하게 옮길 때 안정적인 아카이빙 및 동기화 도구가 필요함.
rsync를 SSH와 함께 사용하면 대역폭을 제한하면서 설정 파일을 미러링하거나 빌드 자산을 효율적으로 동기화할 수 있음.rsync -avz -e ssh /local/app/ user@remote-server:/var/www/app/는 로컬 애플리케이션 디렉터리를 SSH를 통해 원격 서버의 웹 디렉터리로 동기화함.
8. `systemctl` — Systemd 서비스 및 데몬 관리
- 클라우드 인프라는 자동화된 데몬에 크게 의존함.
systemctl은 Systemd 시스템 및 서비스 관리자를 제어하는 중앙 관리 도구임.- 시스템 재부팅 후 Docker, kubelet, Nginx 같은 핵심 백그라운드 서비스의 고가용성을 유지하기 위해 서비스를 재시작하거나 활성화하고 상태를 확인할 수 있음.
sudo systemctl restart docker는 Docker를 재시작하며,sudo systemctl status kubelet --no-pager는 페이지 표시 없이 kubelet 상태를 확인함.
9. `find`와 `xargs` — 파일 검색 및 일괄 실행
find는 지정된 조건에 따라 파일을 검색하고,xargs는 표준 입력을 바탕으로 명령줄을 구성하고 실행함.- 저장 공간을 확보하기 위해 30일이 지난 오래된 임시 백업 파일이나 로그 아카이브를 찾아 삭제하는 작업을 cron 작업으로 자동화할 수 있음.
find /var/backups/ -type f -mtime +30 -exec rm -f {} \;는/var/backups/에서 30일보다 오래된 파일을 찾아 삭제함.
10. `iftop` 또는 `nload` — 실시간 대역폭 모니터링
- 네트워크 성능을 조정하려면 서버의 네트워크 대역폭을 어떤 프로세스나 외부 IP가 사용하는지 추적해야 함.
- 미국 또는 유럽 리전의 클라우드 서버에서 트래픽이 많은 이벤트 중 예상치 못한 아웃바운드 데이터 급증이나 대량 트래픽 부하를 식별할 수 있음.
sudo nload eth0은eth0의 네트워크 대역폭을 모니터링함.
결론
- 이 Linux 명령어 10가지를 익히면 DevOps 엔지니어나 사이트 신뢰성 엔지니어(SRE)로서의 업무 효율을 크게 높일 수 있음.
댓글 (0)
로그인하면 이 기사에 내 생각을 남길 수 있어요