본 콘텐츠의 이미지 및 내용은 AI로 생성되었습니다.
본 콘텐츠의 이미지 및 내용을 무단으로 복제, 배포, 수정하여 사용할 경우 저작권법에 의해 법적 제재를 받을 수 있습니다.
이미지 로딩 중...
AI Generated
2025. 10. 31. · 29 Views
Ubuntu 리눅스 필수 명령어 완벽 가이드
Ubuntu 시스템 관리와 개발 환경 구축에 필요한 핵심 명령어와 개념을 실무 중심으로 정리했습니다. 패키지 관리부터 프로세스 모니터링, 네트워크 설정까지 고급 개발자가 알아야 할 필수 지식을 다룹니다.
들어가며
이 글에서는 Ubuntu 리눅스 필수 명령어 완벽 가이드에 대해 상세히 알아보겠습니다. 총 12가지 주요 개념을 다루며, 각각의 개념에 대한 설명과 실제 코드 예제를 함께 제공합니다.
목차
- apt_패키지_관리
- systemctl_서비스_관리
- 사용자_권한_관리
- 프로세스_모니터링
- 네트워크_설정_및_방화벽
- 디스크_및_파일시스템_관리
- 환경변수_및_셸_설정
- 로그_분석_및_트러블슈팅
- SSH_보안_설정
- 자동화_및_cron_작업
- Docker_컨테이너_관리
- 성능_튜닝_및_최적화
1. apt 패키지 관리
개요
Ubuntu의 핵심 패키지 관리자인 apt를 사용하여 소프트웨어를 설치, 업데이트, 제거하는 방법입니다.
코드 예제
# 패키지 목록 업데이트 및 시스템 업그레이드
sudo apt update && sudo apt upgrade -y
# 특정 패키지 설치
sudo apt install nginx postgresql -y
# 패키지 검색 및 정보 확인
apt search docker | apt show docker.io
설명
apt update로 패키지 목록을 최신화하고, upgrade로 설치된 패키지를 업그레이드합니다. 여러 패키지를 동시에 설치할 수 있으며, search와 show로 패키지 정보를 확인할 수 있습니다.
2. systemctl 서비스 관리
개요
systemd를 통해 시스템 서비스를 시작, 중지, 상태 확인 및 자동 시작 설정을 관리합니다.
코드 예제
# 서비스 상태 확인 및 시작
sudo systemctl status nginx
sudo systemctl start nginx
# 부팅 시 자동 시작 설정
sudo systemctl enable nginx
# 서비스 재시작 및 로그 확인
sudo systemctl restart nginx
sudo journalctl -u nginx -f
설명
systemctl은 서비스의 생명주기를 관리하는 핵심 도구입니다. enable로 부팅 시 자동 시작을 설정하고, journalctl로 실시간 로그를 모니터링할 수 있습니다.
3. 사용자 권한 관리
개요
사용자 계정 생성, 그룹 관리, sudo 권한 부여 등 시스템 보안과 접근 제어를 설정합니다.
코드 예제
# 새 사용자 생성 및 sudo 권한 부여
sudo adduser developer
sudo usermod -aG sudo developer
# 특정 디렉토리 권한 변경
sudo chown -R developer:developer /var/www
sudo chmod 755 /var/www
# 현재 사용자의 그룹 확인
groups
설명
usermod로 사용자를 sudo 그룹에 추가하여 관리자 권한을 부여합니다. chown으로 파일 소유권을 변경하고, chmod로 읽기/쓰기/실행 권한을 설정합니다.
4. 프로세스 모니터링
개요
실행 중인 프로세스를 모니터링하고, 리소스 사용량을 확인하며, 필요시 프로세스를 종료합니다.
코드 예제
# 실시간 프로세스 모니터링
htop
# 특정 프로세스 검색 및 종료
ps aux | grep python
kill -9 $(pgrep -f "python app.py")
# 시스템 리소스 확인
free -h && df -h
설명
htop은 대화형 프로세스 뷰어로 CPU, 메모리 사용량을 실시간으로 확인합니다. pgrep과 kill을 조합하여 특정 프로세스를 찾아 종료하고, free와 df로 메모리와 디스크 상태를 점검합니다.
5. 네트워크 설정 및 방화벽
개요
네트워크 인터페이스 설정, 포트 확인, UFW 방화벽을 통한 보안 규칙 관리를 수행합니다.
코드 예제
# UFW 방화벽 활성화 및 규칙 설정
sudo ufw enable
sudo ufw allow 22/tcp
sudo ufw allow 80,443/tcp
# 네트워크 상태 및 포트 확인
sudo netstat -tulpn | grep LISTEN
ip addr show
설명
UFW는 간편한 방화벽 관리 도구로 특정 포트를 허용하거나 차단할 수 있습니다. netstat으로 열린 포트를 확인하고, ip addr로 네트워크 인터페이스 정보를 조회합니다.
6. 디스크 및 파일시스템 관리
개요
디스크 사용량 분석, 마운트 포인트 관리, 파일시스템 검사 및 복구를 수행합니다.
코드 예제
# 디스크 사용량 상위 디렉토리 확인
du -sh /* 2>/dev/null | sort -rh | head -10
# 파일시스템 마운트 정보 확인
lsblk && df -Th
# 특정 디렉토리 크기 분석
ncdu /var/log
설명
du 명령어로 디렉토리별 용량을 확인하고, sort로 내림차순 정렬하여 용량이 큰 디렉토리를 찾습니다. lsblk는 블록 디바이스를 트리 구조로 보여주며, ncdu는 대화형 디스크 사용량 분석 도구입니다.
7. 환경변수 및 셸 설정
개요
시스템 환경변수 설정, PATH 관리, 셸 프로필 커스터마이징을 통해 개발 환경을 구성합니다.
코드 예제
# ~/.bashrc에 환경변수 추가
echo 'export PATH=$PATH:/usr/local/go/bin' >> ~/.bashrc
echo 'export DATABASE_URL=postgresql://localhost/mydb' >> ~/.bashrc
# 변경사항 즉시 적용
source ~/.bashrc
# 현재 환경변수 확인
printenv | grep PATH
설명
bashrc 파일에 환경변수를 추가하여 셸 시작 시 자동으로 로드되도록 합니다. source 명령으로 재로그인 없이 변경사항을 적용하고, printenv로 설정된 환경변수를 확인합니다.
8. 로그 분석 및 트러블슈팅
개요
시스템 로그를 분석하고, 실시간 로그 모니터링, 특정 패턴 검색을 통해 문제를 진단합니다.
코드 예제
# 시스템 로그 실시간 모니터링
sudo tail -f /var/log/syslog
# 에러 로그만 필터링
sudo grep -i "error" /var/log/syslog | tail -20
# journalctl로 특정 시간대 로그 확인
sudo journalctl --since "1 hour ago" | grep -i "failed"
설명
tail -f로 로그 파일의 변경사항을 실시간으로 추적합니다. grep으로 특정 키워드를 필터링하고, journalctl은 systemd 로그를 시간대별로 조회하여 문제 발생 시점을 파악합니다.
9. SSH 보안 설정
개요
SSH 서버 보안 강화, 키 기반 인증 설정, 포트 변경 등을 통해 원격 접속을 안전하게 관리합니다.
코드 예제
# SSH 키 생성 및 원격 서버에 복사
ssh-keygen -t ed25519 -C "your_email@example.com"
ssh-copy-id user@remote_host
# SSH 설정 파일 편집 (포트 변경, root 로그인 금지)
sudo sed -i 's/#Port 22/Port 2222/' /etc/ssh/sshd_config
sudo sed -i 's/PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config
sudo systemctl restart sshd
설명
ed25519 알고리즘으로 안전한 SSH 키를 생성하고, ssh-copy-id로 공개키를 원격 서버에 등록합니다. sshd_config를 수정하여 기본 포트를 변경하고 root 직접 로그인을 차단하여 보안을 강화합니다.
10. 자동화 및 cron 작업
개요
주기적으로 실행해야 하는 작업을 cron으로 스케줄링하고, 백업 및 모니터링을 자동화합니다.
코드 예제
# crontab 편집 및 작업 추가
crontab -e
# 매일 새벽 2시에 데이터베이스 백업
# 0 2 * * * /usr/local/bin/backup-db.sh >> /var/log/backup.log 2>&1
# 매 5분마다 디스크 사용량 체크
# */5 * * * * df -h | mail -s "Disk Status" admin@example.com
# 현재 등록된 cron 작업 확인
crontab -l
설명
cron 표현식으로 작업 실행 시간을 정의합니다. 분, 시, 일, 월, 요일 순으로 설정하며, */5는 5분마다를 의미합니다. 표준 출력과 에러를 로그 파일로 리다이렉션하여 실행 기록을 남깁니다.
11. Docker 컨테이너 관리
개요
Ubuntu에서 Docker를 사용하여 컨테이너 기반 애플리케이션을 실행, 관리, 모니터링합니다.
코드 예제
# Docker 설치 및 서비스 시작
curl -fsSL https://get.docker.com | sudo sh
sudo usermod -aG docker $USER
# 컨테이너 실행 및 관리
docker run -d -p 80:80 --name webserver nginx
docker ps -a && docker logs -f webserver
# 사용하지 않는 리소스 정리
docker system prune -a
설명
get.docker.com 스크립트로 최신 Docker를 설치하고, 사용자를 docker 그룹에 추가하여 sudo 없이 실행 가능하게 합니다. run 명령으로 컨테이너를 백그라운드 실행하고, prune으로 불필요한 이미지와 컨테이너를 정리합니다.
12. 성능 튜닝 및 최적화
개요
시스템 리소스를 효율적으로 사용하기 위한 커널 파라미터 조정과 스왑 메모리 최적화를 수행합니다.
코드 예제
# 스왑 메모리 사용 우선순위 조정 (0-100, 낮을수록 RAM 우선)
sudo sysctl vm.swappiness=10
echo 'vm.swappiness=10' | sudo tee -a /etc/sysctl.conf
# 파일 디스크립터 최대 개수 증가
ulimit -n 65536
echo '* soft nofile 65536' | sudo tee -a /etc/security/limits.conf
# 네트워크 성능 최적화
sudo sysctl -w net.core.somaxconn=4096
설명
swappiness 값을 낮춰 RAM을 우선 사용하도록 설정하여 성능을 향상시킵니다. ulimit으로 동시 처리 가능한 파일 개수를 늘리고, somaxconn으로 대기 가능한 네트워크 연결 수를 증가시켜 고부하 환경에 대응합니다.
마치며
이번 글에서는 Ubuntu 리눅스 필수 명령어 완벽 가이드에 대해 알아보았습니다. 총 12가지 개념을 다루었으며, 각각의 사용법과 예제를 살펴보았습니다.
관련 태그
#Ubuntu #Shell #SystemAdmin #DevOps #Linux
댓글 (0)
함께 보면 좋은 카드 뉴스
Helm 마이크로서비스 패키징 완벽 가이드
Kubernetes 환경에서 마이크로서비스를 효율적으로 패키징하고 배포하는 Helm의 핵심 기능을 실무 중심으로 학습합니다. Chart 생성부터 릴리스 관리까지 체계적으로 다룹니다.
보안 아키텍처 구성 완벽 가이드
프로젝트의 보안을 처음부터 설계하는 방법을 배웁니다. AWS 환경에서 VPC부터 WAF, 암호화, 접근 제어까지 실무에서 바로 적용할 수 있는 보안 아키텍처를 단계별로 구성해봅니다.
AWS Organizations 완벽 가이드
여러 AWS 계정을 체계적으로 관리하고 통합 결제와 보안 정책을 적용하는 방법을 실무 스토리로 쉽게 배워봅니다. 초보 개발자도 바로 이해할 수 있는 친절한 설명과 실전 예제를 제공합니다.
AWS KMS 암호화 완벽 가이드
AWS KMS(Key Management Service)를 활용한 클라우드 데이터 암호화 방법을 초급 개발자를 위해 쉽게 설명합니다. CMK 생성부터 S3, EBS 암호화, 봉투 암호화까지 실무에 필요한 모든 내용을 담았습니다.
AWS Secrets Manager 완벽 가이드
AWS에서 데이터베이스 비밀번호, API 키 등 민감한 정보를 안전하게 관리하는 Secrets Manager의 핵심 개념과 실무 활용법을 배워봅니다. 초급 개발자도 쉽게 따라할 수 있도록 실전 예제와 함께 설명합니다.