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 명령어를 사용하여 강제종료해보자.
- 약간의 반복작업을 필요로 하지만, 깔끔하게 종료된 것을 확인할 수 있다.
'컴퓨터공학기초 개념 > 시스템 프로그래밍' 카테고리의 다른 글
12. shell - 리눅스 파일 시스템 탐색 (0) | 2021.09.10 |
---|---|
11. shell - 리눅스 파일 시스템 (0) | 2021.09.09 |
9. shell - foreground & background 프로세스 (0) | 2021.09.09 |
8. shell - 리다이렉트와 파이프 (0) | 2021.09.07 |
7. shell - 파일 권한 및 관리(2) (0) | 2021.09.07 |
댓글