👩🏻💻 리눅스 서버에 직접 붙어 서버 실행 로그를 확인하거나 변경된 클래스 파일을 배포해야 하는 일이 종종 생겼다. 자주 사용되는, 개발자라면 필수로 알아두면 좋은 리눅스 명령어들을 정리해두고 숙지하려고 한다.
[목차]
1. 디렉토리 탐색 및 편집 관련 명령어
2. 서버 배포 관련 명령어
3. 서버 리소스 관련 명령어
1. 디렉토리 탐색 및 편집 관련 명령어
1. ls
✅ List의 약자로 해당 디렉터리(폴더) 에 있는 파일의 목록을 나열하는 명령어.
✅ Windows 명령 프롬프트의 dir 명령과 같은 역할.
# ls → 현재 디렉터리의 파일 목록을 표시.
# ls /etc/sysconfig /etc/sysconfig → 디렉터리의 목록을 표시.
# ls -a → 현재 디렉터리의 목록(숨김 파일 포함)을 표시.
# ls -l → 현재 디렉터리의 목록을 자세히 표시.(명령어 ll로 대체 가능)
# ls *.cfg → 확장자가 cfg인 목록을 표시.
# ls -l /etc/sysconfig/a* → /etc/sysconfig 디렉터리 중 앞 글자가 'a'인 것의 목록을 자세히 표시.
💡 명령어 ls -l의 다양한 옵션
◽ ls /etc -lS (*S는 대문자)
- etc 폴더에 있는 파일/폴더를 크기가 높은 순서대로 출력.
◽ ls /etc -lSr (*S는 대문자)
- etc 폴더에 있는 파일/폴더를 크기가 낮은 순서대로 출력.
◽ ls /etc -lt
- 최신순 정렬.
2. cd
✅ Change Directory의 약자로 디렉터리를 이동하는 명령어.
# cd → 현재 사용자의 홈 디렉터리로 이동,
만약 현재 사용자가 root면 '/root' 디렉터리로 이동.
# cd ~rocky rocky → 사용자의 홈 디렉터리로 이동.
# cd .. → 바로 상위의 디렉터리로 이동.
'..'은 현재 디렉터리의 부모 디렉터리를 의미.
ex. 현재 디렉터리가 /etc/sysconfig면 상위인 '/etc' 디렉터리로 이동.
# cd /etc/sysconfig → /etc/sysconfig 디렉터리로 이동.(절대 경로)
# cd ../etc/sysconfig → 상대 경로로 이동.
현재 디렉터리의 상위('..')로 이동한 후 다시 /etc/sysconfig로 이동.
3. find
✅ 파일이나 디렉토리를 검색하는 명령어.
# find . -name "file.txt" → 현재 디렉토리에서 'file.txt' 파일을 찾음.
# find / -type d -name "config" → 루트 디렉토리에서 'config'라는 이름의 디렉토리를 찾음.
4. pwd
✅ Print Working Directory의 약자로 현재 디렉터리의 전체 경로를 화면에 표시하는 명령어.
5. rm
✅ Remove의 약자로 파일이나 디렉터리를 삭제하는 명령어.
✅ 파일이나 디렉터리를 삭제할 권한이 있을 때만 실행되나, root 사용자는 모든 권한이 있으므로 항상 가능.
# rm abc.txt → 해당 파일을 삭제.(내부적으로 'rm -i'로 연결됨)
# rm -i abc.txt → 삭제 시 정말 삭제할 지 확인하는 메시지를 표시.
# rm -f abc.txt → 삭제 시 확인하지 않고 바로 삭제.(f는 Force의 약자)
# rm -r abc → 해당 디렉터리와 그 안에 있는 모든 내용을 삭제.
(r은 Recursive의 약자)
# rm -rf abc → r 옵션과 f 옵션을 합친 것으로 abc 디렉터리와 그 아래에 있는
하위 디렉터리를 강제로 전부 삭제.(편리하지만 주의해서 사용해야 함)
6. cp
✅ Copy의 약자로 파일이나 디렉터리를 복사하는 명령어.
✅ 새로 복사한 파일은 복사한 사용자의 소유가 되므로 명령을 실행하는 사용자는 해당 파일의 읽기 권한이 필요함.
# cp abc.txt cba.txt → abc.txt를 cba.txt라는 이름으로 바꿔서 복사.
# cp -r abc cda → 디렉터리 복사.
7. touch
✅ 크기가 0인 새 파일을 생성하거나 생성된 파일이 존재한다면 파일의 최종 수정 시간을 변경하는 명령어.
# touch abc.txt → 파일이 없는 경우 abc.txt라는 빈 파일을 생성하고,
abc.tx 파일이 있는 경우 최종 수정 시간을 현재 시각으로 변경.
8. mv
✅ Move의 약자로 파일이나 디렉터리의 이름을 변경하거나 다른 디렉터리로 옮길 때 사용하는 명령어.
# mv abc.txt /etc/sysconfig/ → abc.txt을 /etc/sysconfig/ 디렉터리로 이동.
# mv aaa bbb ccc ddd → aaa, bbb, ccc 파일을 /ddd 디렉터리로 이동.
# mv abc.txt www.txt → abc.txt의 이름을 www.txt로 변경해서 이동.
9. mkdir
✅ Make Directory의 약자로 새로운 디렉터리를 생성하는 명령어.
✅ 생성된 디렉터리는 명령을 실행한 사용자의 소유가 됨.
# mkdir abc → 현재 디렉터리 아래에 /abc 이름의 디렉터리 생성.
# mkdir -p /def/fgh → /def/fgh 디렉터리를 생성.
만약 /fgh 디렉터리의 부모 디렉터리인 /def 디렉터리가 없다면 자동 생성.
(p는 Parents의 약자)
10. rmdir
✅ Remove Directory의 약자로 디렉터리를 삭제하는 명령어.
✅ 해당 디렉터리의 삭제 권한이 있어야 하며 디렉터리는 비어 있을 때만 동작
↳ 내부에 파일이나 다른 디렉토리가 있으면 오류 발생!
✅ 파일이 있는 디렉터리를 삭제하려면 rm -r 명령을 실행해야 함.
# rmdir abc → /abc 디렉터리를 삭제.
11. cat
✅ Concatenate의 약자로 파일 내용을 화면에 출력하는 명령어.
✅ 여러 파일을 나열하면 파일을 연결해서 출력함.
12. vi
✅ Visual Editor의 약자로 파일 내용을 화면에 출력하는 명령어.
💡 cat 명령어와 vi 명령어의 차이점?
◽cat
- 파일의 내용을 출력하거나 파일을 다른 파일에 이어 붙이는 용도로 한정됨.
- 텍스트 파일이나 이진 파일의 내용을 읽어서 터미널에 출력하는 역할을 수행함.
◽vi
- 텍스트 편집기로, 파일을 열어서 내용 편집 가능하며 다양한 편집 명령과 기능을 제공함.
- 명령 모드(command mode)와 입력 모드(insert mode)로 구분되며, 각 모드에서 다른 명령을 사용함.
13. head, tail
✅ 텍스트 형식으로 작성된 파일의 앞 10행 또는 마지막 10행만 화면에 출력하는 명령어.
✅ 특히, tail 명령어는 주로 로그 파일을 모니터링할 때 사용함.
# head anaconda-ks.cfg → 해당 파일의 앞 10행을 화면에 출력.
# head -3 anaconda-ks.cfg → 앞 3행만 화면에 출력.
# tail -5 anaconda-ks.cfg → 마지막 5행만 화면에 출력.
14. more
✅ 텍스트 형식으로 작성된 파일을 페이지 단위로 화면에 출력하는 명령어.
✅ [Space]를 누르면 다음 페이지로 이동, [B]를 누르면 이전 페이지로 이동, [Q]를 누르면 명령을 종료함.
# more anaconda-ks.cfg
# more +30 anaconda-ks.cfg → 30행부터 출력.
15. less
✅ more 명령과 용도가 비슷하지만, 기능이 더 확장된 명령어.
✅ more에서 사용하는 키와 더불어 화살표 키나 [PageUp], [PageDown]도 사용할 수 있음.
# less anaconda-ks.cfg
# less +30 anaconda-ks.cfg → 30행부터 출력.
16. file
✅ 파일의 종류를 표시하는 명령어.
# file anaconda-ks.cfg → anaconda-ks.cfg는 텍스트 파일이므로 아스키 파일(ASCII)로 표시.
# file /dev/sr0 → sr0은 DVD 장치이므로 block special로 표시.
17. clear
✅ 현재 사용 중인 터미널 화면을 깨끗하게 지우는 명령어.
18. chmod
✅ Change Mode의 약자로, 파일이나 디렉토리의 권한을 변경하는 명령어.
# chmod 755 file.sh 'file.sh' → 파일에 대해 소유자에게는 읽기, 쓰기, 실행 권한을 부여하고,
그룹과 기타 사용자에게는 읽기와 실행 권한만 부여.
# chmod u+x file.sh → 'file.sh' 파일에 대해 현재 사용자에게 실행 권한을 추가.
19. chown
✅ Change Owner의 약자로, 파일이나 디렉토리의 소유권을 변경하는 명령어.
✅ 기본 사용법 : chown [옵션] 소유자[:소유자그룹] [파일 및 디렉토리]
- 옵션은 생략 가능.
- chown 명령어 사용 시 소유자는 반드시 입력해야 되며 소유자 그룹은 선택사항임.
- 소유자와 소유자 그룹은 콜론을 사용해 구분.
- 소유자 그룹을 직접 언급하지 않아도 소유자 다음에 . 또는 : 을 사용하여 일괄 변경 가능.
- 소유자에 특수기호를 붙이지 않으면 소유자만 변경됨.
# chown root apple → chown [옵션] 소유자 [파일 및 디렉토리]
옵션을 사용하지 않고 root 사용자가 apple 파일을 root 소유주로 변경함.
# chown .root apple → chown [옵션] 소유자그룹 [파일 및 디렉토리]
소유자 그룹 앞에 . 또는 : 을 붙여 소유자 그룹을 변경 가능.
옵션을 사용하지 않고 root 사용자가 apple 파일을 root 소유주 그룹으로 변경함.
20. grep
✅ Global Regular Expression Print의 약자로, 파일 내용 중에서 지정된 패턴이나 문자열을 검색하여 그 결과를 출력하는 명령어.
✅ 정규 표현식을 사용하여 복잡한 검색 패턴을 지정할 수 있으며, 로그 파일 분석이나 특정 데이터 추출에 유용함.
# grep "text" file.txt → 'file.txt'에서 "text"라는 문자열이 포함된 모든 줄을 표시.
# grep -r "text" . → 현재 디렉토리와 하위 디렉토리에서 "text" 문자열을 재귀적으로 검색.
21. echo
✅ 주어진 문자열을 터미널에 출력하는 명령어.
✅ 환경 변수의 값을 표시하거나, 파일에 텍스트를 쓰는 데에도 사용됨.
# echo "Hello World" → 터미널에 "Hello World"라는 문구를 출력.
# echo $HOME → 'HOME' 환경 변수의 값을 출력.
# echo "some text" > file.txt → "Some text"라는 문구를 'file.txt'파일에 저장.
22. man
✅ Manual의 약자로, 리눅스 명령어의 사용법, 옵션, 기능 등을 설명하는 매뉴얼 페이지를 제공하는 명령어.
# man ls → 'ls' 명령어에 대한 매뉴얼 페이지를 보여줌.
23. help
✅ 해당 명령어를 어떻게 사용할 수 있는지 간략하게 설명해주는 명령어.
✅ 많은 명령어들은 --help 옵션을 지원하며, 이 옵션은 빠르게 명령어의 사용법을 확인할 때 유용함.
# ls --help → ls 명령어를 사용할 수 있는 옵션들과 간단한 설명을 보여줌.
24. info
✅ 해당 명령어를 어떻게 사용할 수 있는지 더 상세한 정보를 제공하는 명령어.
✅ man 명령어보다 더 읽기 쉽고 하이퍼링크를 포함한 문서를 제공할 수 있음.
✅ 하지만 모든 명령어가 info 페이지를 갖고 있는 것은 아니므로, man이나 --help를 기본적으로 사용하는 것이 권장됨.
# info ls → ls 명령어에 대한 info 문서가 표시됨.
25. sudo
✅ SuperUser DO의 약자로, 일반 사용자가 관리자(superuser) 권한을 가지고 명령어를 실행할 수 있게 하는 명령어.
✅ 시스템 설정 변경, 중요한 파일 수정, 관리자 권한을 필요로 하는 소프트웨어 설치 시 사용됨.
# sudo apt-get update → 패키지 리스트를 업데이트함.
26. history
✅ 최근 사용했던 명령어들을 숫자와 함께 출력하는 명령어.
✅ 기본적으로 최근에 입력한 500 ~ 1000개의 리스트를 출력함.
# history | less → 페이지 단위로 출력.
→ 첫 페이지부터 보여주며 space를 누르면 한 페이지 단위로 이동함.
# hisotry | tail → 최근 10개 내역 출력.
# history 25 → 마지막 25개 내역 출력.
# history | grep git → 'git'이 들어간 내역만 출력.
→ 파이프라인과 grep <keyword> 방식으로 사용됨.
# history | grep git | tail → 'git'을 사용한 명령어를 찾되 최근 10개 내역 출력.
# history -d 100 → 100번째 history 삭제.
# history -c → 모든 history 내용 삭제.
2. 서버 배포 관련 명령어
1. systemctl status
✅ 서버 상태를 확인하는 명령어.
# systemctl status tomcat-ui → tomcat-ui라는 이름의 서버 상태 확인.
2. systemctl restart
✅ 서버를 재기동하는 명령어.
# systemctl restart tomcat-ui → tomcat-ui라는 이름의 서버 재기동.
3. tail -f
✅ 서버 재기동 시 서버 로그 실시간 확인용 명령어.
# tail -f /devp/app/tomcat-ui/logs/catalina.out → tomcat의 서버 로그 파일인 catalina.out를 실시간 열람.
4. ps -ef
✅ 현재 실행 중인 프로세스 로그 확인용 명령어.
✅ [grep 명령어 + 찾고 싶은 프로세스 이름]을 사용해 조회하고 싶은 프로세스만 검색할 수 있음.
# ps -ef | grep tomcat-ui → 현재 실행되고 있는 프로세스 중에서 tomcat-ui와 관련된 프로세스 로그 확인.
5. kill
✅ 현재 실행 중인 프로세스를 종료시키는 명령어.
# kill -15 130390 → PID가 130390번인 프로세스 정상 종료.
# kill -9 32994 → PID가 32994번인 프로세스 강제 종료.
✅ 옵션 종류
| -15 | 자신이 하던 작업을 모두 안전하게 종료하는 절차를 밟으며 프로세스를 종료. 메모리 상에 있는 데이터와 각종 설정/환경 파일 등을 안전하게 저장한 후 프로세스를 종료. |
| -9 | 리눅스 커널이 프로세스를 강제 종료. 프로세스를 강제 종료하기 때문에 저장되지 않은 데이터가 날아가는 경우 발생. |
3. 서버 리소스 관련 명령어
1. free -h
✅ 전체 메모리(사용하고 있는 메모리, 남은 메모리, 버퍼메모리) 에 대한 상태 확인용 명령어.
✅ 시스템의 실제 메모리와 스왑 메모리에 대한 사용 현황 확인 가능.

