카테고리 없음

리눅스 명령어 정리

엠케이로그 2024. 7. 28. 23:47

 

실무에서 많이 쓰는 리눅스 명령어를 한눈에 기억할 수 있도록 정리했다.

 

 1. ls 
디렉토리의 내용을 나열
- 파일 및 디렉토리 목록을 확인하는 용도로 자주 쓰임.

 

ex) ls -l
  - -l : 옵션은 파일의 상세 정보를 포함한 목록을 출력함.

2. cd
디렉토리 변경.
-  현재 작업 디렉토리를 변경.
- ex) cd /C:/user/Documents
  - 해당 디렉토리로 이동함. 

3. pwd
현재 작업 디렉토리의 경로를 출력합니다.
- 현재 디렉토리의 전체 경로를 출력함.


4. cp
파일이나 디렉토리를 복사
-> 파일이나 디렉토리를 다른 위치로 복사하는 용도 
ex) cp backup1.txt /home/user/backup/
  - backup1.txt 파일을 /home/user/backup/ 디렉토리로 복사함 (백업할 때 자주 사용함)

5. mv
파일이나 디렉토리를 이동하거나 이름을 변경합니다.
- 파일이나 디렉토리를 이동 또는 이름 변경.
ex) mv a.txt b.txt
  - a.txt 파일의 이름을 b.txt 로 변경

6. rm
파일이나 디렉토리를 삭제
- 불필요한 파일이나 디렉토리를 삭제할 때 사용 (백업 지울 때 사용)
ex) rm a.txt
 : a.txt 파일을 삭제함
  - rm -r dir1  : dir1 디렉토리와 그 안의 모든 파일 및 디렉토리를 삭제

7. mkdir
새 디렉토리를 생성
ex) mkdir new1
  - new1 라는 이름의 새 디렉토리를 생성

8. touch
빈 파일을 생성하거나 기존 파일의 최종 수정 시간을 변경

ex) touch new1.txt
  -  new1 라는 빈 파일을 생성

9. chmod
- 파일 또는 디렉토리의 접근 권한 설정.
ex) chmod 755 script.sh
  script.sh 파일의 권한을 rwxr-xr-x 로 설정

10. chown
파일이나 디렉토리의 소유자와 그룹을 변경
ex) chown user:group file1.txt
  - `file1.txt` 파일의 소유자를 `user`로, 그룹을 `group`으로 변경

11. ps
현재 실행 중인 프로세스를 확인.
ex) ps aux : 모든 사용자와 관련된 프로세스를 상세하게 보여줌.

 

- 옵션
a: 터미널에 관계없이 모든 사용자의 모든 프로세스를 나열
u:  각 프로세스에 대해 사용자, CPU 및 메모리 사용량, 시작 시간 등을 포함한 자세한 정보를 제공
x: 터미널에 종속되지 않은 모든 프로세스를 나열. 이를 통해 데몬 프로세스와 같이 터미널에 연결되지 않은 프로세스도 확인할 수 있음.

 

더보기

# 진행중인 프로세스를 확인해서, 프로세스를 킬 하는 경우에 유용하게 사용

 

(1) 실행 중인 프로세스를 확인
ps aux | grep myserver

(2) 특정 PID의 프로세스를 종료 (예: PID가 1234인 경우)
kill 1234

 

(3) 필요시 강제 종료
kill -9 1234 (일반적인 kill 명령어로 프로세스가 종료되지 않는 경우, -9 옵션을 사용하여 강제 종료할 수 있음.) 

12. top
실시간으로 시스템의 프로세스와 자원 사용 상황을 보여줌
- 시스템 자원 사용 현황 모니터링.

13. grep
파일의 내용을 검색(특정 패턴이나 문자열을 검색.)
ex) grep "TABLE" file.txt
  - `file.txt` 파일에서 "TABLE" 문자열을 검색


14. find
 파일 시스템에서 파일이나 디렉토리를 찾음.
ex) find /home -name "*.txt"
  - /home 디렉토리에서 `.txt`로 끝나는 파일을 검색

15. tar
파일을 압축하거나 압축을 해제하는 용도 (서버 용량이 너무 부족해서 압축이 진행되어야할 경우) 
tar -cvf folder.tar /home/user/
  - `/home/user/` 디렉토리를 folder.tar 파일로 압축


16. df
파일 시스템의 디스크 사용량을 확인
- df -h
  - 디스크 사용량을 출력을 보기 쉽게 출력함. 

17. du
디렉토리와 파일의 디스크 사용량을 확인
-  du -sh /home/user/
  - /home/user/ 디렉토리의 총 디스크 사용량을 요약하여 표시

 

18. tail

로그 파일의 마지막 몇 줄을 출력하여 실시간으로 로그를 모니터링하는 용도로 쓰임 (로그 파일의 끝부분을 실시간으로 모니터링) 

