리눅스 기본 명령어
한눈에 보기
셸에서 파일 관리, 텍스트 처리, 프로세스 제어, 시스템 상태 확인을 수행하는 리눅스 핵심 명령어를 용도별 표와 예시로 정리한다. 탐색, 조작, 로그 검색, 네트워크까지 실무 옵션 중심으로 다룬다.
최종 업데이트 2026.09.17
리눅스 기본 명령어는 셸(Shell)에서 파일 관리, 텍스트 처리, 프로세스 제어, 시스템 상태 확인 같은 일상적인 작업을 수행하기 위해 사용하는 핵심 도구 모음이다. 리눅스 서버는 대부분 그래픽 환경 없이 터미널로만 운영되기 때문에, 개발자는 배포와 로그 분석, 장애 대응을 하려면 기본 명령어를 손에 익혀 두어야 한다. 이 문서는 자주 쓰는 명령어를 용도별로 묶어 옵션과 함께 정리한다.
파일과 디렉터리 탐색
셸 작업의 출발점은 현재 위치를 파악하고 원하는 디렉터리로 이동하는 것이다. 경로는 루트(/)부터 시작하는 절대 경로와 현재 위치 기준의 상대 경로로 나뉘며, 점 하나(.)는 현재 디렉터리, 점 두 개(..)는 상위 디렉터리를 뜻한다.
| 명령어 | 설명 | 자주 쓰는 옵션 |
|---|---|---|
pwd | 현재 작업 중인 디렉터리의 절대 경로를 출력한다 | 없음 |
ls | 디렉터리 안의 파일 목록을 보여준다 | -l 상세 정보, -a 숨김 파일 포함, -h 사람이 읽기 쉬운 크기 |
cd | 작업 디렉터리를 변경한다 | 인자 없이 실행하면 홈 디렉터리로 이동 |
find | 조건에 맞는 파일을 재귀적으로 검색한다 | -name 이름 패턴, -type 파일 종류, -mtime 수정 시각 |
pwd
ls -alh /var/log
cd /etc
find . -name "*.log" -mtime -7
파일과 디렉터리 조작
파일을 만들고 복사하고 옮기고 지우는 명령어다. 특히 rm -rf는 확인 없이 재귀 삭제를 수행하므로 경로를 잘못 지정하면 복구가 불가능하다는 점을 항상 의식해야 한다.
| 명령어 | 설명 | 자주 쓰는 옵션 |
|---|---|---|
mkdir | 새 디렉터리를 만든다 | -p 중간 경로까지 한 번에 생성 |
touch | 빈 파일을 만들거나 타임스탬프를 갱신한다 | 없음 |
cp | 파일이나 디렉터리를 복사한다 | -r 디렉터리 재귀 복사, -p 권한과 시간 보존 |
mv | 파일을 이동하거나 이름을 바꾼다 | -i 덮어쓰기 전 확인 |
rm | 파일이나 디렉터리를 삭제한다 | -r 재귀 삭제, -f 확인 없이 강제 삭제 |
ln | 링크를 만든다 | -s 심볼릭 링크(Symbolic Link) 생성 |
mkdir -p app/logs/archive
cp -rp config/ config.bak/
mv report.txt report_old.txt
ln -s /opt/app/current /usr/local/bin/app
텍스트 확인과 검색
서버 운영에서 가장 많이 하는 일은 로그를 읽고 원하는 문자열을 찾는 것이다. 파이프(Pipe) 기호로 명령어의 출력을 다음 명령어의 입력으로 연결하면 작은 도구를 조합해 복잡한 처리를 할 수 있다.
| 명령어 | 설명 | 자주 쓰는 옵션 |
|---|---|---|
cat | 파일 전체 내용을 출력한다 | -n 줄 번호 표시 |
head / tail | 파일의 앞부분 또는 뒷부분을 출력한다 | -n 줄 수 지정, tail -f 실시간 추적 |
grep | 정규 표현식(Regular Expression)에 맞는 줄을 찾는다 | -i 대소문자 무시, -r 디렉터리 재귀, -v 불일치 줄 출력 |
less | 긴 파일을 페이지 단위로 넘겨 본다 | /문자열로 화면 안 검색 |
wc | 줄, 단어, 바이트 수를 센다 | -l 줄 수만 출력 |
tail -f /var/log/nginx/access.log
grep -ri "timeout" ./src | wc -l
cat error.log | grep -v "DEBUG" > filtered.log
마지막 예시처럼 >는 출력을 파일로 저장하는 리다이렉션(Redirection)이고, >>는 기존 파일 뒤에 이어 붙인다.
프로세스와 시스템 상태
애플리케이션이 왜 느린지, 어떤 프로세스가 자원을 점유하는지 확인할 때 쓰는 명령어다. 프로세스는 고유한 프로세스 식별자(PID, Process ID)로 구분하며, 시그널(Signal)을 보내 종료를 요청한다.
| 명령어 | 설명 | 자주 쓰는 옵션 |
|---|---|---|
ps | 실행 중인 프로세스 목록을 보여준다 | -ef 전체 프로세스, aux 자원 사용률 포함 |
top | CPU와 메모리 사용 현황을 실시간으로 보여준다 | 실행 중 M 키로 메모리 정렬 |
kill | 프로세스에 시그널을 보낸다 | -15 정상 종료 요청, -9 강제 종료 |
df | 파일 시스템별 디스크 사용량을 보여준다 | -h 읽기 쉬운 단위 |
du | 디렉터리별 사용 용량을 계산한다 | -sh 합계만 요약 |
free | 메모리 사용량을 보여준다 | -h 읽기 쉬운 단위 |
ps -ef | grep java
kill -15 12345
df -h
du -sh /var/log/*
kill -9는 프로세스가 정리 작업을 할 기회를 주지 않으므로, 먼저 -15(SIGTERM)로 정상 종료를 시도한 뒤 응답이 없을 때만 사용하는 것이 안전하다.
네트워크와 원격 접속
서버 간 통신 상태를 점검하고 파일을 주고받는 명령어다. 포트가 열려 있는지, 어떤 프로세스가 포트를 점유했는지 확인하는 일은 장애 대응의 기본이다.
| 명령어 | 설명 | 자주 쓰는 옵션 |
|---|---|---|
ping | 대상 호스트와의 연결 상태를 확인한다 | -c 전송 횟수 지정 |
curl | URL로 HTTP 요청을 보낸다 | -X 메서드 지정, -H 헤더 추가, -i 응답 헤더 표시 |
ss | 소켓과 포트 사용 현황을 보여준다 | -tlnp 리스닝 중인 TCP 포트와 프로세스 |
ssh | 원격 서버에 접속한다 | -i 키 파일 지정, -p 포트 지정 |
scp | 원격 서버와 파일을 복사한다 | -r 디렉터리 재귀 복사 |
curl -i -X POST https://api.example.com/health
ss -tlnp | grep 8080
ssh -i key.pem [email protected]
scp -r ./dist [email protected]:/opt/app
면접에서 이렇게 물어본다
- 서버에서 특정 포트를 점유하고 있는 프로세스를 찾아 종료하는 과정을 명령어와 함께 설명해 보라는 질문을 받을 수 있다.
kill -9와kill -15의 차이, 그리고 왜-9를 최후 수단으로 써야 하는지 묻는다.- 실시간으로 쌓이는 로그에서 특정 에러만 골라 보는 방법을 물어보며,
tail -f와grep을 파이프로 조합할 수 있는지 확인한다. - 하드 링크와 심볼릭 링크의 차이를 아이노드(inode) 관점에서 설명하라는 질문이 나온다.
- 디스크 사용량이 가득 찼을 때 어떤 명령어 순서로 원인 디렉터리를 좁혀 가는지 묻는다.
리눅스에서 같이 읽기
리눅스 문서 전체 보기이 개념, 내 코드에서는 어떻게 물어볼까요
데브핏(DevFit)에 채용공고 URL을 붙여 넣고 레포지토리를 연결하면, 내가 쓴 커밋에서 예상 질문과 어필 포인트를 만듭니다. 하루 10회까지 무료입니다. 합불 판정이나 지원자 랭킹은 만들지 않고, 최종 판단은 사람이 합니다.
공고 넣고 시작하기