✅ 옵션 종류
| -h | 자동으로 단위 조절해서 표현 |
| -b | 바이트 단위로 표현 |
| -m | 메가바이트 단위로 표현 |
| -g | 기가바이트 단위로 표현 |
| -k | 킬로바이트 단위로 표현 |
| -l | 최고/최저 메모리 상황 구분해서 표현 |
| -s N | 지정된 N초마다 출력 |
| -w | cache와 buffer를 따로 출력 |
✅ 해석
| Mem | 시스템의 물리적인 메모리에 대한 사용량 |
| Swap | 스왑이라는 특정 메모리 영역에 대한 사용량 |
| Total | 전체 메모리 용량(kbyte 단위) |
| Used | 현재 시스템에서 사용 중인 메모리 용량 |
| Free | 현재 시스템에서 사용하지 않은 메모리 용량 |
| Shared | 현재 시스템에서 공유한 메모리 용량 |
| Buff/cache | 현재 캐시 메모리에서 버퍼링된 사용량 표시 |
| Available | 쓸 수 있는 가용 메모리 용량 |
✅ 알아두면 좋은 명령어
# free | awk '/Mem/ {printf("Memory Usage: %.2f%\n", $3/$2 * 100.0)}' → 총 메모리 사용량(%) 출력하는 표현식
출력 결과 예시 : Memory Usage: 62.63%
2. top
✅ 현재 OS의 상태 확인용 명령어.
✅ 메모리 사용량, CPU 사용량 등을 나타내주며, top를 실행하는 동안에는 주기적인 업데이트로 실시간에 근접한 내용을 보여줌.
✅ 출력된 결과 상단에 위치한 요약 영역에서는 전체 프로세스가 OS에 대해서 리소스를 어느정도 차지하고 있는지를 알려줌. → 시간, 유저, 로드 에버리지(Load Average), 테스크(Tasks), CPU, 메모리(memory) 등.
✅ 요약 영역 아래에는 실시간으로 상태가 업데이트되면서 각 프로세스에 대한 상세한 내용 확인 가능.

