본문 바로가기
Ubuntu

우분투 서버 운영자를 위한 필수 명령 프롬프트 10선 (완전 초보용)

by 마틴블레이크 2025. 12. 21.
반응형

우분투 서버 운영자를 위한 필수 명령 프롬프트 10선 (완전 초보용)

요약

우분투에서 서버를 운영하려면 결국 터미널(셸)에서 명령을 쳐야 합니다. 여기서 말하는 “명령 프롬프트”는 터미널의 입력 줄, 그리고 그 위에서 쓰는 기본 명령어들을 통틀어 부르는 말로 이해하시면 됩니다.

이 글에서는 실제 서버를 운영할 때 거의 매일 쓰게 되는 필수 명령어들을 주제별로 묶어서 설명드립니다. 각 명령이 언제·왜 필요한지, 대표 예제, 실수하기 쉬운 위험 포인트까지 같이 적어두었으니, 그대로 따라 해 보시면서 손에 익히시면 됩니다.

목차


1. 핵심 포인트

  • 우분투 서버 관리는 대부분 터미널 명령어로 이뤄집니다. 처음에는 낯설지만, 자주 쓰는 몇 개만 익혀도 관리 난이도가 크게 떨어집니다.
  • ssh는 “서버에 접속하는 문”, sudo는 “관리자 모드 스위치”라고 이해하시면 됩니다.
  • 서비스 상태는 systemctl, 로그는 tail / journalctl, 서버 상태는 top / df / free로 보는 것이 기본 패턴입니다.
  • 명령어 자체만 외우기보다 “문제가 생겼을 때 어떤 순서로 확인할지”를 생각해 두시면 실전에서 훨씬 도움이 됩니다.

2. 서버 접속과 권한: ssh, sudo

2-1. ssh – 서버에 접속하는 기본 문

원격 우분투 서버에 접속할 때 거의 항상 사용하는 명령이 ssh입니다.

# 기본 형태
ssh 사용자명@서버주소

# 예시 – ubuntu 사용자로 1.2.3.4 서버 접속

ssh ubuntu@1.2.3.4

# 특정 포트(예: 2222번)로 접속

ssh -p 2222 ubuntu@1.2.3.4

처음 접속 시 “Are you sure you want to continue connecting (yes/no)?” 라는 문구가 뜨면 yes를 입력하면 됩니다. 이후부터는 비밀번호 또는 키 파일로 인증해 접속하게 됩니다.

2-2. sudo – 관리자 권한으로 실행하기

서버 설정을 바꾸거나 패키지를 설치하려면 root 권한이 필요합니다. 하지만 root로 직접 로그인하는 것은 보안상 좋지 않기 때문에, 보통 일반 계정으로 접속 후 필요한 명령 앞에 sudo를 붙입니다.

# 패키지 목록 업데이트
sudo apt update

# Nginx 설치

sudo apt install nginx

# 시스템 설정 파일 편집

sudo nano /etc/nginx/nginx.conf

sudo를 사용할 때는 항상 “이 명령이 시스템 전체에 어떤 영향을 줄지”를 한 번 더 생각해 보시는 습관이 중요합니다.


3. 파일·폴더 기본: cd, ls, pwd, mkdir, rm

3-1. 위치 이동과 현재 위치 확인: cd, pwd

  • cd 폴더명 – 해당 폴더로 이동
  • cd ~ – 내 홈 디렉터리로 이동
  • cd .. – 한 단계 상위 폴더로 이동
  • pwd – 현재 경로 출력
cd /var/www
pwd   # /var/www 경로가 출력됨

3-2. 파일·폴더 보기: ls

ls는 현재 폴더 안의 파일과 디렉터리를 보여줍니다.

ls          # 기본 목록
ls -l       # 자세한 정보(권한, 용량, 수정 시간)
ls -la      # 숨김 파일까지 모두 표시

3-3. 폴더 생성과 삭제: mkdir, rm

  • mkdir 폴더명 – 새 폴더 생성
  • rm 파일명 – 파일 삭제
  • rm -r 폴더명 – 폴더와 그 안의 내용 삭제
  • rm -rf 폴더명 – 묻지 않고 강제 삭제(매우 위험)

주의: 서버에서 rm -rf는 신중하게 사용해야 합니다. 경로를 잘못 적으면 중요한 시스템 파일까지 지워질 수 있습니다.


