리눅스 명령어 정리
실무에서 많이 쓰는 리눅스 명령어를 한눈에 기억할 수 있도록 정리했다.
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 사용시 내비게이션 기능을 원한다면 ?
내비게이션 (탐색)
- 스페이스 바: 다음 페이지로 이동.
- b: 이전 페이지로 이동.
- 화살표 키 (↑, ↓): 한 줄씩 위 또는 아래로 이동.
- Page Up / Page Down: 이전 페이지 또는 다음 페이지로 이동.
- G: 파일의 끝으로 이동.
- g: 파일의 시작으로 이동.
- 숫자 + G: 특정 라인으로 이동 (예: 20G는 20번째 라인으로 이동)
# less 사용시 검색 기능을 원한다면 ?
- /: 앞으로 검색 (예: /search_term).
- Enter를 누르면 다음 일치 항목으로 이동합니다.
- n: 다음 검색 결과로 이동.
- N: 이전 검색 결과로 이동.
- ?: 뒤로 검색 (예: ?search_term).
#추가 옵션
-N: 라인 번호 표시.
-S: 긴 줄을 잘라서 표시하지 않고 한 줄로 스크롤.
-X: 종료 후 화면을 지우지 않고 마지막 내용을 유지.
&: 검색 결과 필터링 (예: &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