본문 바로가기
컴퓨터공학기초 개념/시스템 프로그래밍

10. shell - 프로세스 관리 및 제어

by devraphy 2021. 9. 9.

1. process 제어 명령어

- foreground process를 사용하면, 어떤 프로그램을 수행하는 중에는 다른 작업을 할 수 없다. 

- 만약 다른 작업을 해야한다면, 프로세스를 아예 종료하거나 잠시 중단시킬 수는 있을까?

 

a) control + z

(커맨드 입력 방식은 환경에 따라 다를 수 있으니, 참고하기를 바랍니다.)

- 컨트롤 + z는 foreground에서 실행중인 프로세스를 잠시 멈추는 커맨드다.

- 앞에 있는 숫자 1을 Job이라고 한다.

 

▶ Job

   - background process의 작업번호 

 

- 여기서 알 수 있는 것은 foreground process가 background process로 넘어갔다는 점이다. 

- 진행중이던 프로그램을 멈추기 위해, 그동안의 수행기록을 지우는 것이 아니라 잠시 저장해 놓기 위해서다.

- 그래야 재시작할 때 멈추었던 부분부터 다시 수행해나갈 수 있기 때문이다. 

 

 

b) 중단된 프로세스 재시작하기 

- 중단된 프로세스를 재시작하려면 Jobs 명령어와 bg명령어를 알아야 한다. 

 

▶ jobs 명령어 

   - ls 명령어처럼 background에서 실행되는 process 리스트를 출력하는 명령어다. 

 - 이렇게 jobs를 통해, 방금 중단시켰던 loop프로그램이 background process에 할당되어 있는 것을 알 수 있다. 

 

 

▶ bg 명령어

  - 가장 마지막에 중단된 background 프로세스를 재시작 시키는 명령어 

 

▶ bg 숫자

- 만약 2번 프로세스를 재시작시키고 싶다면 어떻게 할까?

- 다음 사진을 참고하자.

 

- 2번 job이 running 상태로 변한 것을 확인할 수 있다.

- 이처럼 bg와 재시작을 원하는 background process의 번호를 입력하면 된다.

 

 

c) contorl + c 

- 컨트롤 + c는 현재 실행중인 foreground process를 종료하는 커맨드다. 

- 운영체제가 인터럽트를 발생시켜 해당 프로세스에게 보내지고 프로세스 제어를 통해 종료되는 과정을 거친다. 

 

 

d) ps - 프로세스 상태확인 명령어

- 터미널에 ps 명령어를 입력하면 다음과 같이 보인다.

- 실제로 돌아가고 있는 프로세스는 이보다 더 많을 텐데, 왜 이거밖에 보이지 않을까? 

- 모든 프로세스를 보고싶다면 옵션을 부여하여 확인할 수 있다. 

▶ daemon process

   - 여기서 daemon은 악마의 데몬이 맞다.

   - 사용자 모르게 시스템에의해 실행되는 프로세스를 가리키는 명칭으로,

   - 시스템이 부팅될 때 자동실행되는 프로세스를 의미한다. 

 

▶ ps -aux

   - 일반적으로 ps 명령어를 사용할 때, aux 옵션을 한번에 같이 쓴다. 

   - 다음 사진을 통해 실제 실행결과를 살펴보자. 

- 위의 사진처럼, 실제로는 정말 다양한 프로세스가 실행되고 있다는 것을 확인할 수 있다. 

 

 

e) kill - 프로세스 강제 종료 

- 실행중인 프로세스 중 하나를 강제종료 하고 싶을 때 사용하는 명령어다. 

- 다음과 같이 작성할 수 있다. 

kill -9 pid
# -9 옵션: 강제 종료를 명시 
# pid: process id

- grep 명령어를 사용하여 loop라는 문자열을 포함하는 프로세스를 검색한다. 

- 소유자가 ubuntu인 loop 프로세스가 위에서 실습하면서 실행한 프로세스다.  

- 이 loop 프로세스를 kill 명령어를 사용하여 강제종료해보자. 

 

- 약간의 반복작업을 필요로 하지만, 깔끔하게 종료된 것을 확인할 수 있다. 

댓글