4. 서비스 관리: systemctl

우분투 서버에서 웹 서버(Nginx, Apache), 데이터베이스(MySQL, PostgreSQL) 같은 대부분의 서버 프로그램은 서비스(데몬)로 동작합니다. 이 서비스들을 켜고 끄고 상태를 확인하는 명령이 systemctl입니다.

4-1. 자주 쓰는 systemctl 명령

# 서비스 상태 확인
sudo systemctl status nginx

# 서비스 시작 / 중지 / 재시작

sudo systemctl start nginx
sudo systemctl stop nginx
sudo systemctl restart nginx

# 서버 부팅 시 자동 시작 설정 / 해제

sudo systemctl enable nginx
sudo systemctl disable nginx

서비스 이름은 nginx, apache2, mysql, sshd 등 각 프로그램에 따라 다릅니다. status로 상태를 확인했을 때 active (running)이면 정상 동작 중입니다.


5. 로그 확인: tail, less, journalctl

5-1. tail – 로그 끝부분 빠르게 보기

문제가 생겼을 때 가장 먼저 보는 것이 로그입니다. 로그 파일의 “마지막 몇 줄”을 보는 가장 간단한 명령이 tail입니다.

# nginx 오류 로그의 마지막 20줄 확인
sudo tail -n 20 /var/log/nginx/error.log

# 새 로그가 생길 때마다 실시간으로 보기

sudo tail -f /var/log/nginx/error.log

-f 옵션은 “follow”의 약자입니다. 서버에 요청이 들어올 때마다 로그가 밑으로 계속 흘러내립니다.

5-2. less – 긴 파일을 스크롤하며 보기

less는 긴 로그 파일을 스크롤하며 읽기 좋게 열어 주는 명령입니다.

sudo less /var/log/nginx/access.log
  • 위/아래 화살표: 한 줄씩 이동
  • Space: 한 페이지 아래로
  • /검색어: 특정 문자열 검색
  • q: 종료

5-3. journalctl – systemd 서비스 로그 확인

systemd로 관리되는 서비스는 대부분 journalctl로도 로그를 볼 수 있습니다.

# nginx 서비스의 최신 로그 보기
sudo journalctl -u nginx --since "10 minutes ago"

# 실시간으로 로그 확인

sudo journalctl -u nginx -f

6. 리소스 상태 확인: top, df, free

6-1. top – CPU·메모리 실시간 모니터링

서버가 느려졌을 때 “어떤 프로세스가 리소스를 많이 쓰는지”를 확인하는 기본 명령입니다.

top
  • CPU 사용률 상위 프로세스, 메모리 사용량, 로드 평균 등을 실시간으로 보여 줍니다.
  • q 키를 눌러 종료할 수 있습니다.

6-2. df – 디스크 사용량 확인

디스크가 꽉 차면 서버가 심각하게 느려지거나, 로그가 더 이상 기록되지 않는 문제가 생깁니다. df로 주기적으로 확인해 두는 것이 좋습니다.

# 사람 눈에 보기 좋은 단위(-h)
df -h

Use% 값이 90% 이상으로 올라가면 정리를 고민할 시점이라고 보시면 됩니다.

6-3. free – 메모리 사용량 확인

메모리가 부족하면 서버가 버벅거리거나, 프로세스가 강제 종료(OOM)될 수 있습니다.

free -h

used, available 값을 보면서 여유 메모리가 얼마나 있는지 확인하시면 됩니다.


7. 네트워크 상태 확인: ip, ss

7-1. ip – 서버의 IP 주소와 인터페이스

서버가 어떤 IP 주소를 갖고 있는지, 어떤 네트워크 인터페이스가 있는지 확인할 때 ip 명령을 사용합니다.

# 전체 인터페이스 정보
ip a

# 특정 인터페이스(예: eth0)만 보기

ip addr show eth0

7-2. ss – 포트 열림 상태 확인

예를 들어 “80번 포트가 실제로 열려 있는지”, “어떤 프로세스가 해당 포트를 사용 중인지” 확인할 때 ss 명령이 유용합니다.

# 현재 열려 있는 TCP 포트와 프로세스
sudo ss -tulpn

# 80번 포트를 사용하는 프로세스만 필터

