본문 바로가기

💙 Server

🐧 자주 사용하는 리눅스(Linux) 명령어 모음

👩🏻‍💻 리눅스 서버에 직접 붙어 서버 실행 로그를 확인하거나 변경된 클래스 파일을 배포해야 하는 일이 종종 생겼다. 자주 사용되는, 개발자라면 필수로 알아두면 좋은 리눅스 명령어들을 정리해두고 숙지하려고 한다.

[목차]
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

댓글