
우분투 서버 운영자를 위한 필수 명령 프롬프트 10선 (완전 초보용)
요약
우분투에서 서버를 운영하려면 결국 터미널(셸)에서 명령을 쳐야 합니다. 여기서 말하는 “명령 프롬프트”는 터미널의 입력 줄, 그리고 그 위에서 쓰는 기본 명령어들을 통틀어 부르는 말로 이해하시면 됩니다.
이 글에서는 실제 서버를 운영할 때 거의 매일 쓰게 되는 필수 명령어들을 주제별로 묶어서 설명드립니다. 각 명령이 언제·왜 필요한지, 대표 예제, 실수하기 쉬운 위험 포인트까지 같이 적어두었으니, 그대로 따라 해 보시면서 손에 익히시면 됩니다.
목차
- 1. 핵심 포인트
- 2. 서버 접속과 권한: ssh, sudo
- 3. 파일·폴더 기본: cd, ls, pwd, mkdir, rm
- 4. 서비스 관리: systemctl
- 5. 로그 확인: tail, less, journalctl
- 6. 리소스 상태 확인: top, df, free
- 7. 네트워크 상태 확인: ip, ss
- 8. 필수 명령어 요약 표
- 9. 따라 해보는 실습 순서
- 10. 추가로 알고 있으면 좋은 팁
- 11. 블로그 최적화 정보
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. 따라 해보는 실습 순서
아래 순서대로 한 번씩 실행해 보시면, 실제 운영 중에 어떤 흐름으로 명령을 사용하는지 감이 잡히실 것입니다.
- ssh로 테스트 서버에 접속하기
로컬 PC에서ssh 사용자명@서버IP로 접속합니다. 접속 후whoami,pwd를 쳐서 어떤 계정, 어떤 경로에 있는지 확인합니다. - 기본 경로 탐색
cd /,ls,cd /var,cd /var/log등을 사용해 주요 폴더를 구경해 봅니다. 이때 항상pwd로 현재 경로를 확인하는 습관을 들이시면 좋습니다. - 서비스 상태와 로그 확인
예를 들어 Nginx가 설치되어 있다면sudo systemctl status nginx로 상태를 확인하고,sudo tail -f /var/log/nginx/access.log로 로그가 흘러오는지 확인합니다. - 리소스 상황 체크
top을 실행해 CPU·메모리 상황을 보고,df -h와free -h로 디스크·메모리 여유를 확인합니다. - 네트워크 포트 점검
ip a로 서버 IP를 확인하고,sudo ss -tulpn | grep :80으로 80번 포트를 사용하는 프로세스가 있는지 체크해 봅니다. - 마지막으로 정리
테스트용으로 만든 폴더나 파일이 있다면rm,rm -r로 삭제하고, 로그 확인을 마쳤으면q또는Ctrl+C로 명령을 종료합니다.
10. 추가로 알고 있으면 좋은 팁
- history 명령 –
history | grep nginx처럼 사용하면 과거에 어떤 명령을 쳤는지 찾아볼 수 있어, “전에 어떻게 설정했더라?” 할 때 유용합니다. - man 페이지 –
man systemctl처럼 쓰면 해당 명령의 공식 설명서를 볼 수 있습니다. 영어가 조금 필요하지만, 옵션을 정확히 알고 싶을 때 꼭 필요합니다. - alias 설정 – 자주 쓰는 긴 명령을 짧게 줄이고 싶다면
~/.bashrc에alias ll='ls -alF'같은 줄을 추가해 두시면 편리합니다. - 테스트 서버에서 먼저 연습 – 실 서비스 서버에서 바로 명령을 실험하기보다, 가상 머신이나 테스트 서버에서 먼저 충분히 연습해 보시는 것을 강력히 권장드립니다.
'Ubuntu' 카테고리의 다른 글
| 우분투에서 프로젝트 폴더를 만들고 가상 환경으로 실행·관리하기 (완전 기초) (0) | 2025.12.21 |
|---|