sudo ss -tulpn | grep :80

이 명령으로 웹 서버, DB 서버가 실제로 해당 포트를 리스닝 중인지 빠르게 확인할 수 있습니다.


8. 필수 명령어 요약 표

카테고리 명령 주요 역할 대표 예제 주의사항
접속·권한 ssh 원격 서버에 접속 ssh ubuntu@1.2.3.4 보안을 위해 비밀번호 대신 키 인증 사용 권장
접속·권한 sudo 관리자 권한으로 명령 실행 sudo apt install nginx 시스템 전체에 영향을 줄 수 있으므로 항상 두 번 확인
파일·폴더 cd, ls, pwd 경로 이동 및 목록 확인 cd /var/www && ls 작업 전에 항상 pwd로 현재 위치 확인
파일·폴더 mkdir, rm 디렉터리 생성·삭제 mkdir logs, rm -r logs rm -rf는 매우 위험, 경로를 세 번 확인
서비스 systemctl 서비스 시작·중지·상태 확인 sudo systemctl status nginx 서비스 이름을 정확히 확인하고 사용
로그 tail, less 로그 파일 내용 확인 sudo tail -f error.log 민감 정보가 로그에 남을 수 있음에 유의
로그 journalctl systemd 서비스 로그 확인 sudo journalctl -u nginx -f 기간 필터를 잘못 지정하면 로그가 너무 많을 수 있음
리소스 top CPU·메모리 실시간 모니터링 top 종료는 q
리소스 df, free 디스크·메모리 사용량 확인 df -h, free -h Use%가 90% 이상이면 용량 정리 필요
네트워크 ip, ss IP 정보 및 포트 상태 확인 ip a, sudo ss -tulpn 보안상 결과를 외부에 그대로 공유하지 않도록 주의

9. 따라 해보는 실습 순서

아래 순서대로 한 번씩 실행해 보시면, 실제 운영 중에 어떤 흐름으로 명령을 사용하는지 감이 잡히실 것입니다.

  1. ssh로 테스트 서버에 접속하기
    로컬 PC에서 ssh 사용자명@서버IP로 접속합니다. 접속 후 whoami, pwd를 쳐서 어떤 계정, 어떤 경로에 있는지 확인합니다.
  2. 기본 경로 탐색
    cd /, ls, cd /var, cd /var/log 등을 사용해 주요 폴더를 구경해 봅니다. 이때 항상 pwd로 현재 경로를 확인하는 습관을 들이시면 좋습니다.
  3. 서비스 상태와 로그 확인
    예를 들어 Nginx가 설치되어 있다면 sudo systemctl status nginx로 상태를 확인하고, sudo tail -f /var/log/nginx/access.log로 로그가 흘러오는지 확인합니다.
  4. 리소스 상황 체크
    top을 실행해 CPU·메모리 상황을 보고, df -hfree -h로 디스크·메모리 여유를 확인합니다.
  5. 네트워크 포트 점검
    ip a로 서버 IP를 확인하고, sudo ss -tulpn | grep :80으로 80번 포트를 사용하는 프로세스가 있는지 체크해 봅니다.
  6. 마지막으로 정리
    테스트용으로 만든 폴더나 파일이 있다면 rm, rm -r로 삭제하고, 로그 확인을 마쳤으면 q 또는 Ctrl+C로 명령을 종료합니다.

10. 추가로 알고 있으면 좋은 팁

  • history 명령history | grep nginx처럼 사용하면 과거에 어떤 명령을 쳤는지 찾아볼 수 있어, “전에 어떻게 설정했더라?” 할 때 유용합니다.
  • man 페이지man systemctl처럼 쓰면 해당 명령의 공식 설명서를 볼 수 있습니다. 영어가 조금 필요하지만, 옵션을 정확히 알고 싶을 때 꼭 필요합니다.
  • alias 설정 – 자주 쓰는 긴 명령을 짧게 줄이고 싶다면 ~/.bashrcalias ll='ls -alF' 같은 줄을 추가해 두시면 편리합니다.
  • 테스트 서버에서 먼저 연습 – 실 서비스 서버에서 바로 명령을 실험하기보다, 가상 머신이나 테스트 서버에서 먼저 충분히 연습해 보시는 것을 강력히 권장드립니다.

 

반응형