전공/리눅스

리눅스 프로세스

vss121 2023. 1. 12. 11:46

프로세스

- 현재 시스템에서 메모리에 올라가 실행 중인 프로그램

- 여러 개의 프로세스 동시에 실행 (다중 프로세스 시스템)

- 모든 프로세스는 부모-자식 관계

- 부모 프로세스는 자식 프로세스를 생성(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 %작업번호 백그라운드 작업 종료

 

 

 

 

 
 

'전공 > 리눅스' 카테고리의 다른 글

리눅스 디스크  (0) 2023.01.12
바이너리 핸들링 + 라이선스  (0) 2023.01.12
리눅스 git  (0) 2023.01.12
리눅스 명령어  (0) 2023.01.11
리눅스 파일 속성  (0) 2023.01.10