실행 중인 프로그램
일반적인 프로세스
부모 프로세스가 먼저 종료된 상태의 프로세스, 언젠가는 좀비 프로세스가 될 수 있음
-> 통산 1번 프로세스가 부모 프로세스로 설정됨
(항상 자식 프로세스가 먼저 끝난 뒤 부모 프로세스가 종료해야 정상적)
현재 동작 중인 프로세스 확인 명령; ps [옵션]
현재 shell 상에서 실행되고 있는 프로세스 목록 출력
- PID : process ID
- TTY : 터미널 번호 (요즘은 큰 의미 X)
- TIME : 실행 지속 시간
- CMD : 명령어
현재 shell 상에서 실행되고 있는 프로세스 목록 상세 정보 출력
- UID : 프로세스를 실행한 사용자 ID
- PPID : 부모 process ID (중요시되는 요소)
- C : CPU 사용량 (%)
- STIME : 프로세스 시작 날짜 및 시간
현재 shell 상에서 진행시킨 프로세스 정보 출력 (BSD 유형 옵션)
STAT : 프로세스 상태
- R : running, 실행 중
- S : sleep, 인터럽트(interrupt)가 가능한 대기 상태
- T : 작업 제어에 의해 정지된 상태
- Z : 좀비 프로세스
- STIME : 프로세스 시작 날짜/시간
- s : 세션(일종의 작업 공간) 리턴 프로세스
- t : foreground 프로세스 그룹
- l : 멀티스레드 (multi thread)
현재 shell에서 실행시킨 프로세스 상세정보 출력 (BSD 유형 옵션)
- USER : 사용자 ID
- %CPU : CPU 사용량
- %MEM : 물리 메모리 사용량
- VSZ : 사용중인 가상 메모리 크기 (KB)
- RSS : 사용중인 물리 메모리 크기 (KB)
- START : 프로세스 시작 시간
*메모리에 관해 : 최대 4GB까지 할당 가능하나 지금 당장 다 쓴다는 의미는 X
process 내에서 동작하는 실행 흐름
파일 내용 or 결과 내용에 대한 검색 패턴; grep [옵션] <검색 패턴> <파일>
ex) grep tcp /etc/services
- <검색 패턴> 검색어, 정규표현식 사용 가능
- -n 옵션 : 행 번호 표시
- -i : 대소문자 구별 없이 모두 검색
- -l : 검색 패턴이 포함된 모든 파일명 출력
- 파이프 기능과 연계하여 많이 사용
ex) grep -in HTTP /etc/services 는 cat /etc/services | grep -ni HTTP 와도 같은 의미
pstree [옵션] : 배포판에 따라 다소 차이
불가항력, 즉 정상처리가 아닌 특수상황에서 발생하는 일
하드웨어 인터럽트 (HWI) : 하드웨어 이상에 의해 더이상 컴퓨터 시스템 운영이 어려울 때 발생
예) RAM 고장 등
소프트웨어 인터럽트 (SWI) : 소프트웨어적으로 발생하는 인터럽트
process 간 통신 방법의 한 형태
Linux kernel에 의해 프로세스에 전달되는 소프트웨어 인터럽트
시그널에 따라 해당 프로세스 동작에 영향
미리 정해진 시그널 동작을 무조건 수행
(Ctrl+C 키 입력시 동작이 미리 정의된 시그널에 대한 처리)
무시 : 해당 프로세스에서 설정
사용자 프로세스에서 시그널 처리에 대해 별도 정의하여 처리
시그널 발생 명령
kill [옵션, 시그널 번호] <프로세스 ID>
-l 옵션 : 현재 사용가능한 전체 시그널 목록 출력
2번 SIGINT
- Ctrl + C 키 입력시 발생하는 시그널
- 기본 동작은 프로세스 강제 종료
- 프로세스에서 무시 or 다른 처리 가능
9번 SIGKILL
- 무조건 프로세스 종료
- 프로세스에서 무시 불가능 (이것으로 종료하면 killed 표시)
kill -9 <프로세스 ID> : 프로세스 ID에 해당하는 프로세스 종료
전체 프로세스 실시간 실행 상태 모니터링
참조)
https://sabarada.tistory.com/146
https://koromoon.blogspot.com/2020/09/top.html
- PID : Process ID
- USER : 사용자
- PR : 우선 순위
- NI : Nice 값
- VIRT : 프로세스 사용 가상 메모리 크기
- RES : 프로세스 사용 물리 메모리 크기
- SHR : 프로세스 사용 공유 메모리 크기
- %CPU : CPU 사용량
- %MEM : 메모리 사용량
- TIME+ : CPU 누적 이용 시작
- COMMAND : 명령
- Spacebar : 내용 갱신
- k : 프로세스 종료
- n : 출력 프로세스 개수 변경
- u : 사용자에 대한 정렬
- m : 사용 메모리 크기에 따라 정렬
- P (대문자) : CPU 사용량에 따라 정렬
- q : top 종료
shell에서 명령 실행
현재 shell의 background 작업 목록 출력
= 작업순서
fg <%작업 번호> : background 작업을 foreground로 전환
bg <%작업 번호> : foreground 작업을 background로 전환
리눅스 학습 난이도가 날이 갈수록 올라가고 있다. 리눅스 초반만 해도 "에이~ 나 이거 이미 독학으로 익힌거라 껌이네ㅋㅋ" 했지만 이젠 그럴 여유가 없다. 지난주만 해도 내 복습은 그냥 블로그에 올린 강의록을 가볍게 훑어보는 정도였지만 이번엔 좀 강도를 심화시켜야 할 것 같다. 특히 1-2-4에서의 redirection이랑 오늘의 프로세스 전반, 그리고 top. 게다가 개인적으로 궁금한 gnome-terminal까지. 이번 주말엔 할 일이 정말 많아보인다. 강사님께선 주말은 쉬라고 있는 거라고, 주중에만 열심히 공부/복습하면 된다 하셨지만 다른 사람들에겐 금방 끝나는 블로그 정리가 사실 내겐 매일 수업 끝난 후 대부분의 시간을 소요하는 일이라 실질적인 다른 공부는 결국 주말에 할 수 밖에 없는 처지기도 하고.
그렇게 바쁘고 빠듯한 와중에도 스터디 팀원분들이 정말 열심히, 열정적으로 하시는 것 같아 늘 좋은 자극이 된다. 스터디 운 좋은 듯 하다.