ex) tail -f /var/log/nginx/access.log

access.log 끝부분을 실시간으로 모니터링

 

19. less *대용량 로그 확인하는 용도로 유용 

로그 파일을 페이지 단위로 볼 수 있으며, 검색 기능을 제공
-> 큰 로그 파일을 스크롤하며 보기

less /var/log/apache2/error.log

 

더보기

# less 사용시  내비게이션 기능을 원한다면 ?  

내비게이션 (탐색)

  • 스페이스 바: 다음 페이지로 이동.
  • b: 이전 페이지로 이동.
  • 화살표 키 (↑, ↓): 한 줄씩 위 또는 아래로 이동.
  • Page Up / Page Down: 이전 페이지 또는 다음 페이지로 이동.
  • G: 파일의 끝으로 이동.
  • g: 파일의 시작으로 이동.
  • 숫자 + G: 특정 라인으로 이동 (예: 20G는 20번째 라인으로 이동)
더보기

# less 사용시  검색 기능을 원한다면 ?  

 

  • /: 앞으로 검색 (예: /search_term).
  • Enter를 누르면 다음 일치 항목으로 이동합니다.
  • n: 다음 검색 결과로 이동.
  • N: 이전 검색 결과로 이동.
  • ?: 뒤로 검색 (예: ?search_term).

 

더보기

#추가 옵션 

 

-N: 라인 번호 표시.

 

less -N filename
 

-S: 긴 줄을 잘라서 표시하지 않고 한 줄로 스크롤.

 

less -S filename

 

-X: 종료 후 화면을 지우지 않고 마지막 내용을 유지.

 
less -X filename
 
 
# 라인 번호를 표시하며 긴 줄을 잘라 표시하지 않고 한 줄로 스크롤
less -N -S /var/log/nginx/access.log
 
 
 

&: 검색 결과 필터링 (예: &search_term) 

필터링하여 검색 결과만 표시 원하는 경우, 

less access.log 쓴 후에 &search_tearm 이렇게 하면 search_term  문자열을 포함하는 라인만 표시.

 

m: 마크 설정 (예: ma는 현재 위치를 'a'로 마크).

'a: 마크로 이동 (예: 'a는 'a' 마크로 이동).

F: tail -f와 비슷한 실시간 업데이트 모드. (종료하려면 Ctrl+C 누르기) 

 
 
 
 


20. sed 

- 스트림 편집기로, 파일이나 표준 입력에서 텍스트 데이터를 처리하고 조작할 수 있음. 주로 텍스트의 검색, 치환, 삭제 등에 사용

 

sed -n 'START_LINE,END_LINEp' input.log > output.txt

 

  • START_LINE은 시작 라인 번호
  • END_LINE은 끝 라인 번호입
  • input.log는 원본 로그 파일
  • output.txt는 추출한 내용을 저장할 파일

 

ex ) sed -n '10,20p' logfile.log > extracted.txt

logfile.log의 10번 라인부터 20번 라인까지를 extracted.txt로 저장

 

21. awk

- 데이터 파일이나 텍스트 스트림에서 패턴 매칭 및 텍스트 조작을 위한 강력한 프로그래밍 언어.

: 파일의 각 행을 처리하고, 특정 필드를 추출하거나 계산하는 데 사용
: 로그 파일에서 특정 필드를 추출하거나 조건에 맞는 데이터를 필터링합니다.

 

ex) awk '{print $1, $7, $9}' /var/log/nginx/access.log
첫 번째 필드(클라이언트 IP), 일곱 번째 필드(요청 URI), 아홉 번째 필드(상태 코드)를 출력.

# 원본 파일에서 10번 라인부터 20번 라인까지 추출하여 new_file.txt에 저장 

ex) awk 'NR>=10 && NR<=20' logfile.log > new_file.txt

 

 

리눅스 명령어를 활용한 예시 정리

 

# 특정 시간대의 로그 추출

- 하루 중 특정 시간대(예: 14:00-15:00)의 로그를 추출

 

awk '$4 >= "[14/Jul/2024:14:00:00" && $4 <= [14/Jul/2024:15:00:00"' /var/log/nginx/access.log > /tmp/extracted_logs.log

 

# 추출된 로그에서 특정 요청 빈도 분석

cat /tmp/extracted_logs.log | awk '{print $7}' | sort | uniq -c | sort -nr > /tmp/request_frequency.log

 

각 요청 URI를 추출하고, 빈도수를 계산하여 내림차순으로 정렬

 

# 결과를 요약하여 보고서 작성

echo "Request Frequency Report for 14:00-15:00 on 14-Jul-2024" > /tmp/report.log
cat /tmp/request_frequency.log >> /tmp/report.log