저는 원래 일반적인 웹 개발 업무를 주로 하던 개발자였습니다.
웹 애플리케이션을 개발하고 Java 코드를 수정하거나 데이터베이스 쿼리를 작성하는 일에는 익숙했지만, 서버를 직접 관리하거나 Linux 환경에서 작업할 일은 많지 않았습니다.
그러다 회사를 이직하면서 서버 운영 업무를 함께 담당하게 되었고 처음으로 Linux 서버를 본격적으로 접하게 되었습니다.
처음 Linux 서버에 접속했을 때는 생각보다 막막했습니다.
현재 위치를 확인하는 방법부터 파일을 찾고 옮기는 방법, 서버의 디스크 용량을 확인하는 방법까지 대부분의 작업을 명령어로 처리해야 했기 때문입니다.
특히 웹 서비스에 장애가 발생했을 때는 Tomcat 프로세스가 실행 중인지 확인하고, 로그를 실시간으로 살펴보고, 서버 포트가 정상적으로 열려 있는지 확인해야 했습니다.
처음에는 필요한 명령어를 그때마다 검색해서 사용했습니다.
하지만 서버를 운영하다 보니 실제 업무에서 반복해서 사용하는 Linux 명령어는 어느 정도 정해져 있다는 것을 알게 되었습니다.
ls, cd, cp, mv 같은 기본적인 파일 명령어부터 tail, grep, find, df, du, ps, ss, curl처럼 서버 장애를 확인할 때 사용하는 명령어까지 자연스럽게 익숙해졌습니다.
이번 글에서는 저처럼 웹 개발 업무를 하다가 처음 Linux 서버를 접하게 된 개발자들을 위해 실제 서버 운영 업무에서 자주 사용했던 Linux 명령어 20가지를 정리해 보겠습니다.
단순히 명령어의 의미만 나열하기보다 어떤 상황에서 사용하는지와 실제 업무에서 자주 사용하는 옵션과 예제를 함께 소개하겠습니다.
1. 현재 위치 확인하기 – pwd
Linux 서버에 접속한 후 가장 기본적으로 알아야 할 것은 현재 내가 어느 디렉터리에 있는지 확인하는 방법입니다.
pwd
pwd는 Print Working Directory의 약자로 현재 작업 중인 디렉터리의 전체 경로를 출력합니다.
실행 결과는 다음과 같습니다.
/home/user
서버에서 파일을 삭제하거나 이동하기 전에는 pwd를 이용해 현재 위치를 확인하는 습관을 들이는 것이 좋습니다.
특히 rm 명령어를 사용하기 전에 현재 디렉터리를 잘못 알고 있으면 예상하지 못한 파일을 삭제할 수 있으므로 주의해야 합니다.
2. 파일과 디렉터리 확인하기 – ls
현재 디렉터리에 있는 파일과 디렉터리를 확인할 때는 ls 명령어를 사용합니다.
ls
하지만 실무에서는 단순한 ls보다 다음 명령어를 더 자주 사용합니다.
ls -al
-a 옵션은 숨김 파일을 포함하여 표시하고 -l 옵션은 권한, 소유자, 파일 크기, 수정 시간 등의 상세 정보를 보여줍니다.
파일 크기를 읽기 쉽게 표시하고 싶다면 다음과 같이 사용할 수 있습니다.
ls -alh
-h 옵션을 사용하면 파일 크기가 Byte 단위가 아니라 KB, MB, GB 등의 형태로 표시됩니다.
최근에 수정된 파일을 확인할 때는 다음 명령어도 유용합니다.
ls -ltr
수정 시간을 기준으로 오래된 파일부터 정렬되기 때문에 가장 최근에 생성되거나 수정된 로그 파일을 확인할 때 자주 사용합니다.
3. 디렉터리 이동하기 – cd
디렉터리를 이동할 때는 cd 명령어를 사용합니다.
cd /home/user
상위 디렉터리로 이동하려면 다음과 같이 입력합니다.
cd ..
사용자의 홈 디렉터리로 이동할 수도 있습니다.
cd ~
직전에 있던 디렉터리로 돌아가려면 다음 명령어를 사용할 수 있습니다.
cd -
서버에서 여러 경로를 오가며 로그를 확인할 때 cd -를 알아두면 편리합니다.
4. 디렉터리 생성하기 – mkdir
새로운 디렉터리를 생성할 때는 mkdir 명령어를 사용합니다.
mkdir backup
여러 단계의 디렉터리를 한 번에 생성해야 한다면 -p 옵션을 사용합니다.
mkdir -p backup/2026/07
-p 옵션을 사용하면 상위 디렉터리가 존재하지 않더라도 필요한 디렉터리를 함께 생성합니다.
서버 작업 전에 기존 파일을 백업할 디렉터리를 만들 때 자주 사용합니다.
5. 파일과 디렉터리 복사하기 – cp
파일을 복사할 때는 cp 명령어를 사용합니다.
cp application.properties application.properties.bak
설정 파일을 수정하기 전에 기존 파일을 백업할 때 자주 사용하는 방식입니다.
디렉터리 전체를 복사하려면 -r 옵션이 필요합니다.
cp -r config config_backup
파일의 권한과 수정 시간 등의 속성을 유지하면서 복사하고 싶다면 -p 옵션을 사용할 수 있습니다.
cp -p server.xml server.xml.bak
서버의 설정 파일을 수정하기 전에는 가능하면 원본 파일을 백업해 두는 것이 좋습니다.
6. 파일 이동과 이름 변경하기 – mv
mv 명령어는 파일이나 디렉터리를 이동할 때 사용합니다.
mv test.txt /home/user/backup/
파일 이름을 변경할 때도 사용할 수 있습니다.
mv test.txt test_backup.txt
서버의 로그 파일을 별도의 백업 디렉터리로 이동하거나 파일 이름을 변경할 때 자주 사용합니다.
mv는 대상 경로에 같은 이름의 파일이 존재하면 덮어쓸 수 있으므로 운영 서버에서는 실행 전에 대상 파일을 확인하는 것이 좋습니다.
7. 파일과 디렉터리 삭제하기 – rm
파일을 삭제할 때는 rm 명령어를 사용합니다.
rm test.txt
디렉터리와 내부 파일을 함께 삭제하려면 -r 옵션을 사용합니다.
rm -r backup
강제로 삭제하려면 -f 옵션을 사용할 수 있습니다.
rm -rf backup
rm -rf는 Linux 서버를 사용하면서 특히 주의해야 하는 명령어입니다.
삭제한 파일을 휴지통에서 복구하는 방식이 아니기 때문에 실행하기 전에 반드시 pwd, ls 등을 이용해 현재 위치와 삭제 대상을 확인하는 것이 좋습니다.
개인적으로 운영 서버에서는 명확한 이유가 없다면 무조건 rm -rf부터 사용하는 습관은 피하는 것을 권장합니다.
8. 파일 내용 확인하기 – cat과 less
파일의 내용을 확인할 때 가장 간단하게 사용할 수 있는 명령어는 cat입니다.
cat application.properties
파일의 전체 내용이 한 번에 출력됩니다.
하지만 용량이 큰 로그 파일을 cat으로 열면 터미널 화면에 너무 많은 내용이 출력될 수 있습니다.
큰 파일을 확인할 때는 less가 더 편리합니다.
less catalina.out
방향키를 이용해 내용을 이동할 수 있고 /검색어를 입력하면 파일 안에서 문자열을 검색할 수도 있습니다.
종료할 때는 q를 입력합니다.
9. 로그를 실시간으로 확인하기 – tail
서버 운영 업무를 하면서 개인적으로 가장 자주 사용하는 명령어 중 하나가 tail입니다.
파일의 마지막 부분을 확인할 수 있습니다.
tail catalina.out
마지막 100줄을 확인하려면 다음과 같이 사용합니다.
tail -100 catalina.out
실시간으로 추가되는 로그를 확인하려면 -f 옵션을 사용합니다.
tail -f catalina.out
웹 서비스에서 오류가 발생했을 때 로그를 실시간으로 확인해 놓고 동일한 동작을 다시 수행하면 어떤 오류가 발생하는지 확인하기 편리합니다.
실무에서는 다음처럼 최근 로그를 확인하면서 실시간으로 이어서 보는 방식도 자주 사용합니다.
tail -n 1000 -f catalina.out
종료하려면 Ctrl + C를 누르면 됩니다.
10. 문자열 검색하기 – grep
로그 파일에서 특정 오류나 문자열을 찾을 때는 grep을 사용합니다.
grep "ERROR" catalina.out
대소문자를 구분하지 않고 검색하려면 -i 옵션을 사용합니다.
grep -i "exception" catalina.out
검색 결과의 앞뒤 내용까지 함께 확인하고 싶다면 -A, -B, -C 옵션을 사용할 수 있습니다.
grep -A5 "ERROR" catalina.out
검색된 문자열 이후 5줄을 함께 출력합니다.
grep -B5 "ERROR" catalina.out
검색된 문자열 이전 5줄을 출력합니다.
grep -C5 "ERROR" catalina.out
검색된 문자열의 앞뒤 5줄을 모두 출력합니다.
실무에서는 ps, tail 등 다른 명령어와 파이프(|)를 이용해 함께 사용하는 경우가 많습니다.
ps -ef | grep tomcat
tail -1000 catalina.out | grep -i "error"
11. 서버에서 파일 찾기 – find
파일이 어느 경로에 있는지 모를 때는 find 명령어를 사용할 수 있습니다.
find / -name "server.xml"
서버 전체에서 server.xml 파일을 찾습니다.
하지만 / 경로부터 검색하면 권한 오류가 발생하거나 검색에 오랜 시간이 걸릴 수 있으므로 가능하면 검색 범위를 지정하는 것이 좋습니다.
find /home -name "server.xml"
특정 확장자의 파일을 찾을 수도 있습니다.
find /home -name "*.log"
일정 크기 이상의 파일을 찾는 것도 가능합니다.
find /home -type f -size +1G
/home 아래에서 크기가 1GB를 초과하는 파일을 검색합니다.
로그 파일이 비정상적으로 커져 디스크 용량을 차지하는 상황에서 유용하게 사용할 수 있습니다.
12. 디스크 사용량 확인하기 – df
서버의 전체 디스크 사용량을 확인할 때는 df 명령어를 사용합니다.
df -h
-h 옵션을 사용하면 용량을 GB, MB 등 읽기 쉬운 단위로 보여줍니다.
실행 결과에서 중요하게 확인하는 항목은 Use%입니다.
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 50G 45G 5G 90% /
디스크 사용률이 지나치게 높으면 로그 파일 생성이나 애플리케이션 동작에 문제가 발생할 수 있습니다.
특히 Tomcat 로그가 지속적으로 쌓이는 서버에서는 주기적으로 디스크 사용량을 확인하는 것이 좋습니다.
13. 디렉터리별 용량 확인하기 – du
df를 이용해 디스크 사용량이 높다는 사실을 확인했다면 어떤 디렉터리가 많은 공간을 사용하고 있는지 찾아야 합니다.
이때 du 명령어를 사용할 수 있습니다.
현재 디렉터리의 전체 용량을 확인합니다.
du -sh .
특정 디렉터리의 용량을 확인할 수도 있습니다.
du -sh /home/user/logs
현재 경로 아래 디렉터리별 용량을 확인하려면 다음과 같이 사용할 수 있습니다.
du -sh *
용량이 큰 순서로 정렬하면 더 편리합니다.
du -sh * | sort -hr
디스크 사용량이 갑자기 증가했을 때 제가 자주 사용하는 명령어 중 하나입니다.
14. 서버 메모리 확인하기 – free
서버의 메모리 사용량을 확인할 때는 free 명령어를 사용합니다.
free -h
전체 메모리, 사용 중인 메모리, 사용 가능한 메모리와 Swap 사용량 등을 확인할 수 있습니다.
Linux에서는 남는 메모리를 캐시로 적극 활용하기 때문에 단순히 free 값이 적다는 이유만으로 메모리 부족이라고 판단해서는 안 됩니다.
일반적으로 available 값을 함께 확인하는 것이 좋습니다.
Swap 사용량이 계속 증가하고 애플리케이션 응답 속도가 느려졌다면 메모리 부족 여부를 추가로 확인할 필요가 있습니다.
15. 실행 중인 프로세스 확인하기 – ps
현재 서버에서 실행 중인 프로세스를 확인할 때는 ps 명령어를 사용합니다.
실무에서는 다음 형태를 자주 사용합니다.
ps -ef
특정 프로세스를 검색할 때는 grep과 함께 사용합니다.
ps -ef | grep tomcat
Java 프로세스를 확인할 수도 있습니다.
ps -ef | grep java
Tomcat 프로세스를 확인할 때는 PID뿐만 아니라 catalina.base, 실행 계정, Java 옵션 등을 함께 확인하는 것이 좋습니다.
한 서버에서 여러 개의 Tomcat 인스턴스가 실행되고 있다면 catalina.base 경로를 이용해 어떤 서비스인지 구분할 수 있습니다.
16. 서버 자원 사용량을 실시간으로 확인하기 – top
CPU와 메모리를 많이 사용하는 프로세스를 실시간으로 확인할 때는 top 명령어를 사용합니다.
top
화면 상단에서는 CPU 사용률, 메모리, Load Average 등을 확인할 수 있고 하단에서는 프로세스별 CPU와 메모리 사용량을 확인할 수 있습니다.
top 실행 중 P를 누르면 CPU 사용률 기준으로 정렬하고 M을 누르면 메모리 사용률 기준으로 정렬할 수 있습니다.
종료할 때는 q를 입력합니다.
특정 프로세스만 확인하려면 PID를 지정할 수도 있습니다.
top -p 12345
Tomcat의 CPU 사용률이 갑자기 높아졌을 때 유용합니다.
17. 서버 포트 확인하기 – ss
서버에서 어떤 포트가 열려 있는지 확인할 때는 ss 명령어를 사용할 수 있습니다.
ss -lntp
특정 포트를 확인하려면 grep과 함께 사용합니다.
ss -lntp | grep 8080
주요 옵션의 의미는 다음과 같습니다.
-l : LISTEN 상태 확인
-n : 포트 번호를 숫자로 표시
-t : TCP 연결 표시
-p : 해당 포트를 사용하는 프로세스 표시
Tomcat 프로세스는 실행 중인데 웹사이트에 접속되지 않을 때 실제 Tomcat 포트가 LISTEN 상태인지 확인하는 데 유용합니다.
구형 Linux 서버에서는 netstat 명령어를 사용하는 경우도 있습니다.
netstat -lntp
18. 웹 서비스 응답 확인하기 – curl
서버에서 웹 서비스가 정상적으로 응답하는지 확인할 때는 curl 명령어를 사용할 수 있습니다.
curl http://localhost:8080
응답 헤더만 확인하려면 다음과 같이 사용할 수 있습니다.
curl -I https://example.com
연결 과정까지 자세히 확인하려면 -v 옵션을 사용합니다.
curl -v http://127.0.0.1:8080
Tomcat 서버 내부에서는 정상적으로 응답하지만 외부 PC에서는 접속되지 않는다면 Tomcat보다는 Nginx, Load Balancer, 방화벽 또는 보안장비 등의 문제를 의심할 수 있습니다.
이처럼 curl은 단순히 URL에 접속하는 명령어가 아니라 웹 서비스 장애가 발생한 구간을 확인하는 데 유용합니다.
19. 서비스 상태 확인하기 – systemctl
systemd를 사용하는 Linux 환경에서는 systemctl을 이용해 서비스를 관리할 수 있습니다.
서비스 상태를 확인합니다.
systemctl status nginx
서비스를 시작합니다.
systemctl start nginx
서비스를 중지합니다.
systemctl stop nginx
서비스를 재시작합니다.
systemctl restart nginx
설정 파일만 다시 적용할 수 있는 서비스라면 reload를 사용할 수도 있습니다.
systemctl reload nginx
운영 서버에서는 무조건 restart를 실행하기보다 서비스가 reload를 지원하는지 확인하는 것이 좋습니다.
또한 서비스를 재시작하기 전에는 로그를 확인하여 장애 원인을 먼저 파악하는 습관을 들이는 것이 좋습니다.
20. 이전에 실행한 명령어 확인하기 – history
이전에 실행했던 명령어를 확인하려면 history를 사용합니다.
history
특정 명령어를 검색할 수도 있습니다.
history | grep tomcat
history | grep systemctl
예전에 실행했던 긴 명령어가 기억나지 않을 때 유용합니다.
위쪽 방향키를 눌러 이전 명령어를 하나씩 확인할 수도 있지만, 오래전에 실행했던 명령어를 찾을 때는 history와 grep을 함께 사용하는 것이 편리합니다.
단, 명령어에 비밀번호나 토큰 같은 민감한 정보를 직접 입력하면 Shell History에 남을 수 있으므로 주의해야 합니다.
자주 사용하는 Linux 명령어 조합
Linux 명령어는 각각 따로 사용하기도 하지만 실제 서버 운영에서는 여러 명령어를 조합해서 사용하는 경우가 많습니다.
Tomcat 프로세스를 확인할 때는 다음과 같이 사용합니다.
ps -ef | grep tomcat
실시간 로그에서 오류만 확인할 수도 있습니다.
tail -f catalina.out | grep -i "error"
현재 디렉터리에서 용량이 큰 항목부터 확인할 수 있습니다.
du -sh * | sort -hr
1GB 이상의 대용량 파일을 찾을 수도 있습니다.
find /home -type f -size +1G
특정 포트를 사용하는 프로세스를 확인합니다.
ss -lntp | grep 8080
제가 Linux 서버를 처음 접했을 때는 명령어 하나씩 외우려고 했지만, 실제로는 자주 발생하는 상황에서 어떤 명령어를 조합해서 사용해야 하는지 익히는 것이 더 중요했습니다.
Linux 명령어를 처음 공부할 때 느낀 점
처음 Linux 서버를 접했을 때는 수많은 명령어와 옵션을 모두 외워야 한다고 생각했습니다.
하지만 실제로 서버 운영 업무를 하면서 생각이 바뀌었습니다.
모든 명령어와 옵션을 외울 필요는 없었습니다.
현재 위치를 확인하고, 파일을 찾고, 로그를 보고, 프로세스와 서버 자원을 확인하는 기본적인 명령어를 익히고 나면 나머지는 필요한 상황에서 찾아 사용해도 충분했습니다.
특히 서버 장애가 발생했을 때는 명령어를 많이 아는 것보다 어떤 순서로 서버 상태를 확인해야 하는지 아는 것이 더 중요했습니다.
웹사이트 접속이 되지 않는다면 프로세스를 확인하고, 포트를 확인하고, 로그를 확인하고, 서버 내부에서 curl을 이용해 응답을 확인하는 식입니다.
저 역시 아직 Linux의 모든 명령어와 옵션을 알고 있는 것은 아닙니다.
하지만 실제 업무에서 반복적으로 명령어를 사용하다 보니 처음에는 낯설었던 Linux 서버 환경에도 점차 익숙해질 수 있었습니다.
마무리
웹 개발자라고 해서 반드시 서버 운영을 담당하는 것은 아닙니다.
하지만 서비스를 개발하고 운영하다 보면 Linux 서버에 접속하여 로그를 확인하거나 프로세스 상태를 확인해야 하는 상황을 만나게 될 수 있습니다.
저처럼 웹 개발 업무를 하다가 처음 Linux 서버를 접하게 되었다면 처음부터 모든 것을 공부하려 하기보다 실제 업무에서 자주 사용하는 명령어부터 하나씩 익히는 것을 추천합니다.
pwd, ls, cd 같은 기본적인 명령어부터 시작해 tail, grep, find를 이용해 로그와 파일을 확인하고, df, du, free로 서버 자원을 확인하고, ps, top, ss, curl을 이용해 서비스 상태를 확인하는 방법을 익히면 실제 서버 운영 업무에 많은 도움이 됩니다.
저 역시 처음에는 필요한 명령어를 매번 검색해서 사용했습니다.
지금도 자주 사용하지 않는 옵션은 검색해서 확인합니다.
중요한 것은 명령어를 모두 외우는 것이 아니라 필요한 상황에서 어떤 명령어를 사용해야 하는지 알고, 실행하기 전에 명령어가 서버에 어떤 영향을 주는지 확인하는 습관을 들이는 것이라고 생각합니다.
이 글이 저처럼 웹 개발 업무를 하다가 처음 Linux 서버를 접하게 된 개발자들에게 조금이나마 도움이 되길 바랍니다.