[Linux] 10. 프로세스와 잡
이 글은 '모두의 리눅스'라는 책을 읽고 공부한 내용을 정리한 것입니다. 적는 과정에서 책과 조금 순서가 다르거나 틀린 내용이 있을 수 있으니 읽으실 때 주의 부탁드립니다.
1. 프로세스란?
메모리 위에 올린 프로그램을 프로세스라고 한다. 같은 프로그램을 실행한다고 해도 각 프로세스는 별도의 메모리 영역을 가진다. 리눅스 커널은 각각의 프로세스에 프로세스 ID 라는 고유한 번호를 할당해서 관리한다.
1) 프로세스 목록 표시 : ps
ps 명령어는 현재 시스템에서 실행 중인 프로세스의 목록을 출력한다. 아무런 인자 없이 ps를 사용하면 현재 접속한 터미널에서 실행한 프로세스만을 출력한다.
PID는 프로세스 ID를 입력하며, CMD는 command를 의미한다. 프로세스ID는 프로세스가 종료되기 전까지 바뀌지 않는다.
프로세스 옵션 종류는 아래와 같다.
- x : 사용자의 프로세스를 출력
- us : 사용자의 프로세스를 상세하게 출력
- ax : 모든 사용자의 프로세스를 출력
- aux : 모든 사용자의 프로세스를 상세하게 출력
- auxww : aux 옵션의 출력결과를 화면에 잘리지 않도록 출력
2) 프로세스 종료
kill <process ID>
kill 프로세스ID를 하면 프로세스를 종료시킬 수 있다.
2. 잡
셸에서 바라본 기본 처리 단위를 잡이라고 한다. 프로세스와는 다르게 잡이 셸 별로 관리가 되기 때문에 터미널 에뮬레이터 터를 여러개 사용하면 중복된 번호가 할당될 수도 있다. 잡을 일시정지하거나 백그라운드에서 실행시켜 여러 작업을 병행시켜 효율적으로 사용할 수 있다.
1) 명령어 일시정지하는 방법 : ctrl + z
ctrl + z를 누르면 실행하고 있던 명령이 잠시 중단된다. 셸에서는 종료된 것 처럼 보이지만, 실제로는 정지된 상태로 대기하고 있다. 이때 jobs 명령어를 이용해 실행 or 중단된 잡들을 확인할 수 있다.
프로세스 ID 까지 출력하고 싶으면 -l 조건을 부여하면 된다.
2) 잡을 포그라운드(foreground)로 전환하는 방법 : fg
사용자의 입력을 받아들일 수 있는 상태가 되기 위해서는 포그라운드로 돌려야한다.
fg %<job number>
만약 바로 위 예시(사진 참고) 에서 man bash를 포그라운드로 보내고 싶으면 fg %1이라고 입력하면 된다.
3) 잡을 백그라운드(background)로 전환하는 방법 : bg
사용자가 조작할 수 는 없지만 실행되고 있는 상태로 만들기 위해서는 bg 명령어를 사용하면 된다. 사용방법은 fg와 같지만, 사용자가 조작할 수 없다는 것이 특징이다.
이때, 처음부터 백그라운드를 실행하는 방법도 있다.
<command> &
명령어 뒤에 &를 붙이면 번거롭게 정지한 뒤 .bg 명령어를 입력하는 과정을 생략해도 된다.
4) 잡 종료
ctrl + c를 입력하면 잡을 종료하도록 설계되어 있다. 백그라운드에서 실행되고 있다면 kill %<job number>를 입력하면 된다.
+) 사실 kill은 프로세스 종료 명령어가 아니라 시그널을 전송하는 명령어이다. 이때 시그널은 고유번호가 있고 아무 것도 지정하지 않으면 TERM(terminate, 종료) 시그널이 지정된다.
'Linux' 카테고리의 다른 글
[Linux] 12. 텍스트 처리 (0) | 2022.08.24 |
---|---|
[Linux] 11. 표준 입출력과 파이프라인 (0) | 2022.08.24 |
[Linux] 9. 퍼미션과 슈퍼 사용자 (0) | 2022.08.22 |
[Linux] 8.배시 설정 (0) | 2022.08.14 |
[Linux] 7. 텍스트 에디터 (0) | 2022.08.13 |