3. df
✅ 리눅스 시스템 전체의(마운트 된) 디스크 여유 공간 확인용 명령어.
✅ 파일 시스템, 디스크 크기, 사용량, 여유 공간, 사용률, 마운트 지점 순으로 출력됨.

✅ 옵션 종류
| -a | 모든 파일 시스템 출력 |
| -h | 사람이 읽기 쉬운 형태(단위)로 출력(기본은 kbyte 단위) |
| -T | 보여주는 목록을 파일 시스템의 타입으로 제한 |
| -l | 출력하는 목록을 로컬 파일 시스템으로만 제한 |
✅ 해석
| Filesystem | 리눅스에 마운트된 파일 시스템 목록 |
| Size(1K-blocks) | 전체 용량 |
| Used | 사용량 |
| Available | 남은 용량 |
| Use% | 용량 대비 사용량에 대한 퍼센트 |
| Mounted on | 마운트된 지점(경로) |
4. du
✅ 해당 디렉토리(파일)의 디스크 크기 확인 명령어.
✅ 옵션이 없으면 현재 경로의 모든 디렉토리 크기를 MB단위로 출력함.

✅ 옵션 종류
| -h | 크기 단위 표시 추가 |
| -a | 하위 디렉토리에 포함된 파일까지 추가 → 하위디렉토리 안에 각각 용량 표시 |
| -s | 하위 디렉토리 없이 추가 → 하위 디렉토리 표시 없이 전체 용량 표시 |
💡 참고한 링크 첨부
[Rocky Linux] 15가지 리눅스 기본 명령어 정리
리눅스 명령은 옵션까지 모두 포함해서 수천 개가 넘을 정도로 많습니다. 명령을 다 외운다는 것은 거의 불가능하고 외울 필요도 없지만, 리눅스를 사용하는 데 필요한 기본 명령 15가지는 필수
www.hanbit.co.kr
16가지 리눅스 기본 명령어 정리
ls : 현재 디렉토리의 모든 파일 및 폴더를 기본 형식으로 보여준다.ls -l : 파일 및 폴더에 대한 자세한 정보와 함께 리스트업 한다.ls -a : 숨겨진 파일을 포함하여 모든 파일을 보여준다.cd는 디렉
velog.io
[Linux 명령어] df : 전체 디스크 , du : 각각 디스크 용량확인
df (disk free) 리눅스 시스템 전체의(마운트 된) 디스크 여유 공간 확인 파일시스템,디스크크기, 사용량, 여유공간, 사용률, 마운트지점 순으로 나타남 옵션 -a (all) 모든 파일 시스템 출력 -h (human)
pearlluck.tistory.com