출처: 따라하면서 배우는 it - 유튜브👍
프로세스란? : 실행된 프로그램. 실행 파일.
*프로세스 : 어떤 결과를 위해 프로그램을 실행하는 것을 의미.
포 그라운드
) : 인터넷, 카카오톡, 메모장, 그림판 등백그라운드
): 백신 프로그램, 그래픽 드라이버, 마이크 드라이버 등 눈에 보이지 않는 프로그램 실행 중인 상태로 메모리 위에 올라가 있는 것
을 프로세스라고 한다. PID
: 프로세스의 ID값, 숫자값. 운영체제가 프로세스를 구분할 때, 숫자로만 구분을 한다.1. 부모 프로세스
- 다른 프로세스를 생성할 수 있는 프로세스
- ex) 크롬 중에서 하나가 부모 프로세스인데, 그걸 닫으면 탭 전체가 다 닫힌다. 2. 자식 프로세스
- 부모 프로세스로부터 만들어지는 프로세스
- (누군가에 의해 실행이 되어지는)
- 정상적으로) 자식 프로세스 종료 후 부모프로세스 종료
3. 데몬 프로세스
Windows의 서비스
(백 그라운드로 동작하는)'와 같은 존재d
: ex) tftpd, httpd(아파치 웹 서버) 4. 고아 프로세스
일반적으로 자식프로세스는 종료되면 부모 프로세스로 되돌아 가는데,
부모 프로세스가 먼저 종료된 경우에 자식 프로세스를 고아 프로세스라고 한다.
고아 프로세스는 init 프로세스가 처리해준다. (리눅스에서 최고 조상. 거의 사라짐, systemd로 넘어감)
5. 좀비 프로세스
윈도우의 작업 관리자와 비슷한 ps 명령어
ps
만 실행하게 되면, 현재 사용자(로그인한 사용자)가 실행한 프로세스만 보인다. 그래서 목록에 ps도 나옴. -ef
옵션을 통해 내용을 좀 더 자세하게, 내가 실행하지 않은 운영체제가 자동으로 실행했다거나 하는 프로세스까지도 전부 보여줌.
/ust/lib/systemd/s...(잘림)
: 프로세스의 조상님. PID가 1. 부팅이 되면 첫 번째로 실행이 됨.
옵션 | -- |
---|---|
-e | 시스템 상의 모든 프로세스 정보를 출력 |
-f | 상세한 정보 출력 |
일반적으로 ps -ef 명령어를 많이 사용한다. ps -ef 명령어의 결과는 다음과 같이 나온다. | |
UID | 프로세스 소유자 ID |
PID | 프로세스 ID (Process Identification Number) |
PPID | 부모 프로세스 ID Parents Process Identification Number |
C | 스케줄링을 위한 CPU 사용량, 별로 의미 없는 필드 |
STIME | 프로세스 시작 시간 |
TTY | 장치 번호(? :: 터미널에서 실행된 프로세스가 아닌 것들) |
TIME | 프로세스에 대한 누적 실행 시간 |
CMD | 명령 옵션 + 아규먼트(Argument) |
pstree
: 부모자식 관계를 트리형식, 족보?처럼 해주는 명령어ps -ef | grep bash
pgrep bash
: pid만 한 번에 확인할 수 있다.
top 명령어 프로세스 목록 조회, 윈도우의 작업관리자처럼 CPU/메모리 사용량을 같이 표시해줌.
프로세스를 제어할 때 사용하는 시그널 번호
시그널 번호 | 설명 |
---|---|
1 | - SIGH UP(Sig Hang Up) - 프로세스 종료 없이 프로그램을 새로 초기화 |
2 | - SIGINT -Interrupt - Ctrl + C 명령어 실행 중 중단 명령어 |
9 | - SIGKILL - kill - 무시할 수 없는 종료(Strongest) |
15 | -SIGTERM - terminate - 무시할 수 있는 종료 |
프로세스에게 시그널 번호를 전송하는 Kill, pkill 명령어
kill
또는 pkill
명령어는 프로세스에게 시그널 번호를 전달할 때 사용하는 명령어 명령어 | 설명 |
---|---|
kill | PID로 프로세스를 제어 |
pkill | 프로세스 이름으로 제어 :: 이름에 해당하는 프로세스 모두 down 가능 |
- 프로세스 확인해보기
- 윈도우의 작업관리자처럼 현재 시스템에서 실행중인 프로세스 확인해보기
- 프로세스 제어해보기
- 특정 프로세스를 시그널 번호를 이용해서 제어해보기
sleep 초옵션
+ &
하면, 백그라운드로 실행ps -ef
로 보통 사용. q
종료시킬 때 kill -9 54584
확인할 때는 ps -ef | grep pid명
pkill 로 죽일 때는 프로세스명으로.
프로세스는 계속해서 여러 가지 프로그램을 다뤄볼 것이기 때문에, 잘못되면 종료할 줄 알아야 한다.