프로세스
- 현재 시스템에서 메모리에 올라가 실행 중인 프로그램
- 여러 개의 프로세스 동시에 실행 (다중 프로세스 시스템)
- 모든 프로세스는 부모-자식 관계
- 부모 프로세스는 자식 프로세스를 생성(fork()), 자식 프로세스는 부모 프로세스로 종료/복귀
- 자식 프로세스는 또 다른 자식 프로세스 생성
프로세스 번호
- PID(Process Identification Number)
- PID는 1~, 하나씩 증가
- 부팅될 때 systemd(PID 1) (모든 시스템 프로세스의 부모 프로세스), kthredd(PID 2) (모든 커널스레드의 부모 프로세스)실행
systemd(일반 프로그램, /sbin/init, PID 1, PPID 0) 와 kthredd(리눅스 커널 관련 프로세스, PID 2, PPID 0) 는 최상위 프로세스(부모 프로세스가 X)
일반 프로세스
데몬 프로세스 : 항상 백그라운드로 실행, 서비스
고아 프로세스 : 1번 프로세스가 새로운 부모 프로세스가 되어 종료할 수 O
좀비 프로세스 : 자식 프로세스 실행 종료해도 프로세스 테이블에 남아 있는 경우, 부모P가 자식P 종료 정보 정상 처리X
프로세스 관리 명령
ps : 현재 실행 중인 프로세스 목록 보기
-f : 상세 정보 출력
-e : 모든 프로세스 정보 출력
-u <uid> : 특정 사용자의
-p <pid>
ps -ef <-> ps aux
ps -ef | grep sshd
pgrep : 특정 프로세스 실행 중인지 확인
pgrep -x bash : 패턴과 일치하는 PID 출력
pgrep -l bash : PID와 프로세스 이름 출력
pgrep -u root sshd
kill : 지정한 시그널을 프로세스에 보냄
kill [-시그널] PID
시그널 :
- 9 : 프로세스 강제 종료
- 15 : default
ps -fp $(pgrep -x man) :man 프로세스의 PID 알아낼 떄
kill -9 4867
pkill은 PID가 아닌 명령이름으로 종료
pkill man
top : 현재 실행 중인 프로세스 정보를 주기적으로 출력
- 시스템 감시
프로세스 작업 제어
- 포그라운드 작업
- 작업 완료까지 기다림
sleep 100
- 백그라운드 작업 &
- 여러 개 가능
sleep 100 &
- 출력 방향 전환
- 작업 전환
jobs : 백그라운드 작업 목록 출력
jobs [%작업번호(1,2,..) ]
ctrl z 또는 stop %작업번호 | ①포그라운드 작업 일시 정지 |
bg %작업번호 | ②백그라운드 작업으로 전환 |
fg %작업번호 | 포그라운드 작업으로 전환 |
- 작업 종료
ctrl c | 포그라운드 작업 종료 |
kill %작업번호 | 백그라운드 작업 종료 |