🤖

본 콘텐츠의 이미지 및 내용은 AI로 생성되었습니다.

⚠️

본 콘텐츠의 이미지 및 내용을 무단으로 복제, 배포, 수정하여 사용할 경우 저작권법에 의해 법적 제재를 받을 수 있습니다.

이미지 로딩 중...

Ubuntu 리눅스 필수 명령어 완벽 가이드 - 슬라이드 1/13
A

AI Generated

2025. 10. 31. · 29 Views

Ubuntu 리눅스 필수 명령어 완벽 가이드

Ubuntu 시스템 관리와 개발 환경 구축에 필요한 핵심 명령어와 개념을 실무 중심으로 정리했습니다. 패키지 관리부터 프로세스 모니터링, 네트워크 설정까지 고급 개발자가 알아야 할 필수 지식을 다룹니다.


카테고리:Python
언어:Python
메인 태그:#Ubuntu
서브 태그:
#Shell#SystemAdmin#DevOps#Linux

들어가며

이 글에서는 Ubuntu 리눅스 필수 명령어 완벽 가이드에 대해 상세히 알아보겠습니다. 총 12가지 주요 개념을 다루며, 각각의 개념에 대한 설명과 실제 코드 예제를 함께 제공합니다.

목차

  1. apt_패키지_관리
  2. systemctl_서비스_관리
  3. 사용자_권한_관리
  4. 프로세스_모니터링
  5. 네트워크_설정_및_방화벽
  6. 디스크_및_파일시스템_관리
  7. 환경변수_및_셸_설정
  8. 로그_분석_및_트러블슈팅
  9. SSH_보안_설정
  10. 자동화_및_cron_작업
  11. Docker_컨테이너_관리
  12. 성능_튜닝_및_최적화

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

#Ubuntu#Shell#SystemAdmin#DevOps#Linux#Python

댓글 (0)

댓글을 작성하려면 로그인이 필요합니다.