turin.blog
← 목록으로

서버에 처음 접속했을 때 꼭 확인하는 Linux 명령어들

·2분 읽기

서버를 처음 만들고 SSH로 접속하면 생각보다 할 일이 많습니다. 배포부터 하고 싶지만, 그 전에 서버 상태를 한 번 확인해두면 나중에 문제를 훨씬 빨리 찾을 수 있습니다.

저도 처음에는 npm run startdocker compose up부터 실행했는데, 디스크가 부족하거나 포트가 이미 열려 있는 상황을 뒤늦게 발견한 적이 있습니다. 그래서 요즘은 새 서버에 들어가면 아래 순서대로 먼저 확인합니다.

1. 서버 기본 정보 확인

가장 먼저 운영체제와 커널 정보를 봅니다.

uname -a
cat /etc/os-release

uname -a는 커널 정보를 보여주고, /etc/os-release는 Ubuntu, Debian 같은 배포판 정보를 알려줍니다. 패키지 설치 방법이나 서비스 관리 방식이 배포판마다 조금씩 다르기 때문에 먼저 확인하는 게 좋습니다.

2. CPU와 메모리 확인

서버가 느릴 때 가장 먼저 보는 건 CPU와 메모리입니다.

top
free -h

top에서는 CPU 사용률이 계속 높은 프로세스가 있는지 확인합니다. free -h에서는 메모리가 얼마나 남았는지 볼 수 있습니다. 특히 작은 VPS에서는 메모리가 부족해서 Node.js 앱이나 Docker 컨테이너가 갑자기 죽는 일이 자주 생깁니다.

조금 더 보기 편하게 보고 싶다면 htop을 설치해도 좋습니다.

sudo apt update
sudo apt install htop
htop

3. 디스크 용량 확인

디스크가 꽉 차면 로그도 못 쓰고, 데이터베이스도 멈추고, 배포도 실패합니다.

df -h

여기서 / 파티션 사용률이 80%를 넘으면 주의해야 합니다. 어떤 폴더가 큰지 보고 싶다면 다음 명령어를 씁니다.

sudo du -h --max-depth=1 / | sort -h

Docker를 많이 쓰는 서버라면 이미지와 로그가 쌓여서 용량을 잡아먹는 경우가 많습니다.

docker system df

4. 열려 있는 포트 확인

웹 서버를 띄웠는데 접속이 안 된다면 포트부터 봅니다.

ss -tulpn

예를 들어 Next.js 앱이 3000번에서 뜨고 있는지, Nginx가 80/443 포트를 잡고 있는지 확인할 수 있습니다.

방화벽을 쓰고 있다면 UFW 상태도 확인합니다.

sudo ufw status

5. 서비스 로그 확인

systemd로 실행 중인 서비스라면 로그를 이렇게 봅니다.

sudo journalctl -u 서비스이름 -f

Nginx를 사용한다면 아래 로그도 자주 봅니다.

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

접속은 되는데 502가 나온다면 Nginx와 실제 앱 서버 사이 연결이 끊긴 경우가 많습니다.

마무리 체크리스트

새 서버에 접속하면 저는 보통 이렇게 확인합니다.

  • OS 정보 확인
  • CPU/메모리 사용량 확인
  • 디스크 용량 확인
  • 열려 있는 포트 확인
  • 방화벽 상태 확인
  • 서비스 로그 확인

이 과정을 매번 반복하면 서버 문제가 생겼을 때 당황하는 시간이 줄어듭니다. 처음에는 명령어가 많아 보이지만, 몇 번 하다 보면 서버 상태를 보는 감이 조금씩 생깁니다.