monitoring

minseok·2024년 12월 6일
post-thumbnail

top

  • 프로세스 관리 유틸리티
  • 실시간으로 프로세스를 출력 (3초)

실제 결과로 알아보기

💬 상단 통계

top - 02:59:09[시스템 타임] up 2:13[러닝 시간], 1 user[유저 세션 수], load average: 0.07, 0.06, 0.0[각 1, 5, 15분 전]

Tasks: 131 total, 1 running, 130 sleeping, 0 stopped, 0 zombie [프로세스 상태별 수]
%Cpu(s): 0.4 us[유저], 0.3 sy[시스템], 0.0 ni[nice], 99.3 id[idle], 0.0 wa[wait], 0.0 hi[하드웨어 인터럽션], 0.0 si[소프트웨어 인터럽션], 0.0 st[스틸 타임]

MiB Mem : 3794.1 total, 2545.4 free, 814.5 used, 500.1 buff/cache [메모리]
MiB Swap: 488.0 total, 488.0 free, 0.0 used. 2979.6 avail Mem [스왑 메모리]



💬 하단 프로세스 목록

PID : Process ID
USER : 프로세스 오너 (시작한 유저)
PR(Priority) : 실제 우선순위 값 (사용자 조작 불가)
NI(Nice) : 우선 순위 값(-20 ~ 19), 작을수록 높은 순위이며 우선 순위 영향을 줌 (사용자 조작 가능 <- 낮은 순위로)
VIRT(virtual memory) : 가상 메모리 사용량, SWAP + RES
RES(resident set size) : 물리 메모리 사용량, CODE + DATA
SHR(shared memory) : 다른 프로세스와 공유하는 메모리 사용량 (ex. library)
S(status) : Sleeping, Running, W(swapped out process), Z(zombies)
%CPU : 프로세스 사용 CPU
%MEM : 프로세스 사용 메모리
TIME+ : 프로세스 시작된 이후 경과 시간
COMMAND : 실행 명령어

💬 숏컷

u : root owner의 process만 출력
P : CPU 기준 정렬 출력
M : Memory 기준 정렬 출력
T : Time 기준 정렬 출력
f : 보고싶은 컬럼 필터링


ps

  • ps(process status)
  • 어떤 프로세스가 올라가있는지 확인한다.
  • ps aux : 모든 프로세스의 스냅샷

💬 프로세스 목록
USER : 프로세스 오너
PID : ProcessID
%CPU : 프로세스 사용 CPU
%MEM : 프로세스 사용 메모리
VSZ : 가상 메모리 사이즈
RSS : 물리 메모리 사이즈 (스왑이 안된)
STAT : S(sleeping), R(running), Z(zombie), s(session reader, 리눅스 시작할 때 같이 시작), +(foreground, input을 받을 수 있음)

💬 ps aux? -ef?

둘 다 많이 사용되는 커맨드이다. aux의 경우 cpu, memory 사용량도 함께 출력해주는 차이가 있다. 자세한 내용은 ps manual에서 확인할 수 있다.

https://man7.org/linux/man-pages/man1/ps.1.html


inode

  • index node
  • unix like file system
  • 파일, 디렉토리의 메타 데이터를 저장하는 장소
  • inode table은 한계가 있다.
  • hard link는 original file과 동일한 inode를 참조한다.
  • 동일 inode를 참조한다면 한 쪽에서 값을 수정하면 다른 링크나 파일에서 변경된 값을 확인할 수 있다.
  • original file을 지우더라도 inode가 살아있기 때문에 hard link에서 계속해서 값을 참조할 수 있다.
  • 동일 파일 시스템에 존재해야함
  • 심링크는 inode가 아닌 original file을 참조한다.
  • original file이 사라진다면 심링크도 더이상 참조할 수 없다.
  • 다른 파일 시스템에서도 사용가능 함
  • 또다른 inode를 생성

💬 예시

파일을 생성하면 IUsed(사용중인 inode)의 값이 1 추가되었다.

[guest1@localhost ~]$ df -i
Filesystem      Inodes  IUsed   IFree IUse% Mounted on
/dev/root      3843968 543392 3300576   15% /
...
[guest1@localhost ~]$ touch replica2.txt
[guest1@localhost ~]$ df -i
Filesystem      Inodes  IUsed   IFree IUse% Mounted on
/dev/root      3843968 543393 3300575   15% /
...

hard link를 사용하는 경우 IUsed값이 그대로 인것을 볼 수 있다.

[guest1@localhost ~]$ df -i
Filesystem      Inodes  IUsed   IFree IUse% Mounted on
/dev/root      3843968 543393 3300575   15% /
...
[guest1@localhost ~]$ ln replica2.txt hard.txt
[guest1@localhost ~]$ df -i
Filesystem      Inodes  IUsed   IFree IUse% Mounted on
/dev/root      3843968 543393 3300575   15% /
...

아래처럼 심링크를 만드는 경우에는 iNode의 값이 1 추가된다.

[guest1@localhost ~]$ df -i
Filesystem      Inodes  IUsed   IFree IUse% Mounted on
/dev/root      3843968 543393 3300575   15% /
...
[guest1@localhost ~]$ ln -s head.txt
[guest1@localhost ~]$ df -i
Filesystem      Inodes  IUsed   IFree IUse% Mounted on
/dev/root      3843968 543394 3300574   15% /
...





Signal

  • inter-process communication(IPC)
  • 프로세스간 의사 소통을 위해 사용

💬 주요한 signal 목록

  • SIGKILL (9) : kill signal, 프로세스 종료, 프로그램에서 catch 불가능(로직 처리 x)
  • SGITERM (15) : terminate signal, 프로세스 종료의 일반적인 방법, 프로그램에서 catch가 가능(로직 처리)
  • SIGINT (2) : interrupt signal, [ctrl + c], 프로그램에서 catch가 가능(로직 처리)

Wildcards

  • 파일 이름을 찾을 때 활용된다.

*(asterisk) : *.txt <- .txt를 postfix로 가지는 파일 선택 / ex) eatf.txt
?(question) : ?.txt <- ? 1개를 모든 문자 종류가 포함된 1개의 파일 선택(?) / ex) a.txt, b.txt
[](square brackets) : file[123].txt, file[1-3].txt <- 브라켓 내의 문자가 포함된 아무 파일이나 선택 / ex) file1.txt, file2.txt, ...
^(caret)or!(exclamation mark) : file[!123].txt <- 반대 방향으로 사용 / ex) file6.txt, file0.txt

💬 예시
ls .txt <- .txt를 postfix로 가지는 모든 파일 찾기
rm temp
.log <- temp를 prefix .log를 postfix로 가지는 모든 파일 제거





du(disk usage)

  • 디렉토리나 파일의 디스크 사용량 확인

💬 예시

home 디렉토리의 사용자별 사용중인 공간을 찾아본다.
3개의 사용자 디렉토리가 있다. du -h /home로 사용중인 용량을 찾으면 /home 디렉토리 내부의 모든 파일, 디렉토리의 용량을 다 찾는다.

[guest1@localhost home]$ ls
guest1  guest4  rocky

du -h --max-depth=1 /home으로 검색하면 사용자 디렉토리별로 차지하는 용량만 찾을 수 있다.

df(disk free)

  • 전체 디스크 사용량을 알 수 있다.
  • 파일 시스템별로 마운트된 디스크 전체 크기, 사용중인 공간, 마운트 위치, ...를 알 수 있음





apt(advanced package tool)

  • 리눅스 패키지 매니저
  • 구성요소(component)
    1 Repositories : 중앙화 저장소, 설정 파일 - /etc/apt/sources.list (직접 추가한 repo -> /etc/apt/sources.list.d)
    2 Packages : 설치 패키지
    3 Dependencies : 의존성

💬 os별 패키지 매니저

  • Debian & Ubuntu : apt
  • Redhet : yum, dnf
  • Arch : pacman





uptime

  • 마지막 재부팅된 시간부터 얼마나 시간이 흘렀는지
profile
즐겁게 개발하기

0개의 댓글